Spring MVC 공부 중
Spring MVC가 작동하는 전체적인 그림은 Spring Reference에 있는 그림을 참고 하면 다음과 같습니다.
bk49.bmp그림에 순서가 적혀있지 않아서 번호를 붙여 봤는데 아무래도 저렇게 동작할 것 같습니다. Spring In Action에도 이와 비슷한 그림을 본 것 같아서 찾아 봤습니다.
bk50.bmp
Spring Reference에 있는 그림보다 깔끔한것 같습니다.
Dispatcher Sevlet은 흔히 web.xml 파일을 말하며에 <servlet>태그로 설정하며 이것이 Spring Reference에 있는 front controller에 해당합니다.
Handler Mapping은 요청에 따라 어떤 controller 객체가 사용될지에 대한 정보를 가지고 있으며 web.xml에 bean 설정파일에 하나 이상의 Handler Mappling들이 등록되어 있습니다.을 등록할 수 있습니다.
[#M_예제보기|닫기|<!-- Spring Front Controller -->
<servlet>
<servlet-name>springkorea</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springkorea</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
[#M_예제보기|닫기|<!-- Spring Front Controller -->
<servlet>
<servlet-name>springkorea</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springkorea</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
위에 있는 web.xml은(=Dispatcher Servlet) <servlet-name> 태그를 사용하여
springkorea-servlet.xml 이라는 Handler Mappingdispatcher Servlet을 사용한다고 정의 하고 있습니다.
<servlet-mapping> 태그는 '.html'로 끝나는 모든 URL들을
springkorea-servlet.xml에서 핸들링 하겠다고 정의한 것입니다.
위에는 handller mapping이 없습니다. handler mapping을 설정하지 않으면 기본으로 BeanNameUrlHandlerMapping을 사용합니다. 따라서 다음과 같이 설정한 것과 동일합니다.
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
_M#]
Controller는 Handler Mapping에 전부 등록이 되어있고 POJO 형태이고 DI를 사용합니다. ModleAndView 객체를 반환하는 메소드들이 있습니다.
ViewResolver는 반환된 ModelAndView 객체를 View에 맵핑합니다. 여기서 궁금한 것은 Handler Mapping과 분리 된 파일에 정의 해 둘 수도 있고 같은 곳에 둘 수도 있겠죠?? 아마 그래서 Spring In Action에서는 따로 그리고 Spring Reference에서는 Front Controller로 향하도록 그린것 같습니다. 이 bean에 있는 정보를 바탕으로 이 객체의 정보를 사용할 view에 객체를 전달하게 되는 듯 합니다. (여기서 부터 주춤거리기 시작합니다. ㅎㅎㅎ)
[#M_View Resolver 예제 보기|less..| <!-- View Resolvers -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
[#M_View Resolver 예제 보기|less..| <!-- View Resolvers -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
앞에는 /WEB-INF/jsp/를 붙이고 뒤에는 .jsp를 붙이는 식으로 View와 매칭 시켜주는것 같네요._M#]
View는 JSP나 HTML같은 파일을 말하는 것 같습니다.