2007년 05월 12일
Spring MVC ... (1) - DispatcherServlet
으음... 예전에도 이 부분에 해당하는 포스팅을 한 적이 있는것 같다. 항상, 게으름에 제자리를 맴도는 것 같네... ^^;
Spring MVC 는 다른 MVC 프레임워크와 동일하게 앞단에 프론트 컨트롤러를 두고있다.
DispatcherServlet 은 web.xml 에 정의한 서블릿을 의미한다.
web.xml 에서의 설정을 살펴보면 다음과 같다. 서블릿을 하나 등록하고 해당 서블릿에 매핑을 시켜주는것이 전부이다.
<web-app>
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
</web-app>
다음은 Spring MVC 의 흐름이다.

1. 어떤 요청이 들어오면 DispatcherServlet (프론트 컨트롤러) 이 해당 요청을 받는다. 모든 요청의 진입점이 되는 것이다.
2. HandlerMapping을 통해 해당 Request에 맞는 Controller를 찾아 매핑 시킨다
3. 매핑된 Handler의 메소드를 호출한다
4. Request를 처리 후 ModelAndView객체가 존재할 경우 ModelAndView 객체를 리턴한다.
뱀발을 달자면 1번과 2번 단계 사이에 locale 을 판단하게 된다.
한국어만 지원을 하는 웹페이지를 만든다면 크게 상관은 없겠지만, 여러가지 언어를 지원하게 될 경우 locale 별로 판단하여 보여주는 메시지를 변경시켜주는 것은 상당히 메리트가 있는 작업이다. ^^; 뭐 다들 알고 있는 이야기 꺼낸다고 돌 던지지 마세요~
Spring MVC 에서의 applicationContext는 WebApplicationContext 를 사용하고 해당 파일의 이름은 기본적으로 [servlet-name]-servlet.xml 파일에 정의를 할 수 있다.
위에서 web.xml 의 DispatcherServlet 정의한 것을 예로 들경우 example-servlet.xml 이 applicationContext 파일이 되는 것이다.
Controllers : MVC 의 c 에 해당하는 컴포넌트
- Handler mappings : 특정 컨트롤러에 Request 를 매핑시킨다.
- View resolver : view 이름을 view 로 해석한다.
- Locale resolver : 클라이언트의 locale 을 해석하여 국제화된 view 를 제공할 수 있게한다.
- Theme resolver : 개인화 페이지(layout)를 제공하는것 처럼 웹 어플리케이션이 사용할 수 있는 테마를 해석한다.
- multipart file resolver : 파일업로드 기능을 제공한다.
- Handler exception resolver : 예외 발생시 특정 view 로 보내거나, 좀 더 복잡한 예외 핸들링 코드를 구현하는 기능을 제공
# by | 2007/05/12 20:57 | Spring | 트랙백(1) | 덧글(2)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : 13.2. The DispatcherServlet
example org.springframework.web.servlet.DispatcherServlet 1 example ...more
레퍼런스에 나와있는 야그~ ^^;