sitelink1  
sitelink2  
sitelink3  
extra_vars6  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<!--
  - DispatcherServlet application context for the Spring web MVC
  - implementation of JPetStore's web tier.
  -->

설명이 필요없다. 해석 그대로 Spring Web MVC용 DispatcherServlet application 컨텍스트라고 한다.

<beans>

 <!-- ========================= VIEW DEFINITIONS ========================= -->

VIEW영역을 JSP로 사용한다. JSP파일을 열어보니 JSTL을 사용하였다.
추후에 SITEMESH와 VELOCITY 그리고 STRUTS까지 연동해 볼 예정이다.

 <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/spring/"/>
  <property name="suffix" value=".jsp"/>
 </bean>


 <!-- ========================= DEFINITIONS OF PUBLIC CONTROLLERS ========================= -->

HandlerMapping에는 두가지가 있다. BeanNameUrlHandlerMapping과  SimpleUrlHandlerMapping 이다.
이 부분은 첫번째의 BeanNameUrlHandlerMapping을 이용하여 HandlerMapping을 처리하는 부분이다.
보다 자세한 내용은
여기 를 참조하기 바란다.

 <bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

 <bean name="/shop/addItemToCart.do" class="org.springframework.samples.jpetstore.web.spring.AddItemToCartController">
  <property name="petStore" ref="petStore"/>
 </bean>

bean태그의 name속성은 실제 브라우저의 url에 해당한다. 그리고 해당 url의 요청을 class속성에 정의된 Controller로 연결해 준다.
Controller클래스에서는 property태그에 정의된 name과 value등으로 파라미터를 전해 받는다.

 <bean name="/shop/checkout.do" class="org.springframework.samples.jpetstore.web.spring.ViewCartController">
  <property name="successView" value="Checkout"/>
 </bean>

 <bean name="/shop/index.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
  <property name="viewName" value="index"/>
 </bean>

 <bean name="/shop/newAccount.do" class="org.springframework.samples.jpetstore.web.spring.AccountFormController">
  <property name="petStore" ref="petStore"/>
  <property name="validator" ref="accountValidator"/>
  <property name="successView" value="index"/>
 </bean>

 <bean name="/shop/removeItemFromCart.do" class="org.springframework.samples.jpetstore.web.spring.RemoveItemFromCartController"/>

 <bean name="/shop/signoff.do" class="org.springframework.samples.jpetstore.web.spring.SignoffController"/>

 <bean name="/shop/searchProducts.do" class="org.springframework.samples.jpetstore.web.spring.SearchProductsController">
  <property name="petStore" ref="petStore"/>
 </bean>

 <bean name="/shop/signon.do" class="org.springframework.samples.jpetstore.web.spring.SignonController">
  <property name="petStore" ref="petStore"/>
 </bean>

 <bean name="/shop/signonForm.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
  <property name="viewName" value="SignonForm"/>
 </bean>

 <bean name="/shop/updateCartQuantities.do" class="org.springframework.samples.jpetstore.web.spring.UpdateCartQuantitiesController"/>

 <bean name="/shop/viewCart.do" class="org.springframework.samples.jpetstore.web.spring.ViewCartController">
  <property name="successView" value="Cart"/>
 </bean>

 <bean name="/shop/viewCategory.do" class="org.springframework.samples.jpetstore.web.spring.ViewCategoryController">
  <property name="petStore" ref="petStore"/>
 </bean>

 <bean name="/shop/viewItem.do" class="org.springframework.samples.jpetstore.web.spring.ViewItemController">
  <property name="petStore" ref="petStore"/>
 </bean>

 <bean name="/shop/viewProduct.do" class="org.springframework.samples.jpetstore.web.spring.ViewProductController">
  <property name="petStore" ref="petStore"/>
 </bean>


 <!-- ========================= DEFINITIONS OF PROTECTED CONTROLLERS ========================= -->

SimpleUrlHandlerMapping는 BeanNameUrlHandlerMapping에 비해 보다 강력한 기능을 제공하므로 설정하는 변수들 또한 복잡해 보인다.

 <bean id="secureHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="interceptors">
   <list>
    <ref bean="signonInterceptor"/>
   </list>
  </property>

