HTTP 에서 데이터 전송 방법인 GET과 POST 명령
HTTP 프로토콜은 데이터 전송에 7가지의 메소드를 제공합니다. HTTP 프로토콜의 데이터 전송 방법에 대해 자세히 알고 싶으신 분은 OSI 7계층과 TCP 4계층에 대해 공부하시면 됩니다.
일반적으로 HTTP를 사용하여 데이터를 전송할 때 GET 과 POST 방식으로 전송합니다. GET 방식은 요청 URL뒤에 파라미터를 같이 포함하여 전송하는 방법이고, POST 방식은 요청 헤더에 데이터를 포함시켜 스트림을 사용하여 전송하는 방법입니다.
■ GET 방식
GET 명령어는 문서를 요청할 때 URL 뒤에 세부 파라미터를 포함하여 문서를 요청하는 방법입니다. 즉, 요청 페이지 URL 뒤에 질의 문자열(Query String)을 첨부하는 방법입니다. 헤더의 URL에 포함시켜 데이터를 전송하기 때문에 데이터 용량의 제한을 받습니다. 참고로 URL 에 포함시킬 수 있는 데이터량은 1024byte 입니다. 즉, 문서의 참조값을 첨부하여 URL 에 포함시켜 전송합니다.
[ 기본형태 ] : 요청 페이지 URL?key=value&key1=value1...
[ 사용예제 ] : index.jsp?name=kim&age=20
<a href="index.jsp?name=kim&age=20"> 데이터 전송 </a>
■ POST 명령어 사용
POST 명령어는 데이터를 문서요청시 바디에 포함시켜 전송하는 방법으로 데이터를 전송합니다. 즉, 스트림을 사용한 데이터 전송방법입니다. 이 때 사용할 수 있는 인코딩 방식은 application/x-www-form-urlencoded 방식과 multipart/form-data 방식이 있습니다.
application/x-www-form-urlencoded 방식은 일반적인 텍스트 파라미터를 전송할 때 사용하는 인코딩 방식이며, 파일을 포함한 데이터를 전송하기 위해서는 인코딩 방식을 multipart/form-data 인코딩 방식으로 사용하여 전송해야 합니다. multipart/form-data 인코딩을 지정하기 위해서는 <form> 태그에 enctype 속성의 값을 "multipart/form-data" 로 주어야 하며, method 속성의 값을 "post"로 주어야 합니다.
<form method="post" action="전달할 페이지 URL" >
이름 : <input type="text" name="name"/><br/>
나이 : <input type="text" name="age"/><br/>
<input type="submit" value="전송"/>
</form>
위의 두 방식 모두 데이터를 받는 방식은 같습니다. 요청 파라미터에 접근하여 데이터를 받습니다.
<% request.setCharacterEncoding("euc-kr"); %>
<%
String name = request.getParameter("name");
String age = request.getParameter("age");
%>
전달받은 값을 출력합니다. <br/>
이름은 : <%=name%>
나이는 : <%=age%>