오봉이와 함께하는 개발 블로그
스프링 MVC 1 - HTTP 요청 데이터 POST HTML Form 본문
HTTP 요청 데이터 - POST HTML Form
HTTP의 Form을 사용해서 클라이언트에서 서버로 데이터를 전송하는 방법을 알아보자
주로 회원 가입, 상품 주문 등에서 사용하는 방식이다.
- 특징
- 헤더에 명시를 해준다.
- content-type: application/x-www-form-urlencoded
- 메시지 바디에 쿼리 파라미터 형식으로 데이터를 전달한다.
- username=hello&age=20
- 헤더에 명시를 해준다.
HTML 생성
먼저 HTML을 생성하자
접속 주소 : http://localhost:8080/basic/hello-form.html
<!-- src/main/webapp/basic/hello-form.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/request-param" method="post">
username: <input type="text" name="username" />
age: <input type="text" name="age" />
<button type="submit">전송</button>
</form>
</body>
</html>
전송
콘솔에 로그를 띄우는 코드는 다음 링크에 있는 코드다.
https://5bong2-develop.tistory.com/284
POST의 HTML Form을 전송하면 웹 브라우저는 다음 형식으로 HTTP 메시지를 만든다.
- 요청 URL : http://localhost:8080/request-param(form에 action=""에 있는 URL을 따라감)
- content-type: application/x-www-form-urlencoded
- message body: username=hello&age=20(form에 입력하는 값이 작성된다.)
정리
application/x-www-form-urlencoded
형식은 GET에서 본 쿼리 파라미터 형식과 같다.
따라서 쿼리 파라미터 조회 메서드를 그대로 사용할 수 있다.
클라이언트가 보기에는 두 방식이 차이가 있지만 서버 입장에서는 둘 형식이 동일하기 때문에 request.getParameter()
로 구분없이 조회가 가능하다.
정리하면 request.getParameter()
는 GET URL 쿼리 파라미터 형식도, POST HTML Form 형식도 지원한다.
참고
content-type은 HTTP 메시지 바디의 데이터 형식을 지정한다.
GET URL 쿼리 파라미터 형식으로 클라이언트에서 서버로 전달할 때는 HTTP 메시지 바디를 사용하기 때문에 content-type이 없다.
하지만, POST HTML Form으로 데이터를 전달하면 HTTP 메시지 바디에 데이터를 포함해서 보내기 때문에 포함된 데이터가 어떤 형식인지 content-type을 꼭 지정해야 한다.(하지만 브라우저가 알아서 해줌)
Postman을 사용한 테스트
간단한 테스트에 HTMl Form을 만들기 귀찮기 때문에 Postman을 사용하자.
출처 : 인프런 김영한 지식 공유자님 강의 - 스프링 MVC 1편 백엔드 웹 개발 핵심 기술
'BE > Servlet' 카테고리의 다른 글
스프링 MVC 1 - HttpServletResponse 사용법 (0) | 2022.08.10 |
---|---|
스프링 MVC 1 - HTTP 요청 데이터 API 메시지 바디 TEXT, JSON (0) | 2022.08.10 |
스프링 MVC 1 - HTTP 요청 데이터 개요, GET 쿼리 파라미터 (0) | 2022.08.10 |
스프링 MVC 1 - HttpServletRequest 개요, 기본 사용법 (0) | 2022.08.09 |
스프링 MVC 1 - 기본 프로젝트 Hello 서블릿 (0) | 2022.08.09 |