MDP

2023-11-03 본문

TIL

2023-11-03

모다팡 2023. 11. 3. 17:14

- 디자인 패턴 -

  • MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나
  • MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리합니다.

- Model -

  • 데이터와 비즈니스 로직을 담당합니다.
  • 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행합니다.
  • Requset와 Response 역할을 한다.

- View -

  • 사용자 인터페이스를 담당
  • 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현
  • Model에서 요청된 자료와 불러온 자료를 보여준다

- Controller - 

  • Model과 View 사이의 상호작용을 조정하고 제어
  • 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트

- Spring MVC - 

  • Spring Web MVC는 Servlet API를 기반으로 구축된 독창적인 웹 프레임워크로, 처음부터 Spring Framework에 포함되어 왔으며, 정식 명칭인 "Spring Web MVC"는 소스 모듈(spring-webmvc)의 이름에서 따왔으나, "Spring MVC"로 더 일반적으로 알려져 있습니다.
  • Spring MVC는 중앙에 있는 DispatcherServlet이 요청을 처리하기 위한 공유 알고리즘을 제공하는 Front Controller 패턴을 중심으로 설계되어 있으며 이 모델은 유연하고 다양한 워크 플로우를 지원합니다.
    • 서블릿 - 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말합니다.
      1. 사용자가 Client(브라우저)를 통해 서버에 HTTP Request 즉, API 요청을 합니다.
      2. 요청을 받은 Servlet 컨테이너는 HttpServletRequest, HttpServletResponse 객체를 생성합니다.
        - 약속된 HTTP의 규격을 맞추면서 쉽게 HTTP에 담긴 데이터를 사용하기 위한 객체입니다.
      3. 설정된 정보를 통해 어떠한 Servlet에 대한 요청인지 찾습니다.
      4. 해당 Servlet에서 service 메서드를 호출한 뒤 브라우저의 요청 Method에 따라 doGet 혹은 doPost 등의 메서드를 호출합니다.
      5. 호출한 메서드들의 결과를 그대로 반환하거나 동적 페이지를 생성한 뒤 HttpServletResponse 객체에 응답을 담아 Client(브라우저)에 반환합니다.
      6. 응답이 완료되면 생성한 HttpServletRequest, HttpServletResponse 객체를 소멸합니다.
  • Front Controller
    • 모든 API 요청을 앞서 살펴본 서블릿의 동작 방식에 맞춰 코드를 구현한다면 무수히 많은 Servlet 클래스를 구현해야한다
    •  Spring은 DispatcherServlet을 사용하여 Front Controller 패턴 방식으로 API 요청을 효율적으로 처리하고 있다.
    •  
      1. Client(브라우저)**에서 HTTP 요청이 들어오면 DispatcherServlet 객체가 요청을 분석합니다.
      2. DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달해 줍니다.
        - [Sample]
        GET /api/helloHelloControllerhello() 함수
        GET /user/login UserController 의 login() 함수
        GET /user/signup → UserController 의 signup() 함수
        POST /user/signup → UserControllerregisterUser() 함수
      3. Handler mapping 에는 API path 와 Controller 메서드가 매칭되어 있습니다.
        @RestController
        public class HelloController {
            @GetMapping("/api/hello")
            public String hello() {
                return "Hello World!";
            }
        }



      4. ControllerDispathcerServlet
        해당 컨드롤러에 데이터 처리를 완료후 Model -> View 로 정보를 전달한다.
      5. DispatcherServletClient
        ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 전달한다.

 

 

 

 

 

'TIL' 카테고리의 다른 글

2023- 12-08 CRUD 구현  (0) 2023.12.08
2023-11-10  (0) 2023.11.13
2023-11-07  (0) 2023.11.07
2023-11-06  (0) 2023.11.06
2023-10-31 공부일지  (0) 2023.10.31