<<<<<< 7. Spring MVC 소개 >>>>>>
목차 : 1. MVC패턴과 Spring MVC, 2. Spring MVC 설정
1. MVC패턴과 Spring MVC
MVC패턴의 개념
MVC(Model-View-Controller)패턴의 개념
소프트웨어 공학에서 사용되는 아키텍처 패턴으로 MVC 패턴의 주 목적은 Business logic과 Presentation logic을 분리하기 위함
—> MVC패턴은 Presentation Logic에 관련된 패턴이다.
- MVC 패턴을 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음
- Model : 애플리케이션의 정보(데이터, Business Logic 포함)
- View: 사용자에게 제공할 화면(Presentation Logic)
- Controller : Model과 View 사이의 상호작용을 관리
—> 컨트롤러는 클라이언트의 요청과 응답을 제어
—> 요청을 수행하는 곳이 모델, 모델 뒤쪽에 service와 DAO가 있다.
—> 모델은 데이터를 담당
—> 데이터는 화면과 모델이 결합되어 클라이언트로 응답이 나가게 되어있다.
—> 뷰는 주로 HTML형태나 JSON형태가 될 수 있다.
==> SPA
각각의 MVC 컴포넌트의 역할
- 모델(Model) 컴포넌트 —> 데이터와 관련
- 데이터 저장소(ex. 데이터베이스 등)와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 함
- 여러 개의 데이터 변경 작업(추가, 변경, 삭제)을 하나의 작업으로 묶는 트랜잭션을 다루는 일도 함
- DAO 클래스, Service 클래스에 해당
- —> VO와 같은 도메인 객체들도 모델이라고 볼 수 있다.
- 뷰(View) 컴포넌트 —> 화면
- 모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면을 만드는 일을 함
- 생성된 화면은 웹 브라우저가 출력하고, 뷰 컴포넌트는 HTML과 CSS, Java Script를 사용하여 웹 브라우저가 출력할 UI를 만듦
- Html과 JSP를 사용하여 작성할 수 있음
- —> 웹 브라우저가 실제로 렌더링할 화면을 뷰 컨트롤러라고 한다.
- 컨트롤러(Controller) 컴포넌트 —> 뷰와 모델을 적절학게 제어
- 클라이언트의 요청을 받았을때 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출하는 일을 함
- 클라이언트가 보낸 데이터가 있다면, 모델을 호출할 때 전달하기 쉽게 데이터를 적절히 가공하는 일을 함
- 모델이 업무 수행을 완료하면, 그 결과를 가지고 화면을 생성하도록 뷰에게 전달(클라이언트 요청에 대해 모델과 뷰를 결정하여 전달)
- Servlet과 JSP를 사용하여 작성할 수 있음
Front Controller 패턴 아키텍처
- Front Controller 프로세스
- Front Controller는 클라이언트가 보낸 요청을 받아서 공통적인 작업을 먼저 수행
- Front Controller는 적절한 세부 Controller에게 작업을 위임
- 각각의 애플리케이션 Controller는 클라이언트에게 보낼 뷰를 선택해서 최종 결과를 생성한는 작업
- Front Stroller 패턴은 인증이나 권한 체크처럼 모든 요청에 대하여 공통적으로 처리해야 하는 로직이 있을 경우 전체적으로 클라이언트의 요청을 중앙 집중적으로 관리하고자 할 경우에 사용
—> 모든 요청에 Front Controller가 있다.(쿼사드 패턴 - 벽같이 반드시 거쳐야하는 관문이라는 의미)
—> Front Controller가 어떤 컨트롤러를 호출할 지 결정
—> MVC 패턴을 도입한걸 모델2 아키첵처라고 한다.
Spring MVC 개념
- Spring MVC의 특징
- Spring은 DI나 AOP 같은 기능뿐 만 아니라, 서블릿 기반의 웹 개발을 위한 MVC 프레임워크를 제공
- Spring MVC는 모델2 아키텍처와 Front Controller 패턴을 프레임워크 차원에서 제공
- Spring MVC프레임워크는 Spring을 기반으로 하고 있기 때문에 Spring이 제공하는 트랜잭션 처리나 DI및 AOP등을 손쉽게 사용
- Spring MVC와 Front Controller 패턴
- 대부분의 MVC 프레임워크들은 Front Controller 패턴을 적용해서 구현
- Spring MVC도 Front Controller역할을 하는 DispatcherServlet이라는 클래스를 계층의 맨 앞단에 놓고, 서버로 들어오는 모든 요청을 받아서 처리하도록 구성
- 예외가 발생했을때 일관된 방식으로 처리하는 것도 Front Controller의 역할
- —> DispatcherServlet : Front Controller를 미리 내장해놨다는 Spring MVC의 핵심
Spring MVC의 주요 구성 요소
DIspatcherServlet | 클라이언트의 요청을 받아서 Controller에게 클라이언트의 요청을 전달하고, 리턴한 결과값을 View에게 전달하여 알맞은 응답을 생성 |
Handlermapping | URL과 요청 정보를 기준으로 어떤 핸들러 객체를 사용할지 결정하는 객체이며, DispatchServlet은 하나 이상의 핸들러매핑을 가질 수 있음 |
Controller | 클라이ㅓㄴ트의 요청을 처리한 뒤, Model를 호출하고 그 결과를 DispatcherServlet에게 알려줌 |
ModelAndView | Controller가 처리한 데이터 및 화면에 대한 정보를 보유한 객체 |
View | Controller의 처리 결과 화면에 대한 정보를 보유한 객체 |
ViewResolver | Controller가 리턴한 뷰 이름을 기반으로 Controller 처리 결과를 생성할 뷰를 결정 |
Spring MVC의 주요 구성 요소의 요청 처리 과정
2. Spring MVC 설정
Web.xml 수정
<servlet></servlet> 태그로 dispatcherServlet가 사용할 설정 파일을 적어야한다.
<filter></filter>태그를 통해 요청이 깨지는 것을 방지한다.(한글 깨짐)
'IT > Spring' 카테고리의 다른 글
[Spring] 회원관리(3) 회원 리포지토리 테스트 케이스 작성 (0) | 2022.07.24 |
---|---|
[Spring] 회원관리(2) 회원 도메인과 리포지토리 만들기 (0) | 2022.06.30 |
Spring[6] - Layered Architecture & @Component (0) | 2022.06.28 |
[Spring] 회원 관리(1) 비즈니스 요구사항 정리_백엔드 개발 (0) | 2022.06.27 |
Spring[5] - Dependency Injection (0) | 2022.06.27 |