💻본 포스팅은 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 김영한'님의 강의를 듣고 작성되었습니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
[HTTP 스펙]
[HttpServletRequest]
- HTTP 요청 메시지 스펙을 편리하게 사용할 수 있도록 조회할 수 있게 해주는 것이 HttpServletRequest이다.
- HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다.
- 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다
[HttpServletRequest의 역할 ]
- 부가적인 기능으로 아래와 같은 기능을 제공한다.
- 임시 저장소 기능
- 해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능을 한다.
- 저장: request.setAttribute(name, value)
- 조회: request.getAttribute(name)
- 세션 관리 기능
- request.getSession(create: true)
[HTTP 요청 데이터]
- HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법은 아래와 같이 3가지이다.
- GET - 쿼리파라미터
- /url?username=hello&age=20
- 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
- 예) 검색, 필터, 페이징등에서 많이 사용하는 방식
- POST - HTML Form
- content-type: application/x-www-form-urlencoded
- 메시지 바디에 쿼리 파리미터 형식으로 전달
- username=hello&age=20 예) 회원 가입, 상품 주문, HTML Form 사용
- 이 경우 POST만 지원한다. 다른 스프링 부트에서 PUT이나 PATCH를 지원하지만 이는 설정을 해주어서 그 덕분이라 한다.
- HTTP message body에 데이터를 직접 담아 요청
- 이는 주로 HTTP API에서 사용하며 JSON, XML, TEXT등을 보낼 때 쓰고 요즘은 JSON이 거의 표준이라고 부를만큼 가장 많이 쓴다.
- POST, PUT, PATCH
[참고]
- GET과 HTML Form 요청 데이터의 경우엔 쿼리 파라미터를 사용하기 때문에 둘을 묶어서 요청 파라미터라고 부른다.
- GET URL 쿼리 파라미터 형식으로 클라이언트에서 서버로 데이터를 전달할 때는 HTTP 메시지 바디를 사용하기 때문에 content-type이 없다.
- POST HTML Form 형식으로 데이터를 전달하면 HTTP 메시지 바디에 해당 데이터를 포함해서 보내기 때문에 바디에 포함된 데이터가 어떤 형식인지 content-type을 꼭 지정해주어야 한다. 이렇게 폼으로 데이터를 전송하는 형식을 application/x-www-form-urlencoded라 한다.
- Json 형식의 데이터를 받을 때는 이를 객체로 만들어 보여줘야 하기 때문에 ObjectMapper를 사용해야 한다.
[JSON 파싱해서 사용가능 자바 객체로 변환하기 위한 방법]
Jackson, Gson 같은 JSON 변환 라이브러리를 추가해서 사용하면 이를 변환해 사용할 수 있다.
이때 Spring MVC를 선택하면 기본으로 Jackson 라이브러리(ObjectMapper)를 함께 제공한다.
'Back-End > Spring' 카테고리의 다른 글
[Spring MVC][서블릿, JSP, MVC 패턴] - 서블릿, JSP, MVC 패턴 (0) | 2022.03.09 |
---|---|
[Spring MVC][서블릿/Servlet] - 2. HttpServletResponse (0) | 2022.03.04 |
[Spring MVC][웹 애플리케이션 이해] - 4. HTML, HTTP API, CSR, SSR (0) | 2022.03.01 |
[Spring MVC][웹 애플리케이션 이해] - 3. 동시 요청 - 멀티 쓰레드 (0) | 2022.03.01 |
[Spring MVC][웹 애플리케이션 이해] - 2. 서블릿 (0) | 2022.02.28 |