Spring Boot & Thymeleaf 시리즈는 김영한 님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의
웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있
www.inflearn.com
마크다운 형식으로 작성한 글을 블로그에 다시 올리는 거라 가독성이 많이 떨어집니다. 조금더 편하게 보시려면 아래의 Github repository에서 보시면 됩니다.
GitHub - Kloong1/TIL: Today I Learned.
Today I Learned. Contribute to Kloong1/TIL development by creating an account on GitHub.
github.com
HTTP 요청 데이터 - POST & HTML Form
HTML의 Form을 사용해서 클라이언트에서 서버로 데이터를 전송해보자.
특징
- 메시지 바디에 쿼리 파리미터 형식으로 데이터를 전달한다.
- 예)
username=hello&age=20
- 예)
Content-Type: application/x-www-form-urlencoded
HTML Form을 사용한 데이터 전송을 위해 src/main/webapp/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>
- POST 메소드를 사용하고, 요청을 보낼 URL은
/request-param
임을 확인할 수 있다.
요청을 보낸 뒤 콘솔 출력을 확인해보면,
[전체 파라미터 조회] - start
username = kloongPost
age = 20
[전체 파라미터 조회] - end
[단일 파라미터 조회] - start
username = kloongPost
age = 20
[단일 파라미터 조회] - end
[이름이 같은 복수 파라미터 조회] - start
username = kloongPost
[이름이 같은 복수 파라미터 조회] - end
HTML Form에 담은 내용들이 잘 출력되는 것을 확인할 수 있다.
GET & 쿼리 파라미터 조회를 위해 작성했던 RequestParamServlet
객체를 그대로 사용할 수 있는 것을 알 수 있다.
정리
Content-Type: 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 헤더를 꼭 넣어줘야 한다.
이렇게 HTML Form으로 데이터를 전송하는 형식을application/x-www-form-urlencoded
라 한다.
Postman을 사용한 테스트
HTML Form 테스트를 위해 HTML 파일을 만드는 것은 너무 귀찮은 일이다. 이 떄는 Postman을 사용하면 된다.
'Spring > Spring MVC' 카테고리의 다른 글
[Spring MVC] 12. HttpServletResponse (0) | 2022.11.23 |
---|---|
[Spring MVC] 11. HTTP 요청 데이터 - 메시지 바디 (0) | 2022.11.23 |
[Spring MVC] 9. HTTP 요청 데이터 - GET 쿼리 파라미터 (0) | 2022.11.23 |
[Spring MVC] 8. HTTP 요청 데이터 - 개요 (0) | 2022.11.23 |
[Spring MVC] 7. HttpServletRequest (0) | 2022.11.23 |
댓글