Spring MVC 시작

junheelee·2022년 9월 24일
0

SpringMVC

목록 보기
1/19

개념, 코드의 출처: 인프런 스프링 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 설정

Servlet 이란?

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

HttpServletRequest 역할

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

HttpRequestMessage 구성

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 파라미터 조회

HttpRequestMessage 조회 코드

@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개의 댓글