Java & Oracle

JSTL, 메일 보내기, 파일 업로드

AlreadyNo 2014. 6. 27. 18:13


0627.zip


파일관리프로젝트.zip



1. JSTL ?

  1) JSP Standard Tag Library

  2) 표준화된 태그 라이브러리를 제공함으로써 보다 편리하고 표준에 맞게 웹 프로그램을 개발할 수 있기 위함.

  3) JSTL 1.2.x 는 Serlvet 2.5 이상, JSP 2.1 이상

     JSTL 1.1.x 는 Servlet 2.4 이상, JSP 2.0 이상에서 지원


2. Homepage

  1) JSTL 1.2.x

     https://jstl.java.net/ 

  2) JSTL 1.1.x

    - http://tomcat.apache.org/taglibs/standard/ 


3. Download

  1) JSTL 1.2.x

    - https://jstl.java.net/download.html

    - JSTL API : javax.servlet.jsp.jstl-api-1.2.1.jar

    - JSTL Implementation : javax.servlet.jsp.jstl-1.2.1.jar

    - Copy to /WEB-INF/lib


  2) JSTL 1.1.x

    - http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

    - jakarta-taglibs-standard-1.1.2.zip

    - Unzip

    - /lib/jstl.jar, /lib/standard.jar

    - copy to /WEB-INF/lib


4. JSTL 에서 제공하는 Tag 종류

  1) Core : http://java.sun.com/jsp/jstl/core  : c

  2) XML Processing : http://java.sun.com/jsp/jstl/xml  : x

  3) I18N capable formatting : http://java.sun.com/jsp/jstl/fmt : fmt

  4) SQL : http://java.sun.com/jsp/jstl/sql : sql

  5) Functions : http://java.sun.com/jsp/jstl/functions : fn


5. Reference Sites

  - java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html

    --> http://docs.oracle.com/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/index.html


  - http://docs.oracle.com/javaee/6/tutorial/doc/ 


6. Core Tag

  1) JSP 에서 가장 필요하고 핵심적인 기본적인 기능들을 모아 놓은 라이브러리

  2) <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

  3) Tags

  4) <c:catch />

    - 예외 처리를 위한 태그

    - Syntax

       <c:catch var="변수명" />

    - 예외가 발생하면 var 에 지정된 변수에 예외 객체를 할당


  5) <c:out />

    - JSTL 에서 지정된 값을 출력하는 태그

    - Syntax

      <c:out value="출력값" default="기본값" escapeXml = "true | false" />

    - value : 변수의 내용값

    - default 속성은 기본 값을 의미하는데,  value 의 값이 null일 경우 사용

    - escapeXml 는 기본인 true 이고 따라서 true 이면 < &lt;, > &gt; 으로 변환되고,

           false로 설정하면 <, > 등 특수기호를 처리할 때 사용


  6) <c:set />

    -지정된 변수에 값을 설정

    - Syntax

      <c:set var="변수명" value="설정값" target="객체" property="값" scope="범위" />

    - var는 값을 저장할 변수의 이름

    - value 저장할 값

    - target 값을 설정할 프라퍼티를 갖고 있는 객체(JavaBean, Map)을 의미

    - property 값을 설정할 객체의 프라퍼티

    - scope : application | session | request | page


 7) <c:if>

   - 조건 처리할 때 사용되는 태그

   - <c:if test="조건" var="변수명" scope="범위" />

   - test : 조건을 지정

   - var : 조건 처리한 결과를 저장할 변수


  8) <c:choose>, <c:when>, <c:otherwise>

   - 조건 처리할 때 사용하는 태그, switch ~ case 와 같다.

   <c:choose>

<c:when test="조건"></c:when>

<c:when test="조건"></c:when>

<c:when test="조건"></c:when>

<c:otherwise></c:otherwise>

   </c:choose>


  9)<c:forEach />

   - 반복 처리할 때 사용, Java의 for 와 같다.

   <c:forEach items="객체명" begin="시작" end="끝" step="증감식" var="변수명" varStatus="상태변수명" />

   - items 반복할 속성을 갖고 있는 컬렉션이나 배열형태의 객체

   - begin 과 end 만큼 반복

   - step 증감식 설정

   - var 반복할 때 반복하고 값을 저장할 변수

   - varStatus 반복의 상태를 갖는 변수


  10) <c:forTokens>

   - Java 의 for문과 StringTokenizer 객체를 결합한 것

   - <c:forTokens items="객체명" delims = "구분자" begin="시작인덱스" end ="끝 인덱스"

              step ="증감식" var="변수명" varStatus="상태변수" />


  11) <c:import >

   - 지정된 URL 이 포함된 JSP 페이지를 출력할 때 사용하는 태그

   - <jsp:include > 동일

   <c:import url="URL 값" var="변수명" scope="범위" varReader="입력스트림명" 

       charEncoding="인코딩값" context="contextName" />

   - url 은 HTTP, FTP 외부 리소스


  12) <c:redirect>





