FE/JSP

[JSP] Spring MVC, Mode1 vs Model2

スモモ🍒 2024. 2. 26. 20:30

[ Spring MVC ]  Spring 프레임워크에서 제공하는 웹 애플리케이션 개발을 위한 모듈

: Model-View-Controller(MVC) 아키텍처를 기반으로 함, 3가지 주요 부분으로 나누어 관리하며

각 부분의 역할을 분리하여 유지보수성과 확장성을 향상시킴 (유연하고 확장성 있게 웹 애플리케이션 설계)

  Model (모델) View (뷰) Controller (컨트롤러)
역할 비즈니스 로직과 데이터 담당
(작업 처리 결과 데이터를 말함)
Model을 이용하여 사용자(웹 브라우저 등)에게 보이는 화면에 리소스를 제공하는 역할 URL 매핑과 요청 처리를 담당
(Model과 View의 중간에서 상호작용을 해주는 역할)
동작 애플리케이션의 핵심 로직이 구현되는 곳 (데이터 처리, 검증, 저장 등) 1. 모델에서 전달받은 데이터를 사용자에게 표시
2. 사용자의 입력을 컨트롤러에 전달
1. 클라이언트의 요청을 받음
2. 적절한 비즈니스 로직을 호출
3. 결과를 뷰 전달하여 사용자에게 응답
구현 주로 Java 객체로 표현
(화면에 표시될 데이터를 담고있음)
주로 JSP, Thymeleaf등의 템플릿 엔진을 사용
(동적인 웹페이지 생성)
주로 Spring의 @Controller 어노테이션을 사용하여 구현
(사용자 입력 처리, 그에 따른 적절한 메소드 호출 후 결과를 뷰에 전달)
특징 및 장점 - 유연성과 확장성 : 역할이 분리되어 관리되므로 개별적 변경 가능, 테스트 용이
- URL 매핑 : 간편한 컨트롤러 구현이 가능
- 데이터 바인딩과 검증 : 요청 파라미터와 모델 객체 간의 데이터 전달이 자동으로 처리됨, 검증 기능도 제공
- 중앙 집중화된 설정 : Spring의 IoC 컨테이너와 연동하여 설정 관리 제공

* Spring MVC 구조

- DispatcherServlet : 모든 HTTP Request(클라이언트 요청)를 받아서 처리하는 중앙 제어 Controller

                                          요청을 적절한 핸들러에 전달, 그 결과를 받아서 적절한 view로 전달하여 응답 생성

                                          (DispatcherServlet 클래스가 담당)

- Handler(Controller) : HTTP Request를 처리후 비지니스 로직 실행 후 Model에 전달, 사용할 View를 지정

                                             (@Controller 어노테이션)

- ModelAndView : Controller에 의해 반환된 결과로 생성된 Model과 View를 함께 저장하는 객체

- ViewResolver : ModelAndView에서 지정한 뷰를 실제 뷰 객체로 변환, 물리적인 뷰 객체를 연결하는 역할


[ Model 1, 2 ]  Java 웹 응용 프로그램의 아키텍처 패턴을 나타내는데 사용되는 용어

* 서버측이 비즈니스 로직과 클라이언측의 표현 로직을 어떻게 구성할지에 대한 아키텍처적인 접근방식

* JSP와 Servlet 기술을 사용하여 구현됨

  Model 1 Model 2
특징 비지니스, 표현 로직이 모두 JSP 페이지에 포함 비즈니스 로직과 표현 로직을 분리하여 관리
(MVC 패턴을 웹개발에 도입한 구조)
동작 1. 클라이언트 요청
2. JSP에서 비즈니스 로직 처리
3. 클라이언트에게 결과 직접 전송
(JSP에서 view, logic 모두 처리)
1. 클라이언트 요청
2. Servlet이 비즈니스 로직 처리
3. 결과를 JSP에 전달하여 표현 로직 담당
(JSP가 view(response page)에 대한 처리만 수행)
단점 유지보수의 어려움, 코드의 복잡성 구조가 복잡, 개발시간 증가로 비용 증가
장점 구조가 단순하여 직관적
개발시간이 비교적 짧아 비용 감소
모듈화가 잘 되어있어 유지보수가 쉽고, 협업이 용이, 뛰어난 확장성