三种methodNameResolver分别为:
org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver
org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver
org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver
配置方法为:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:util="http://www.springframework.org/schema/util"
- xsi:schemaLocation="
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"
- default-lazy-init="true">
- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="urlMap">
- <map>
- <entry key="/abc/*"><ref bean="empFormController"></ref></entry>
- </map>
- </property>
- </bean>
- <bean id="empFormController" class="test.EmpMultiController">
- <property name="methodNameResolver" ref="cResolver">
- </property>
- </bean>
- <!-- 定义三种解析策略 -->
- <bean id="aResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" />
- <bean id="bResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
- <property name="mappings">
- <value> /abc/test.do=doTest</value>
- </property>
- </bean>
- <bean id="cResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
- <property name="paramName" value="func" />
- </bean>
- <bean id="startController" class="test.StartController" />
- <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
- </beans>
控制器代码:
- package test;
- import java.util.Date;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.bind.ServletRequestDataBinder;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
- public class EmpMultiController extends MultiActionController{
- public ModelAndView to_add(HttpServletRequest request, HttpServletResponse response){
- ModelAndView mav = new ModelAndView("add_emp");
- mav.addObject("deptList", new String[]{"sales","manage"});
- return mav;
- }
- public ModelAndView doTest(HttpServletRequest request, HttpServletResponse response){
- System.out.println("doTest");
- return null;
- }
- public ModelAndView add_emp(HttpServletRequest request, HttpServletResponse response,
- Emp emp){
- System.out.println(emp);
- return new ModelAndView("success");
- }
- @Override
- protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
- binder.registerCustomEditor(Date.class, new MyEditor());
- }
- }
当methodNameResolver分别设置为
aResolver访问方式为:
http://10.2.17.15:7080/SpringMVC/spring/abc/doTest
bResolver访问方式为:
http://10.2.17.15:7080/SpringMVC/spring/abc/test.do
cResolver访问方式为:
http://10.2.17.15:7080/SpringMVC/spring/abc/aaa?func=doTest
(aaa部分是我随便加的,没有也可以,只要保证?func=doTest即可)