본문 바로가기
교재 실습/자바 웹 개발 워크북

10. POST 요청

by Jint 2022. 1. 5.

POST 요청의 데이터 전달 방법을 알아본다. 톰캣 서버를 실행한 뒤 http://localhost:9999/web02/PostTest.html 링크를 실행한다.

PostTest.html 링크 실행 화면

<form> 태그의 method 속성을 'post'로 하면 POST 요청이 발생한다.

<h3>POST 요청 1 - 로그인 폼</h3>
<p>
로그인 폼은 입력값 노출을 방지하기 위해 POST를 사용해야 한다.
</p>
<form action="LoginServlet" method="post">
아이디: <input type="text" name="id"><br>
암호: <input type="password" name="password"><br>
<input type="submit" value="로그인">
</form>
 
<h3>POST 요청 2 - 계산기</h3>
<p>
URL에 값이 포함되지 않아서 즐겨 찾기에 추가해도 소용없다.
</p>
<form action="CalculatorServlet" method="post">
	<input type="text" name="v1" size="4"> 
	<select name="op">
		<option value="+">+</option>
		<option value="-">-</option>
		<option value="*">*</option>
		<option value="/">/</option>
	</select> 
	<input type="text" name="v2" size="4"> 
	<input type="submit" value="="><br>
</form>

로그인 폼에서 아이디와 암호 입력 후 로그인 버튼을 클릭한다.

로그인 입력 폼 실행 결과

결과 화면의 주소를 보면 사용자가 입력한 아이디와 암호 값이 보이지 않는데 POST 요청을 보내면 URL에 데이터를 포함하지 않는다. 크롬의 DevTools로 Network 탭에서 HTTP 요청 프로토콜을 확인한다.

POST 요청의 요청정보

POST 요청이 이루어진 것을 확인할 수 있다. 또한 데이터의 길이를 알려주는 Content-Length 헤더와 보내는 데이터의 형식을 알려주는 Content-Type 헤더가 붙는다.

 

POST 요청은 데이터를 메시지 본문에 붙여 보내기 때문에 URL을 즐겨찾기에 추가하거나 메일로 공유해도 아무 소용이 없다. 데이터를 포함하지 않은 URL은 동일한 결과를 얻을 수 없기 때문이다. POST도 GET과 마찬가지로 데이터를 전달할 때 '이름=값&이름=값' 형태를 사용한다. 문자 데이터를 보낼 때는 문제가 없지만 이미지나 동영상같은 바이너리 데이터를 보낼 때 문제가 발생할 수 있다. 바이너리 데이터 안에 이런 '='나 '&'의 문자 코드를 포함할 수 있기 때문이다. 따라서 이런 문제를 해결하기 위해 바이너리 데이터를 보낼 때 아주 특별한 형식으로 작성하여 보내고 서버도 이 형식에 맞추어 데이터를 분리한다.

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글

12. CGI프로그램과 서블릿  (0) 2022.01.07
11. 파일 업로드  (0) 2022.01.06
9. GET 요청  (0) 2022.01.04
8. HTTP 프로토콜의 이해 (2)  (0) 2022.01.03
7. HTTP 프로토콜의 이해 (1)  (0) 2022.01.02

댓글