개념, 코드의 출처: 인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (인프런) : 김영한 강사님
https://www.inflearn.com/course/스프링-mvc-1
본 블로그는 개발 공부를 위한 용도로만 사용되며 어떠한 경우에도 상업적 용도의 사용과 불법 복제를 금지합니다.
개발 환경
- M1 Macbook pro
- inteliJ Ultimate
- Springboot
- Project: Gradel
- Lanaguege: Java
- Spring Boot: 2.7.3
- Dependencies: Spring Web, Lombok
*Lombok 사용시: preference -> annotation processors -> enable 설정
자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다 (나무위키)
HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다.
ex)
POST /save HTTP/1.1 (Start line)
Host: localhost:8080 (header)
content-Type: application/x-www-form-urlencoded (Body)
Start line
- http method
- url
- query string
- schema, protocal
header
- header 조회
body
- form 파라미터 조회
@WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header")
public class RequestHeaderServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException{
printStartLine(request);
printCookies(request);
}
private void printStartLine(HttpServletRequest request) {
//http 첫 라인의 데이터 가져오기
System.out.println("--- REQUEST-LINE - start ---");
System.out.println("request.getMethod() = " + request.getMethod()); //GET
System.out.println("request.getProtocol() = " + request.getProtocol()); //HTTP/1.1
System.out.println("request.getScheme() = " + request.getScheme()); //http
// http://localhost:8080/request-header
System.out.println("request.getRequestURL() = " + request.getRequestURL());
// /request-header
System.out.println("request.getRequestURI() = " + request.getRequestURI());
//username=hi
System.out.println("request.getQueryString() = " + request.getQueryString());
System.out.println("request.isSecure() = " + request.isSecure()); //https사용 유무
System.out.println("--- REQUEST-LINE - end ---");
System.out.println();
//모든 헤더 조회
request.getHeaderNames().asIterator()
.forEachRemaining(headerName -> System.out.println("headerName = " + headerName));
System.out.println();
}
private void printCookies(HttpServletRequest request) {
System.out.println("[cookie 편의 조회]");
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
System.out.println(cookie.getName() + ": " + cookie.getValue());
} }
System.out.println();
System.out.println("[Content 편의 조회]");
System.out.println("request.getContentType() = " +
request.getContentType());
System.out.println("request.getContentLength() = " +
request.getContentLength());
System.out.println("request.getCharacterEncoding() = " +
request.getCharacterEncoding());
System.out.println("--- Header 편의 조회 end ---");
System.out.println();
}
}