본문 바로가기

IT/frameworks

Spring MVC 흐름

Spring Mvc의 흐름에 대해서 설명하려고 한다.


개발한지 6년차 되어 가지만 신입때 공부해서 준비한 자료를 보고나서야 기억이 난다.

사실 정확히 기억이 나질 않는다.

그래서 정리도 할겸 다시 숙지 할겸 하여 작성을 해본다.


MVC

스프링이 직접 제공하는 서블릿 기반의 MVC 프로엠워크이다.

스프링 서블릿 또는 스프링MVC라고 부른다.

컨트롤러 역활을 하는 DispatcherServlet을 핵심 엔진으로 사용한다.

로컬 서버를 구동시키고 "egov/hello.do" 입력하였다.

화면과 같이 HELLO WORD가 출력되었다.


추가한 소스는 Java의 egov 라는 폴더를 생성 하고

CLASS파일을 생성한뒤 사진과 같이 코드를 작성했다.

그다음으로

JSP 폴더에 egov 폴더를 생성 그 밑으로 egov.jsp파일을 생성하여 HElLO WORD를 작성하였다.


2가지 처리만으로 화면 출력을 할 수 있다.


흐름

Client -> Dispatcher Servlet -> HandlerMapng -> Controller -ViewResolver -> View

1. 클라이언트의 요청이 DispatcherServlet에 전달된다.

2. DispatcherServlet은 HandlerMapng을 사용하여 클라이언트의 요청이 전달될 Controller 객체를 구한다.

3. DispatcherServlet은 Controller 객체의 handleRequest() 메소드를 호출하여 클라이언트의 요청을 처리한다.

4. Controller.handleRequest() 메소드는 처리 결과 정보를 담은 ModelAndview 객체를 리턴한다.

5. DispatcherServlet은 ViewResolver로부터 처리 결과를 보여줄 View를 구한다.

6. View는 클라이언트에 전송할 응답을 생성한다.


정리

-DispatcherServlet-

클라이언트의 요청을 전달받는다. 

Controller에게 클라이언트의 요청을 전달하고 Controller가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다.

-HandlerMapping- 

클라이언트의 요청 URL을 어떤 Controller가 처리할지를 결정한다.

-Controller-

클라이언트의 요청을 처리한 뒤 그 결과를 DispatcherServlet에 알려준다. 

스트럿츠의 Action과 동일한 역활을 수행한다.

-ViewResolver-

Commander의 처리 결과를 보여줄 View를 결정한다.

-View-

Commander의 처리 결과를 보여줄 응답을 생성한다.