FrontController

Jay·2023년 8월 27일

Spring

목록 보기
9/17
  • 모든 API 요청을 앞서 살펴본 서블릿의 동작 방식에 맞춰 코드를 구현한다면 무수히 많은 Servlet 클래스를 구현해야한다
  • 따라서 Spring은 DispatcherServlet을 사용하여 Front Controller 패턴 방식으로 API 요청을 효율적으로 처리하고 있다.

Untitled

  1. Client(브라우저)에서 HTTP 요청이 들어오면 DispatcherServlet 객체가 요청을 분석

  2. DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달

    💡 [Sample] **GET /api/hello** → `HelloController` 의 **hello() 함수** **GET /user/login** → `UserController` 의 **login() 함수** **GET /user/signup** → `UserController` 의 **signup() 함수** **POST /user/signup** → `UserController` 의 **registerUser() 함수**
    • Handler mapping 에는 API path 와 Controller 메서드가 매칭되어 있다
    @RestController
    public class HelloController {
        @GetMapping("/api/hello")
        public String hello() {
            return "Hello World!";
        }
    }
    • API path 즉, URL을 Controller에 작성하는 방법은 @Controller 애너테이션이 달려있는 클래스를 생성한 뒤 @GetMapping 처럼 요청한 HTTP Method 와 일치하는 애너테이션을 추가한 메서드를 구현
      • URL은 @GetMapping("/api/hello") 이처럼 해당 애너테이션의 속성값으로 전달
      • 해당 메서드명은 URL을 매핑하는데 영향을 미치지 않음으로 자유롭게 정해도 상관 없다
    • 이제는 직접 Servlet을 구현하지 않아도 DispatcherServlet에 의해 간편하게 HTTP 요청을 처리할 수 있게 되었다.
  3. ControllerDispathcerServlet

    • 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달
  4. DispatcherServletClient

    • ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달

0개의 댓글