Spring MVC Architecture and Dispatcher servlet?


 이번 Posting에서는 Spring의 MVC 구조와 dispatcher servlet에 관하여 이야기를 진행할 예정입니다.

MVC Architecture

 웹을 그래도 조금 해봤다하는 사람은 MVC 구조에 대한 것을 모를리가 없을 것이다. 
MVC란 비즈니스 로직 처리를 하는 모델(Model), 화면을 보여주는 뷰(View), 제어를 담당하는 컨트롤러 (Controller)가 Client로부터의 요청을 처리하는 구조를 말합니다.

 이 MVC Architecture는 보통 front controller 패턴과 함께 사용합니다. front controller? front controller는 무엇일까요? 이 녀석은 주로 제일 앞 단에서 Client의 요청을 처리하는 녀석이라고 생각하시면 됩니다.


 위 code는 제가 개발 중인 Spring project의 web.xml의 일부입니다. 보시면 servlet-class 태그에서 DispatcherServlet을 사용할 수 있도록 정의 하고 있는 것을 볼 수 있습니다.

또한 init-param 태그 안의 param-value 태그를 보시면 classpath를 설정하여 현재 project 안의 servlet.xml 파일을 매핑하고 있는 것을 볼 수 있습니다.

이러한 로직을 전제로 흐름을 생각하면 다음과 같습니다.



client로부터 요청이 들어오면 web.xml에서 매핑한 DispatcherServlet이 해당 요청을 받음.


 위 그림은 dispatcher-servlet.xml 입니다. 17 line을 보면 annotation-driven이라고 되어있습니다.  이 것은 annotation 기반을 사용하겠다는 것이고 @Controller을 붙이면 Controller를 사용할 수 있게 되는 것입니다.



이후 controller에 도착을 하게 됩니다.



 보시면 RequestMapping 이라는 annotation을 확인하실 수 있습니다. 이 녀석은 /main, GET으로 요청된 녀석을 담당한다고 생각하면 된다. 이후 return "main"을 한 후 다시 dispatcher-servlet으로 간다!!

dispatcher-servlet에 있는 bean 태그를 확인하면 prefix, surfix에 맞는 페이지를 정해 client에게 response를 보낸다고 생각하면 된다.


이제 전체적으로 생각을 해보자.



위와 같은 로직으로 client로부터 요청을 처리합니다.

이 블로그의 인기 게시물

웹툰 무료로 볼 수 있는 사이트

BackJoon 1011, Fly me to the alpha centauri, 규칙 찾기 문제

BaekJoon 6591, 이항 쇼다운 조합문제