자바(Java)/JAVA 2EE

HTTP 에서 데이터 전송 방법인 GET과 POST 명령

본클라쓰 2009. 11. 9. 17:01

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%>