处理
http://.../deleteUser.html -- 将被 UserController.deleteUser() 处理
Spring MVC中的MultiActionController用法详解(2)
时间:2011-03-24 隔叶黄莺
但是,你应该注意到了,上面的 com.unmi.UserController 配 置了两次,一来碍眼、二来原来只要 Singleton 的 UserController 实例不再是那么回事了。所以要引入 SimpleUrlHandlerMapping 对 Bean 配置进一步紧凑一下:
<bean id="userController" class="com.unmi.UserController"/>
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHa ndlerMapping">
<property name="mappings">
<props>
<prop key="/updateUser.html">userController</prop>
<prop key="/deleteUser.html">userController</prop>
</props>
</property>
</bean>
<bean id="userController" class="com.unmi.UserController"/>
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHa ndlerMapping">
<property name="mappings">
<props>
<prop key="/updateUser.html">userController</prop>
<prop key="/deleteUser.html">userController</prop>
</props>
</property>
</bean>
说是紧凑,倒不如说 Bean 配置复杂了,反正不用配置两个相 同的 UserController 实例了。还是通过上面那两个 URL 来访问 执行到相应的方法。
除了缺省的方法名解析器 InternalPathMethodNameResolver( 注意了,Spring 中缺省的 XXX 很多用 InternalXXX 的命名),还 有两种其他类型的方法名解析器:
·ParameterMethodNameResolver -- 根据请求中的参数解析执 行方法名,相当于 Struts 的 DispathAction
·PropertiesMethodNameResolver -- 根据查询一个 key/value 列表解析执行方法名,相当于 Struts 的 MappingDispatchAction(用得很少)
下面逐一介绍使用上面两种方法名解析器时的 Bean 配置及相 应访问的 URL。
使用 ParameterMethodNameResolver 时的 Bean 配置(为简单 起见,又用回了缺省的 HandlerMapping):
<bean name="/user.html" class="com.unmi.UserController">
<property name="methodNameResolver">
<ref bean="methodNameResolver"/>
</property>
</bean>
<bean name="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.Par ameterMethodNameResolver">
<property name="paramName">
<value>method</value>
</property>
</bean>
<bean name="/user.html" class="com.unmi.UserController">
<property name="methodNameResolver">
<ref bean="methodNameResolver"/>
</property>
</bean>
<bean name="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.Par ameterMethodNameResolver">
<property name="paramName">
<value>method</
|