IT/Spring

Spring[7] - Spring MVC 소개

올빼밋. 2022. 6. 30. 20:34
728x90

<<<<<< 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>태그를 통해 요청이 깨지는 것을 방지한다.(한글 깨짐)

 

 

728x90