Spring MVC Study Start

junheelee·2022년 9월 24일
0

SpringMVC

목록 보기
2/19

개발환경

  • m1 MacBook Pro
  • InteliJ
  • Springboot
    • Project: Gradle
    • Language: Java
    • Spring Boot: 2.7.3
    • Dependencies
      • Spring Web
      • lombok

Lombok 사용시
preference - annotation - processors - enable check

Servlet 이란?

자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다 (나무위키)

HttpServletRequest 역할

HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다.

HTTP 요청 메세지 예시

POST /save HTTP/1.1
Host: localhost:8080
content-Type: application/x-www-form-urlencoded

Start line

  • http method
  • url
  • query string
  • schema, protocal

header

  • header 조회

body

  • form 파라미터 조회

HTTP 요청 메세지 조회 코드

@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();
    }
}
profile
Study of beginner dev

0개의 댓글