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)에 대한 처리만 수행) |
||
단점 | 유지보수의 어려움, 코드의 복잡성 | 구조가 복잡, 개발시간 증가로 비용 증가 | ||
장점 | 구조가 단순하여 직관적 개발시간이 비교적 짧아 비용 감소 |
모듈화가 잘 되어있어 유지보수가 쉽고, 협업이 용이, 뛰어난 확장성 |