Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

공부하는 블로그

2024 08 09 TIL : Spring MVC에 대해 본문

내일배움캠프/TIL

2024 08 09 TIL : Spring MVC에 대해

동성만능크리너 2024. 8. 12. 15:44

Spring MVC에 대한 강의를 듣는데, Servlet, Controller에 대한 개념이 제대로 잡히지 않아서 전체적으로 정리를 해보려고 한다. 

 

디자인 패턴이란? 

소프트웨어 설계에서 자주 발생하는 문제들을 해결하기 위해 만들어진 일반적인 해결책이다. 즉, 디자인 패턴은 특정한 묹제를 해결하기 위한 최적의 방법을 미리 정의해 둔 '템플릿'이라고 할 수 있다.

 

MVC 디자인 패턴이란? 

Model-View-Controller 디자인 패턴의 약자로, 하나의 소프트웨어 애플리케이션을 세 부분(Model,View,Controller)으로 나누어 개발한다는 뜻이다. 

MVC 디자인 패턴

 

모델(Model) :

    데이터와 비즈니스 로직을 담당한다. 

    데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행한다. 

 

뷰(View) : 

    사용자 인터페이스를 담당한다. 

    사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현한다. 

 

컨트롤러(Controller) : 

    Model과 View 사이의 상호작용을 조정하고 제어한다. 

    사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트한다. 

 

Spring MVC란?

Spring MVC는 Servlet API를 기반으로 구축된 독창적인 웹 프레임워크로, 처음부터 Spring Framework에 포함되어 왔습니다. Spring MVC는 중앙에 있는 DispatcherServlet이 요청을 처리하기 위한 공유 알고리즘을 제공하는 Front Controller 패턴으로 설계되어있으며, 이 모델은 유연하고 다양한 워크 플로우를 지원합니다.

 

 

그럼 대체 Servlet은 뭐고 Front Controller는 뭘까? 

 

Servlet은 "Java를 이용해 웹페이지를 동적으로 만들어주는 서버 측 프로그램"이고,  Front Controller 패턴은 "웹 애플리케이션에서 모든 요청을 단일 진입점(Controller)로 집중시키는 구조이다. 

 

 

아까 위에서 단일 진입점(Controller)라고 쓰긴 했지만, 그렇다고 DispatcherServlet이 Controller인 것은 아니다. 

 

DispatcherServlet과 Controller의 차이

 

DispatcherServlet

 

    1. 역할 :

        'DispatcherServlet'은 Spring MVC 프레임워크에서 모든 HTTP 요청을 가장 먼저 받는 서블릿이다. 웹 애플리케이션의 단일 진입점 역할을 하며, 모든 요청을 중앙에서 처리한다. 

 

    2. 기능

        요청 라우팅 : 들어온 요청을 분석하고, 해당 요청이 처리될 적절한 컨트롤러를 찾아 요청을 전달한다. 

 

        공통 처리 : 요청 처리 전에 공통으로 처리해야 하는 작업(보안, 인증 등등)을 처리할 수 있다. 

 

        응답 처리 : 컨트롤러가 반환한 결과를 받아서, 이를 적절한 뷰로 전환하거나 클라이언트에 응답을 보낸다

 

    3. 비즈니스 로직

        비즈니스 로직을 직접 처리하지 않는다. 대신, 요청을 적절한 컨트롤러에 전달하여 비즈니스 로직을 처리하도록 한다. 

 

Controller

    1. 역할 :

        사용자의 요청을 받아 비즈니스 로직을 수행하고, 그 결과를 생성하는 클래스이다. 이 클래스는 요청을 해석하여 적절한 서비스나 접근 계층과 상호작용하고, 그 결과를 생성한다.

 

    2. 기능 : 

        비즈니스 로직 처리:

        요청된 작업에 따라 필요한 비즈니스 로직을 실행합니다. 예를 들어, 데이터를 조회하거나 저장하는 작업, 특정 비즈니스 규칙을 적용하는 작업 등을 수행한다.

 

        모델과 뷰 결정 :

        비즈니스 로직 처리 후, Controller는 데이터를 Model에 담고, 이를 어떤 뷰(View)로 렌더링할지 결정한다.

 

        응답 반환  :

        최종적으로 어떤 뷰 또는 데이터를 사용자에게 반환할지를 결정하고, 이를 DispatcherServlet에 전달한다.

 

    3. 구현 방식 : 

        Spring에서 @Controller 어노테이션을 사용해 컨트롤러를 정의하며, 각 메서드는 @RequestMapping, @GetMapping, @PostMapping 등의 어노테이션으로 특정 URL에 매핑한다.