프로그래밍/Spring

스프링 MVC를 이용한 요청 추적

guitarhero 2013. 4. 2. 17:48
728x90

사용자가 링크를 클릭하거나 폼을 전송하면 요청(Request)가 발생한다.  요청은 택배와 비슷하다.

브라우저를 떠나서 응답을 반환할 때까지 여러 번 멈춰 서면서 약간의 정보를 전달하거나 추가적인 정보를 입수한다.

요청은 사용자의 요구에 대한 정보를 실어 나른다. 최소한의 요청URL을 전달하며 전송한 폼에 담겨 있는 부가적인 정보도 전달한다.

 

요청이 가장 먼저 도착하는 곳은 DispatcherServlet이다. 대부분의 MVC프레임뭐크와 마찬가지로 스프링MVC도 요청을 프론트 컨트롤러 서블릿으로 보낸다. 프론트 컨트롤러는 요청처리의 책임을 다른 컴포넌트들에 위임해 실제 처리하게 하는 일반적인 웹 어플리케이션 패턴이다. DispatcherServlet이 프론트 컨트롤러에 해당한다.

 

DispatcherServlet은 요청을 스프링 MVC컨트롤러로 보내는 역할을 한다. 요청을 어느 컨트롤러로 보낼지 알아내기 위해서 핸들러 맵핑의 도움을 받는다 . 핸들러맵핑은 요청에 담긴 URL을 참고해서 결정한다.

 

요청은 해당 컨트롤러에 전송한 정보를 내려놓고 처리하기를 기다린다.(사실 잘 만들어진 컨트롤러는 자기 자신이 직접 정보를 처리하지 않고 비지니스 로직에 대한 책임을 하나 이상의 서비스 객체에게 위임한다고 한다.)

 

컨트롤러에 의해 비지니스 로직이 수행되고 나면 사용자에게 반환될 정보를 만드는데 이런 정보를 모델이라고 한다. 사용자가 볼 수있는 형식으로 바꿔서 뷰로 보낸다.(보통JSP)

 

컨트롤러가 마지막으로 하는일은 모델데이터를 만들고 결과를 렌더링할 뷰의 이름을 식별하는 작업이다. 그런다음 모델과 뷰 이름과 요청을  DispatcherServlet으로 돌려 보낸다.

 

컨트롤러가 특정뷰에 종속되지 않도록 하기 위해서 컨트롤러는 직접 특정 JSP를 식별하지 않고 뷰이름을 DispatcherServlet으로 논리적인 이름을 돌려 보낸다. DispatcherServlet는 이를 뷰리졸버에게 논리적 뷰이름을 실제 뷰 구현체에 맵핑되도록 요청한다.

 

이결과로 뷰를 알게 되면 요청이 마지막으로 들르는 곳은 모델 데이터를 전달받을 뷰 구현체다. 뷰는 모델 데이터를 이용해서 응답객체를 통해 사용자에게 전달할 페이지를 표현한다.

 

-Spring in Action 참조 정리 - to be continued...

728x90

'프로그래밍 > Spring' 카테고리의 다른 글

[AOP]Aop사용시 추가사항  (0) 2017.10.27
Spirng MVC 뷰 리졸빙  (0) 2013.04.03
XML에서 트랜잭션 선언  (0) 2013.04.02