[TIL] 항해99 Day 19

woonie·2022년 1월 29일
0

TIL

목록 보기
17/64
post-thumbnail

항해 19일차

1. 스프링 MVC

  • Controller
    1. Client 의 요청을 Model 로 받아 처리
    2. Template engine 에게 View, Model 전달
      1. View: 동적 HTML 파일
      2. Model: View 에 적용할 정보들
    3. Template engine
      1. ViewModel 을 적용 → 동적 웹페이지 생성
        1. 예) 로그인 성공 시, "로그인된 사용자의 id" 를 페이지에 추가
        2. Template engine 종류: 타임리프 (Thymeleaf), Groovy, FreeMarker, Jade 등 (스프링에서 JSP 이용은 추천하지 않고 있음)
    4. Client 에게 View (동적 웹 페이지, HTML) 를 내려줌

2. Controller 와 HTTP Response 메시지

3. 스프링 MVC 동작원리

  1. Client → DispatcherServlet

    1. 가장 앞 단에서 요청을 받아 FrontController 라고도 불림
  2. DispatcherServlet → Controller

    • API 를 처리해 줄 Controller 를 찾아 요청을 전달
    • Handler mapping 에는 API path 와 Controller 함수가 매칭되어 있음
    💡 [Sample] **GET /hello/html/dynamic** → `HomeController` 의 **helloHtmlFile() 함수** **GET /user/login** → `UserController` 의 **login() 함수** **GET /user/signup** → `UserController` 의 **signup() 함수** **POST /user/signup** → `UserController` 의 **registerUser() 함수**
    • 함수 이름을 내 마음대로 설정 가능했던 이유!!
    • Controller 에서 요청하는 Request 의 정보 ('Model') 전달
      @Controller
      public class ItemSearchController {
      		@GetMapping("/api/search")
          @ResponseBody
          public List<ItemDto> getItems(**@RequestParam String query**) {
      			// ...
      		}
      }
  1. Controller → DispathcerServlet
    1. Controller 가 Client 으로 받은 API 요청을 처리
    2. 'Model' 정보와 'View' 정보를 DispatcherServlet 으로 전달
  2. DispatcherServlet → Client
    1. ViewResolver 통해 View 에 Model 을 적용
    2. View 를 Client 에게 응답으로 전달
profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글