----

http://tomcat.apache.org/ 접속. 왼쪽 Taglibs 누르고.

JSTL1.1 줄의 download 클릭. binaries 클릭.  jakarta-taglibs-standard-1.1.2.zip 다운.

3.Dwonload에 써주고 

http://search.maven.org/#browse|707331597 에서 javax.servlet.jsp.jstl-api-1.2.1.jar 다운.

http://search.maven.org/#browse|-1002239620에서 javax.servlet.jsp.jstl-1.2.1.jar 다운.

프로젝트의 lib폴더에 jar파일 두개를 넣어두고.

----

catchdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 


<c:catch var="err">   

<%= 10 / 0  %>

</c:catch>


<h3>Error Message : <c:out value="${err}" /></h3>

출력:

Error Message : java.lang.ArithmeticException: / by zero

기본적인 사용법으로 prefix와 uri는 저렇게 셋팅하고 시작함.

------------------------

jstldemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:forEach begin="1" end="10">

<h3>Hello, World</h3>

</c:forEach>

출력:

Hello, World 를 10번 반복적으로 찍어줌.

for문을 위처럼 써줘서 사용.

------------------

outdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<jsp:directive.page import="java.io.FileReader" />    

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 


<c:catch var="err">

<%

FileReader reader = null;

String path = request.getParameter("path");

reader = new FileReader(getServletContext().getRealPath(path));

%>

<pre>

Source Code path : <%=path %>

<c:out value="<%=reader %>" escapeXml="true"></c:out>

</pre>

</c:catch>

<h4>Error Message : <c:out value="${err}" /></h4>

출력:

Error Message : java.lang.NullPointerException

-------------

outdemo1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 


<c:out value="<font size='7'>큰 글씨</font>는 다음과 같이 출력합니다." /><br /><br />

<c:out value="<font size='7'>큰 글씨</font>는 다음과 같이 출력합니다." 

    escapeXml = "false" />

여기서 escapeXml 을 false로하면 tag는 먹히는 것이고, 기본은 true로 escapeXml을 써주지 않으면 먹히지 않는다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

setdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 


<c:set var="browser" value="${header['user-agent']}" />

삭제 전

   <c:out value="${browser}" /><br /><br />

   <c:remove var="browser" />

삭제 후

   <c:out value="${browser}" />

출력:

삭제 전 Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36

삭제 후

remove를 이용해 browser의 이름을 가진 것을 삭제해줌.

-----------------

setdemo1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:set var="num1" value="${20}" />

<c:set var="num2">

10.5

</c:set>


num1 : ${num1} <br />

num2 : ${num2} <br />

num1 + num2 = ${num1 + num2}

출력:

num1 : 20 

num2 : 10.5 

num1 + num2 = 30.5

변수에 값을 할당하는 방법.

-------------------------

setdemo2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<jsp:directive.page import="java.util.Date" />

<jsp:directive.page import="java.util.HashMap" />    


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:set var="today" value="<%=new Date() %>" />

Today is ${today}<br />

<%-- 

<jsp:useBean id="today" class="java.util.Date" />

--%>


<c:set var="map" value="<%=new HashMap() %>" />

     <c:set target="${map}"  property="irum" value="조성모" />

귀하의 이름은 ${map["irum"]} 이군요.     

     <%-- 

     <%

      HashMap<String, String> map = new HashMap<String, String>();

        map.put("irum", "조성모");

        out.println(map.get(irum));

     %>

     --%>

출력:

Today is Fri Jun 27 11:48:44 KST 2014

귀하의 이름은 조성모 이군요.

시간과 이름 출력.

-------------------------------

setdemo3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<jsp:useBean id="myBean" class="com.javasoft.libs.LoginBean" />

<c:set target="${myBean}" property="userid" value="javaexpert" />

<c:set target="${myBean}" property="passwd" value="123456" />


User ID : ${myBean.userid }<br />

