POST 방식은 요청 바디에 데이터를 포함하여 전송합니다. 이 때 전송되는 방식은 applicatin/x-www-form-urlencoded 방식과 multipart/form-data 형식 두 가지로 구분됩니다.
1. application/x-www-form-urlencoded 방식
일반적인 파라미터만 전송할 수 있습니다. 폼 태그를 사용하여 전송합니다.
이름 : <input type="text" name="name"/><br/>
나이 : <input type="text" name="age"/><br/>
<input type="submit" value="전송"/>
</form>
위와 같은 폼 데이터를 전송받아 출력하는 서블릿 코드입니다.
InputStream inputStream = null;
System.out.println("[" + request.getContentType() + "]");
try {
inputStream = request.getInputStream();
int data = -1;
while ( ( data = inputStream.read() )!= -1 ) {
System.out.print((char)data);
}
} finally {
if ( inputStream != null ) try { inputStream.close(); } catch (Exception e) {}
}
이 서블릿 코드로 파라미터를 전송하면 다음과 같은 결과를 출력합니다.
[application/x-www-form-urlencoded]
name=%C5%D7%BD%BA%C6%AE&age=%C5%D7%BD%BA%C6%AE
폼 태그의 method 속성값을 "post"로 주고 파라미터를 전송하면 application/x-www-form-urlencoded 방식으로 변경되어 파라미터가 전송됩니다. 이 때 파라미터는 일반적인 데이터값만 전송가능합니다.
2. multipart/form-data 방식
multipart/form-data 방식을 일반 파라미터와 파일을 함께 전송할 수 있습니다.
<form enctype="mulitpart/form-data" method="POST" action="index.jsp">
이름 : <input type="text" name="name"/><br/>
파일 : <input type='file" name="fileName"/><br/>
<input type="submit" value="전송"/>
</form>
위의 폼 데이터를 application/x-www-form-urlencoded 에서 작성한 폼 데이터의 내용을 출력하는 서블릿으로 보냈을 경우의 결과입니다.
[multipart/form-data; boundary=---------------------------7da13831303fc]
-----------------------------7da13831303fc
Content-Disposition: form-data; name="name"
?×½ºÆ®
-----------------------------7da13831303fc
Content-Disposition: form-data; name="fileName"; filename="D:\temp\photo2.gif"
Content-Type: image/gif
GIF89a_ .... 파일의 내용 ...;
-----------------------------7da13831303fc--
multipart/form-data 방식으로 데이터를 전송하며 일반 파라미터 영역과 파일 데이터를 같이 전송합니다. 이렇게 전송된 데이터를 서버의 CGI프로그램이 분석하여 파일을 저장합니다. 즉, 클라이언트가 헤더에 보낸 데이터를 분석하여 서버에 파일을 저장할 수 있는 것입니다.
'자바(Java) > JAVA 2EE' 카테고리의 다른 글
자카르타(Jakarta) DBCP 사용 (0) | 2009.12.20 |
---|---|
이클립스에서 서블릿 클래스 작성 (0) | 2009.12.16 |
HTTP 에서 데이터 전송 방법인 GET과 POST 명령 (0) | 2009.11.09 |
에러 페이지 지정하는 방법과 응답상태별 페이지 지정 (0) | 2009.11.09 |
웹 어플리케이션에서 자바빈즈의 위치 (0) | 2009.11.09 |