13.4.1. BeanNameUrlHandlerMapping
전달 받은 Request를 application context에 정의해둔 특정 bean의 이름으로 매핑시킵니다.
예를 들어 http://samples.com/editaccount.form 이라는 request를 처리할 컨트롤러를 다음과 같이 등록할 수 있습니다.
<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에 설정해야 합니다.
...
<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을 만들어서 사용하기 때문입니다.