Password : <c:out value="${myBean.passwd}" /> 


<%-- 

<jsp:setProperty name="myBean" property="userid" value="javaexpert" />

<jsp:setProperty name="myBean" property="passwd" value="123456" />


User ID : <%=myBean.getUserid()  %><br />

Password : <jsp:getProperty name="myBean" property="passwd" />

--%>


com.javasoft.libs패키지의 LoginBean.java

package com.javasoft.libs;


public class LoginBean {

private String userid;  //property

private String passwd;

public String getUserid() {

return userid;

}

public void setUserid(String userid) {

this.userid = userid;

}

public String getPasswd() {

return passwd;

}

public void setPasswd(String passwd) {

this.passwd = passwd;

}

}

출력:

User ID : javaexpert

Password : 123456

--------------------

setdemo4.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:set var="CODE" value="80012" scope="request" />

<c:set var="NAME" value="Pencil" scope="request" />

<c:set var="PRICE" value="1000" scope="request" />

<jsp:forward page="setdemo5.jsp" />


setdemo5.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h3>Product Information</h3>

상품코드 :${CODE} <br />

상품이름 :${NAME} <br /> 

상품단가 :${PRICE} <br />

</body>

</html>

출력:

Product Information


상품코드 :80012 

상품이름 :Pencil 

상품단가 :1000 

웹브라우저는 setdemo4.jsp를 실행시킨것이나 내용은 setdemo5.jsp를 출력한다. forward 시켰기 떄문에.

--------------------

if문

ifdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:if test="true">

무조건 출력한다.

</c:if>

<br />


<c:if test="${5 < 10}">

<h3>5가 10보다 작다</h3>

</c:if><br />

<c:if test="${6 + 3 == 9}" >

   <H3>6더하기 3은 9이다.</H3>

</c:if>


<c:if test="${param.name eq 'code'}">

name 값은 ${param.name} 입니다.

</c:if><br />


<c:if test="${!empty param.name }">

Name : ${param.name}

</c:if><br />


<c:if test="${param.age > 18 }">

귀하는 성년입니다.

</c:if>

출력:

무조건 출력한다. 

5가 10보다 작다

6더하기 3은 9이다.

브라우저에 추가로 ?name=code&age=20 을 써줘야 참을 만족하기 때문에 다음을 출력한다.

name 값은 code 입니다. 

Name : code 

귀하는 성년입니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

조건문

choosedemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:choose>

<c:when test="${param.season eq 'spring' }">

<c:out value="개나리, 진달래" />

</c:when>

<c:when test="${param.season eq 'summer' }">

<c:out value="장미, 아카시아" />

</c:when>

<c:when test="${param.season eq 'fall' }">

<c:out value="코스모스, 백합" />

</c:when>

<c:otherwise>

<c:out value="동백, 매화" />

</c:otherwise>

</c:choose>

출력: 그냥 실행하면 출력은 아래와같다. 아무값도 안줬기 때문에

동백, 매화 

-----------------------

반복문

foreachdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:forEach var="i" begin="1" end="10" step="2">

${i} &nbsp;&nbsp;&nbsp;

</c:forEach><br />


<h1>1부터 100까지의 합</h1>

<c:set var="sum" value="0" />

<c:forEach var="j" begin="1" end="100">

<c:set var="sum" value="${sum + j}" />

</c:forEach>

Result : ${sum}<br />

<hr>

<c:forEach var="k" begin="1" end="9">

5 X ${k} = ${5 * k} <br />

</c:forEach>

출력:

1     3     5     7     9     

1부터 100까지의 합


Result : 5050

5 X 1 = 5 

5 X 2 = 10 

5 X 3 = 15 

5 X 4 = 20 

5 X 5 = 25 

5 X 6 = 30 

5 X 7 = 35 

5 X 8 = 40 

5 X 9 = 45

---------------------

구구단

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<h2>구구단</h2>

<table cellspacing="0" cellpadding="0" border="1" width="800">

<tr height="40">

<c:forEach begin="2" end="9" var="j">

<th width="100">${j}</th>

</c:forEach>

</tr>

<c:forEach var="i" begin="1" end="9">

<tr height="20">

<c:forEach var="j" begin="2" end="9">

<td>${j} x ${i} = ${j * i}</td>

</c:forEach>

</tr>

</c:forEach>

</table>

---------------------

foreachdemo2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<jsp:directive.page import="java.util.HashMap" />

<%@ page import="java.util.Date" %>


