- HTML의 Form을 사용해서(메시지 바디에 쿼리 파리미터 형식으로 전달) 데이터를 전송해보자.
- 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>
- action="/request-param"
- RequestParamServlet 으로 전달된다. localhost:8080/basic/hello-form.html → localhost:8080/request-param
- 바디에 이 Form 데이터를 보낸다.
username=jo&age=2
- POST의 HTML Form을 전송하면 웹 브라우저는 다음 형식으로 HTTP 메시지를 만든다.
- 요청 URL: http://localhost:8080/request-param
- content-type: application/x-www-form-urlencoded
- message body: username=jo&age=20
- application/x-www-form-urlencoded 형식은 앞서 GET에서 살펴본 쿼리 파라미터 형식과 같다. 따라서 쿼리 파라미터 조회 메서드를 그대로 사용하면 된다. 클라이언트(웹 브라우저) 입장에서는 두 방식에 차이가 있지만, 서버 입장에서는 둘의 형식이 동일하므로, request.getParameter() 로 편리하게 구분없이 조회할 수 있다.
→정리하면 request.getParameter() 는 GET URL 쿼리 파라미터 형식도 지원하고, POST HTML Form 형식도 둘 다 지원한다.
- Postman 테스트
- 이런 간단한 테스트에선, HTML form을 만들기보다 Postman을 사용
- content-type은 HTTP 메시지 바디의 데이터 형식을 지정한다. GET URL 쿼리 파라미터 형식으로 클라이언트에서 서버로 데이터를 전달할 때는 HTTP 메시지 바디를 사용하지 않기 때문에 content-type이 없다. POST HTML Form 형식으로 데이터를 전달하면 HTTP 메시지 바디에 해당 데이터를 포함해서 보내기 때문에 바디에 포함된 데이터가 어떤 형식인지 content-type을 꼭 지정해야 한다. 이렇게 폼으로 데이터를 전송하는 형식을 application/x-www-form-urlencoded 라 한다.
[스프링 MVC 9] 서블릿: HttpServletRequest 기본 사용법 (tistory.com)
[스프링 MVC 11] 서블릿: HTTP 요청 데이터 - GET 쿼리 파라미터 (tistory.com)
- 쿼리 파라미터는 요청 파라미터라 하기도 한다.
[스프링 MVC 10] 서블릿: HTTP 요청 데이터 (tistory.com)
[스프링 MVC 2] 웹 애플리케이션 이해: 서블릿 (tistory.com)
728x90
반응형
'Spring Tutorial' 카테고리의 다른 글
[스프링 MVC 14] 서블릿: HttpServletResponse (0) | 2023.07.21 |
---|---|
[스프링 MVC 13] 서블릿: HTTP 요청 데이터 - API 메시지 바디 (0) | 2023.07.20 |
[스프링 MVC 11] 서블릿: HTTP 요청 데이터 - GET 쿼리 파라미터 (0) | 2023.07.20 |
[스프링 MVC 3] 웹 애플리케이션 이해: 동시 요청 - 멀티 쓰레드 (0) | 2023.07.19 |
[스프링 MVC 2] 웹 애플리케이션 이해: 서블릿 (0) | 2023.07.19 |