티스토리 뷰

Development/Spring

Spring MVC 구조 및 특징

쥬리리리 2022. 4. 11. 11:23

MVC (Model-View-Controller)

Model : 데이터

View : 실제로 렌더링되어 보이는 페이지

Controller : 클라이언트의 요청을 받고 응답을 준다

 

 

MVC 패턴은 Dispatcher Servlet을 중심으로 동작합니다.

Dispatcher Servlet은 Servlet의 한 종류로 Servlet에 대해 먼저 알아보겠습니다.

 

Servlet 특징

  • JAVA기반의 웹 애플리케이션 프로그래밍 기술
  • 웹 기반의 요청에 대해 동적으로 처리해주는 역할
  • HttpServlet이라는 JAVA 클래스를 상속
  • 요청, 응답의 흐름을 간단한 메서드 호출로 체계적으로 다룰 수 있게 해주는 기술
  • 클라이언트가 요청 시, 결과를 다시 전송해주는 프로그램

 

 

 

Servlet의 생명주기

 

init() - 서블릿이 처음으로 요청될 때 초기화 하는 메서드

 

Service() - 서블릿 컨테이너가 요청을 받고 응답을 내려줄 때 필요한 서블릿 메서드

 

destroy() - 사용되지 않는 서블릿 클래스를 주기적으로 서블릿 컨테이너가 메서드를 호출하여 제거

 


Servlet Container?

 : Servlet을 담고 관리해주는 컨테이너입니다.

 

Servlet Container  특징

1. 생명주기 관리

    → 요청이 들어오면 적절한 서블릿 메서드를 찾아 동작

 

2. 통신 지원

    → 클라이언트의 요청을 받고 응답을 보낼 수 있게 웹 서버와 소켓을 만들어 통신

 

3. 멀티스레딩 관리

    → 서블릿 요청 시 스레드를 생성하여 작업 수행, 동시에 여러 요청이 들어와도 동시다발적인 작업 관리

 

4. 선언적인 보안관리

    → 보안 관련 기능 지원

 


 

Dispatcher Servlet?

 : Servlet Container에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 중앙집중식으로 처리해주는 프론트 컨트롤러, HttpServlet을 상속 받아 사용, Servlet으로 동작합니다.

 

* web.xml에 dispatcher servlet에 대한 설정을 해주면 모든 요청이 들어왔을 때 Dispatcher servler으로 가게 됩니다.

 

 

MVC FLOW

: 요청이 들어오게 되면 Servlet Container는 Dispatcher Servlet으로 일을 위임합니다.

 

 

: DIspatcher Servlet은 Handler Mapping을 통해 적절한 Controller를 찾습니다.

 

: 전달받은 Contrller를 Handler Adapter로 넘겨 Controller 메소드를 Handler Adapter가 실행하고 , Controller에서는 Model(Data)값과 View(page name)을 넘겨줍니다. 

Handler Adapter는 ModelAndView형태로 바꿔줍니다. 

 

: Controller에서 보내온 VIew 이름을 토대로 View Resolver가 View를 검색합니다.

 

: 최종적으로 View에 Model(data)을 포함합니다.

 

 

 

 

결론적으로는 Spring MVC는 위와 같은 로직을 실행하게 됩니다.

 

 

 

* Handler Mapping : 적절한 Controller를 찾아서 반환

* Handler Adapter : Controller 메서드를 실행

* Controller : 요청받은 일에 대해 최종적으로 보여줄 View 이름, Data를 응답해줌

* View Resolver : View를 검색함

* VIew : data를 렌더링하여 사용자에게 보여줌

 

 

실행순서 : Request -> Servlet Contanier -> DispatcherServlet -> HandlerMapping  -> Controller -> DispatcherServlet -> ViewResolver -> View -> Response

 

'Development > Spring' 카테고리의 다른 글

Spring IoC / DI 특징  (0) 2022.04.05
댓글
링크
최근에 올라온 글
Total
Today
Yesterday