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>

번호 제목 글쓴이 날짜 조회 수
공지 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) 황제낙엽 2023.12.23 0
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 6
23 Spring프레임워크 소개문서 (2) 황제낙엽 2007.03.22 123
22 Spring프레임워크 소개문서 (1) 황제낙엽 2007.03.22 107
21 Cugain의 샘플프로젝트 jpetstore 분석기 - (1) jpetstore 설치 file 황제낙엽 2007.02.22 123
20 Cugain의 샘플프로젝트 jpetstore 분석기 - (7) PetStoreImpl.java 황제낙엽 2007.05.24 51
» Cugain의 샘플프로젝트 jpetstore 분석기 - (6) petstore-servlet.xml 분석 황제낙엽 2007.04.27 19
18 Cugain의 샘플프로젝트 jpetstore 분석기 - (5) applicationContext.xml 분석 황제낙엽 2007.04.21 232
17 Cugain의 샘플프로젝트 jpetstore 분석기 - (4) dataAccessContext-jta.xml 분석 황제낙엽 2007.04.21 27
16 Cugain의 샘플프로젝트 jpetstore 분석기 - (3) dataAccessContext-local.xml 분석 황제낙엽 2007.04.21 40
15 Cugain의 샘플프로젝트 jpetstore 분석기 - (2) web.xml 분석 황제낙엽 2007.03.20 92
14 IoC (Inversion of Control) 컨테이너에 대한 정리 황제낙엽 2007.02.21 50
13 자바지기 1차 오픈 소스 스터디 문서모음 file 황제낙엽 2007.01.30 46
12 Spring 프레임워크를 이용한 효율적인 개발 전략 1차 황제낙엽 2007.01.30 47
11 Spring framework jpetstore 샘플 분석기 - (6) jpetstore 예제로 살펴보는 Spring MVC와 iBatis 연동 황제낙엽 2007.01.18 48
10 Spring framework jpetstore 샘플 분석기 - (5) jpetstore 에서의 InternalResourceViewResolver 황제낙엽 2007.01.18 17
9 Spring framework jpetstore 샘플 분석기 - (4) jpetstore 에서의 HandlerMapping 황제낙엽 2007.01.18 36
8 Spring framework jpetstore 샘플 분석기 - (3) jpetstore 에서의 Spring MVC 설정 황제낙엽 2007.01.18 13
7 Spring framework jpetstore 샘플 분석기 - (2) jpetstore 에서의 Spring 초기 설정과 IoC 황제낙엽 2007.01.18 18
6 Spring framework jpetstore 샘플 분석기 - (1) jpetstore 설치하기 황제낙엽 2007.01.18 30
5 Spring WebFlow Introduction (웹개발을 직관적으로) 황제낙엽 2006.12.09 555
4 IoC(Inversion of Control)란 무엇인가? 황제낙엽 2006.12.09 93