Whiteship's Note

13.4.1. BeanNameUrlHandlerMapping

Spring/Chapter 13 : 2007. 5. 11. 17:52


전달 받은 Request를 application context에 정의해둔 특정 bean의 이름으로 매핑시킵니다.

예를 들어 http://samples.com/editaccount.form 이라는 request를 처리할 컨트롤러를 다음과 같이 등록할 수 있습니다.
<beans>
  <bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

  <bean name="/editaccount.form" class="org.springframework.web.servlet.mvc.SimpleFormController">
    <property name="formView" value="account"/>
    <property name="successView" value="account-created"/>
    <property name="commandName" value="account"/>
    <property name="commandClass" value="samples.Account"/>
  </bean>
<beans>


formView 는 입력받을 view 이름이고 seccessView 는 성공적으로 폼에서 객체를 입력받은 뒤 submit 할 view 이름이고 commandName은 폼에서 입력받은 값들을 바인딩할 객체이며 그 객체의 타입은 commandClass에서 지정합니다.

~~~.form 로 끝나는 요청을 distpacher에서 받아서 위에 설정해둔 handler Mapping을 사용하도록 하려면 다음과 같이 web.xml에 설정해야 합니다.
<web-app>
    ...
    <servlet>
        <servlet-name>sample</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

   <!-- maps the sample dispatcher to *.form -->
    <servlet-mapping>
        <servlet-name>sample</servlet-name>
        <url-pattern>*.form</url-pattern>
    </servlet-mapping>
    ...
</web-app>

BeanNameUrlHandlerMapping을 사용할 때는 굳이 위의 예제 처럼 bean으로 등록해줄 필요가 없습니다. 아무런 HandlerMapping도 등록되어 있지 않다면 Dispatcher가 알아서 BeanNameUrlHandlerMapping을 만들어서 사용하기 때문입니다.

사용자 삽입 이미지


top

Write a comment.