이 글은 김영한 님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 수강하며 정리한 글입니다.
HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다.
서블릿은 HTTP 요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지 파싱 결과를 객체에 담아 제공한다.
HTTP 요청 메시지
POST /save HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=kim&age=20
˙ START LINE: HTTP 메소드, URL, 쿼리 스트링, 스키마, 프로토콜
˙ 헤더: 헤더 조회
˙ 바디: form 파라미터 형식 조회, message body 데이터 직접 조회
더보기
더보기
📄RequestHeaderServlet
@WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header")
public class RequestHeaderServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
printStartLine(request);
printHeaders(request);
printHeaderUtils(request);
printEtc(request);
}
START LINE
request.getMethod(); //GET
request.getProtocol(); //HTTP/1.1
request.getScheme(); //http
request.getRequestURL(); //http://localhost:8080/request-header
request.getRequestURI(); // /request-header
request.getQueryString(); //username=hi
request.isSecure(); //https 사용 유무
모든 헤더 정보
/* 이전 방법: 모든 헤더 정보를 꺼내서 다음 요소가 있다면 출력하는 방식
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
System.out.println(headerName + ": " + headerName);
}
*/
request.getHeaderNames().asIterator()
.forEachRemaining(headerName -> System.out.println(headerName + ": " + headerName));
편의 조회
//[Host 편의 조회]
request.getServerName(); //localhost
request.getServerPort(); //8080
//[Accept-Language 편의 조회]
request.getLocales().asIterator() //언어 우선 순위
.forEachRemaining(locale -> System.out.println("locale = " + locale));
request.getLocale(); //ko 가장 높은 우선 순위
//[cookie 편의 조회]
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
System.out.println(cookie.getName() + ": " + cookie.getValue());
}
}
//[Content 편의 조회]
request.getContentType(); //text/plain
request.getContentLength();
request.getCharacterEncoding(); //UTF-8
기타 정보
//[Remote 정보]
request.getRemoteHost();
request.getRemoteAddr();
request.getRemotePort();
//[Local 정보]
request.getLocalName();
request.getLocalAddr();
request.getLocalPort();
🍎 임시 저장소 기능
˙해당 HTTP 요청이 시작부터 끝날 때까지 유지되는 임시 저장소 기능
˙ 저장: request.setAttribute(name, value)
˙ 조회: request.getAttribute(name)
🍎 세션 관리 기능
˙ request.getSession(create: true)
'Back-End > Spring' 카테고리의 다른 글
[Spring MVC] 서블릿 - HttpServletResponse (0) | 2022.04.18 |
---|---|
[Spring MVC] 서블릿 - HTTP 요청 데이터의 종류 (0) | 2022.04.16 |
[Spring MVC] Hello 서블릿 (0) | 2022.04.14 |
[Spring MVC] 자바 백엔드 웹 기술 역사 (0) | 2022.04.13 |
[Spring MVC] HTML, HTTP API, CSR, SSR (0) | 2022.04.13 |
댓글