<%

HashMap map = new HashMap();

map.put("name", "조성모");

map.put("today", new Date());

%>

<c:set var="intArray" value="new int[]{1,2,3,4,5}" />

<h3>int 배열</h3>

<c:forEach var="i" items="${intArray}" begin="2" end="4">

[${i}]

</c:forEach><br />

<c:set var="m" value="<%=map %>" />

<h3>Map</h3>

<c:forEach items="${m}" var="i">

${i.key} ==> ${i.value}<br />

</c:forEach>

출력:

int 배열


[3] [4] [5}] 

Map


today ==> Fri Jun 27 16:15:57 KST 2014

name ==> 조성모

---------------------

foreachdemo3.jsp

Header 정보


param : accept-language

value : ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4 

param : cookie

value : JSESSIONID=A92F9212974A0E14E42ED074A19AD6AF 

param : host

value : localhost:8080 

param : connection

value : keep-alive 

param : accept-encoding

value : gzip,deflate,sdch 

param : accept

value : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 

param : user-agent

value : Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 

-----------------------

foreachdemo4.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:forEach begin="1" end="7" var="i">

<font size="${i}" color="red">Hello, World</font><br />

</c:forEach>


<%-- 

<% for(int i = 1 ; i <=7 ; i++){ %>

<font size="<%=i %>" color="red">Hello, World</font><br />

<% }  %>

--%>

출력은 Hello, World 가 점점 커지는

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

tokenizer

fortokendsdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:forTokens var="i" items="사과, 바나나. 딸기, 복숭아. 수박. 참외" delims=",.">

${i}&nbsp;&nbsp;&nbsp;&nbsp;

</c:forTokens>

,와 .을 모두 구분자로 생각해서 걸릴 때마다 띄어쓰기 네칸을 인식함.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Import

importdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<%-- <c:import url="fortokendsdemo.jsp" var="myURL" />--%>

<c:import url="http://www.naver.com/index.html" var="myURL" />


<body>

<h1>Import 연습하기</h1>

${myURL}

</body>

-------------------------

header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:if test="${param.id != null}">

[HEADERE]${param.id}님의 방문을 환영합니다.

<hr>

</c:if>


footer.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<hr>

<div align="center">

All rights reserved &copy;

</div>

importdemo1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:import url="footer.jsp" var="foot" />

<c:import url="header.jsp" var="head">

<c:param name="id" value="javaexpert" />

</c:import>

<c:import url="http://www.javaexpert.co.kr" var="article" />


<body>

${head}

${article}


    ${foot}

</body>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

redirect

redirectdemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:redirect url="multifly.jsp">

<c:param name="num1" value="5" />

<c:param name="num2" value="25" />

</c:redirect>


multifly.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


num1 : <c:out value="${param.num1}" /><br />

num2 : <c:out value="${param.num2}" /><br />


${param.num1} x ${param.num2} = ${param.num1 * param.num2}

출력:

num1 : 5

num2 : 25

5 x 25 = 125

redirectdemo.jsp를 실행하면 웹브라우저의 url은 

http://localhost:8080/0627/multifly.jsp?num1=5&num2=25 을 표시함.

주소와 함께 바뀌는 것이 redirect.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

urldemo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<c:url value="divide.jsp">

<c:param name="num1" value="100" />

<c:param name="num2" value="25" />

</c:url>


divide.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


num1 : <c:out value="${param.num1}" /><br />

num2 : <c:out value="${param.num2}" /><br />


${param.num1} / ${param.num2} = ${param.num1 div param.num2}

출력:

divide.jsp?num1=100&num2=25

값세팅.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

=================================

================================

메일 보내기

mysql 이 갈린 CentOS 켜서

su

rpm -qa | grep sendmail

rpm -qa | grep telnet

yum -y install telnet-server

cd /etc/xinetd.d

gedit telnet 들어가서

disable을 no로 바꿔줌.

service xinetd start

system-config-firewall

port 23번을 열어줌.

윈도우즈에서 제어판 Programs and Features- Trun Windows features on or off 눌러서 telnet client 눌러 설치해줌.

명령프롬프트열어서 telnet 192.168.89.132 23 엔터. centos의 아이디 비번을 치고 로그인.

exit로 나옴.

다시 centos에서

yum -y install telnet

telnet localhost 23

접속되는지 보고

yum -y install sendmail sendmail-cf

cd /etc/mail

mv sendmail.cf sendmail.cf.org