interceptors프로퍼티는 요청url이 Controller에게 제어가 넘겨지기 전에 수행되는 부분이다.

  <property name="urlMap">
   <map>
    <entry key="/shop/editAccount.do" value-ref="secure_editAccount"/>
    <entry key="/shop/listOrders.do" value-ref="secure_listOrders"/>
    <entry key="/shop/newOrder.do" value-ref="secure_newOrder"/>
    <entry key="/shop/viewOrder.do" value-ref="secure_viewOrder"/>
   </map>
  </property>

urlMap프로퍼티는 요청url을 Controller와 연결하는 역활을 한다.
key가 요청url이고 value-ref가 실행될 Controller를 나타낸다.
value-ref에 정의된 Controller들은 하단부에 정의되어 있다.

 </bean>

 <bean id="signonInterceptor" class="org.springframework.samples.jpetstore.web.spring.SignonInterceptor"/>

SignonInterceptor.java 클래스를 열어보았지만 주석이 한줄도 없다.
단지 코드를 보면 userSession이 있는지 없는지에 따라 로그인 상태 여부를 검사하고 있다.

http://openframework.or.kr/framework_reference/spring/ver2.x/html/mvc.html#mvc-handlermapping-interceptor
여기서 HandlerInterceptor인터페이스의 쓰임새를 공부하자.

 <bean id="secure_editAccount" class="org.springframework.samples.jpetstore.web.spring.AccountFormController">
  <property name="petStore" ref="petStore"/>
  <property name="validator" ref="accountValidator"/>
  <property name="successView" value="index"/>
 </bean>

 <bean id="secure_listOrders" class="org.springframework.samples.jpetstore.web.spring.ListOrdersController">
  <property name="petStore" ref="petStore"/>
 </bean>

 <bean id="secure_newOrder" class="org.springframework.samples.jpetstore.web.spring.OrderFormController">
  <property name="petStore" ref="petStore"/>
  <property name="validator" ref="orderValidator"/>
 </bean>

 <bean id="secure_viewOrder" class="org.springframework.samples.jpetstore.web.spring.ViewOrderController">
  <property name="petStore" ref="petStore"/>
 </bean>

</beans>

번호 제목 글쓴이 날짜 조회 수
37 Spring MVC 어플리케이션 개발 <11> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 393
36 Spring MVC 어플리케이션 개발 <10> 도메인 객체 수정시 변경 사항 황제낙엽 2007.05.27 237
35 Spring MVC 어플리케이션 개발 <9> JSP 화면 작성 황제낙엽 2007.05.27 243
34 Spring MVC 어플리케이션 개발 <8> Spring기반 iBatis DAO 작성 황제낙엽 2007.05.27 241
33 Spring MVC 어플리케이션 개발 <7> Spring과 iBatis 연동을 위한 준비 황제낙엽 2007.05.26 218
32 Spring MVC 어플리케이션 개발 <5> MVC 컨트롤러 작성 황제낙엽 2007.05.26 221
31 Spring MVC 어플리케이션 개발 <4> 화면 요구 작성 황제낙엽 2007.05.26 233
30 Spring MVC 어플리케이션 개발 <3> Web Application Context 파일 작성 황제낙엽 2007.05.26 288
29 Spring MVC 어플리케이션 개발 <2> Spring MVC 구동을 위한 web.xml 작성 황제낙엽 2007.05.26 229
28 Spring MVC 어플리케이션 개발 <1> 프로젝트 디렉토리 생성 황제낙엽 2007.05.26 243
27 Struts에서 Spring으로의 이주 가이드 - Spring (java/j2ee Application Framework) 황제낙엽 2006.02.27 224
26 실습 STEP1 - 기초편 (Hello Spring 출력) file 황제낙엽 2007.04.27 268
25 Bean 생명주기 관리 황제낙엽 2007.03.23 222
24 Spring프레임워크 소개문서 (3) 황제낙엽 2007.03.22 236
23 Spring프레임워크 소개문서 (2) 황제낙엽 2007.03.22 295
22 Spring프레임워크 소개문서 (1) 황제낙엽 2007.03.22 289
21 Cugain의 샘플프로젝트 jpetstore 분석기 - (1) jpetstore 설치 file 황제낙엽 2007.02.22 363
20 Cugain의 샘플프로젝트 jpetstore 분석기 - (7) PetStoreImpl.java 황제낙엽 2007.05.24 244
» Cugain의 샘플프로젝트 jpetstore 분석기 - (6) petstore-servlet.xml 분석 황제낙엽 2007.04.27 220
18 Cugain의 샘플프로젝트 jpetstore 분석기 - (5) applicationContext.xml 분석 황제낙엽 2007.04.21 449