- ParameterMethodNameResolver
- InternalPathMethodNameResolver
- PropertiesMethodNameResolver
package cn.iwoo.server.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class BController extends MultiActionController { public ModelAndView doSearch(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println(this.getClass() + "." + "doSearch()"); return new ModelAndView(""); } }
方法的定义必须符合下面的格式
Java代码
public (ModelAndView | Map | String | void) actionName(HttpServletRequest request, HttpServletResponse response);
定义ViewResolver
Java代码
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> <property name="prefix"><value>/WEB-INF/jsp/</value></property> <property name="suffix"><value>.jsp</value></property> </bean>
定义UrlHandlerMapping
<bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/b/*"><ref bean="bController"></ref></entry> </map> </property> </bean>
定义MethodNameResolver
一共定义了3个不同类型的MethodNameResolver.
<!-- MethodNameResolver Definition --> <bean id="bMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="method"></property> <property name="logicalMappings"> <props> <prop key="doSearch">doSearch</prop> </props> </property> </bean> <bean id="cMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver"> </bean> <bean id="dMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <value> /b/page.html=doSearch </value> </property> </bean>
定义Controller
<!-- Controller Definition --> <bean id="bController" class="cn.iwoo.server.controller.BController"> <!-- <property name="methodNameResolver"><ref local="bMethodNameResolver"/></property> --> <!-- <property name="methodNameResolver"><ref local="cMethodNameResolver"/></property> --> <property name="methodNameResolver"><ref local="dMethodNameResolver"/></property> </bean>
测试
下面是对应于不同MethodNameResolver的测试url.
http://localhost:9080/cn.iwoo/spring/b?method=doSearch
http://localhost:9080/cn.iwoo/spring/b/doSearch
http://localhost:9080/cn.iwoo/spring/b/page.html
注:/b/是我的controller的映射前缀,在PropertiesMethodNameResolver的mappings配置里面,网址必须是/b/开头,也就是controller的前缀也需要写进去. 这是我测试的结果,不知是否必须这样.