cp sendmail.mc sendmail.mc.org

gedit sendmail.mc

51라인 가서

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')

이 두부분을 dnl 을 빼줌

116라인 

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl  이렇게 바꿔줌.

160라인 가서 dnl MASQUERADE_AS(`mydomain.com')dnl 를

MASQUERADE_AS(`javaexpert.co.kr')dnl 이렇게 도메인이름을 설정함.(자기맘대로)

164라인 dnlFEATURE(masquerade_envelope)dnl 을 FEATURE(masquerade_envelope)dnl 바꿈.

저장 후 나와서

service saslauthd start

m4 sendmail.mc > sendmail.cf

gedit sendmail.cf 들어가서

97라인? #Dj$w.Foo.COM 부분 밑에

Djjavaexpert.co.kr 추가함.

444라인 # SMTP initial login message (old $e macro) 밑에

SmtpGreetingMessage=$j Sendmail ; $b 을 써주고

O MaxMessageSize=0 부분을

O MaxMessageSize=20480000 으로 바꿔줌.

저장 후 나옴.

gedit local-host-names 들어가서

써진 것 밑에줄에 javaexpert.co.kr  아까 써줬던 도메인명을 써줌.

/etc/init.d/sendmail start

system-config-firewall 해서 25번 포트열어주고 

telnet 192.168.89.132 25 엔터. 

안대면 telnet localhost 25 로 확인. 되면 ESMTP Sendmail 이라고 나오면서 아래 아무것도 안나옴.

mail from:mino 엔터

rcpt to:자기받을계정쓰고 엔터

data  엔터 (본문시작)

hellow, world 엔터

안녕하세요. 잘 가요? 엔터

. 엔터(끝낼 때)

================================

================================

파일 관리 프로젝트 (미완)

파입 업로드 부분만

http://www.servlets.com/cos/ 접속.

왼쪽 com.oreilly.servlet 선택.

cos-26Dec2008.zip 다운.

알집풀고 폴더들어가서 lib폴더의 cos.jar.(파일업로드시필요)

lib폴더에 jar 파일 추가해주고.

파일이 업로드될 폴더를 만들어주고,

fileupload.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>파일 업로드</title>

</head>

<body>

<h3>파일 업로드 폼</h3>

<form action="fileupload.jsp" method="post" enctype="multipart/form-data">

<table>

<tr>

<th>올린 사람</th>

<td><input type="text" name="name" /></td>

</tr>

<tr>

<th>제목</th>

<td><input type="text" name="subject" /></td>

</tr>

<tr>

<th>파일명 1</th>

<td><input type="file" name="filename1" /></td>

</tr>

<tr>

<th>파일명 2</th>

<td><input type="file" name="filename2" /></td>

</tr>

<tr>

<th>파일명 3</th>

<td><input type="file" name="filename3" /></td>

</tr>

<tr>

<td colspan="2" align="center">

<input type="submit" value="올리기" />

</td>

</tr>

</table>

</form>

</body>

</html>


fileupload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" errorPage="/error/error.jsp" %>

<jsp:directive.page import="com.oreilly.servlet.*" />

<jsp:directive.page import="com.oreilly.servlet.multipart.*" />


<% request.setCharacterEncoding("utf-8");  %>


<%

String dir = "D:\\upload";

int max = 5 * 1024 * 1024;  //5MB

MultipartRequest mr = new MultipartRequest(

request, dir, max, "utf-8", new DefaultFileRenamePolicy());

String name = mr.getParameter("name");

String subject = mr.getParameter("subject");

String file1 = mr.getFilesystemName("filename1");

String ofile1 = mr.getOriginalFileName("filename1");

String file2 = mr.getFilesystemName("filename2");

String ofile2 = mr.getOriginalFileName("filename2");

String file3 = mr.getFilesystemName("filename3");

String ofile3 = mr.getOriginalFileName("filename3");

%>

<ul>

<li>올린이 : <%=name %></li>

<li>제목 : <%= subject %></li>

<% if(file1 != null){ %>

<li>업로드된 파일 1 : <%=file1 %>(<%=ofile1 %>)</li>

<% } %> 

<% if(file2 != null){ %>

<li>업로드된 파일 2 : <%=file2 %>(<%=ofile2 %>)</li>

<% } %> 

<% if(file3 != null){ %>

<li>업로드된 파일 3 : <%=file3 %>(<%=ofile3 %>)</li>

<% } %> 

</ul>