Spring mvc 中MultiActionController的三种methodNameResolver

本文介绍了Spring MVC中多动作控制器(MultiActionController)的配置方法,并详细展示了三种不同的methodNameResolver实现方式及其对应的请求路径配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三种methodNameResolver分别为:

org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver

org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver

org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver

配置方法为:

 

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xmlns:util="http://www.springframework.org/schema/util"  
  7.     xsi:schemaLocation="  
  8.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  9.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  10.             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  11.             http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd  
  12.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
  13.             http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"  
  14.     default-lazy-init="true">  
  15.       
  16.     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  17.     <property name="urlMap">    
  18.         <map>    
  19.             <entry key="/abc/*"><ref bean="empFormController"></ref></entry>    
  20.         </map>    
  21.     </property>   
  22.       
  23.     </bean>  
  24.     <bean id="empFormController" class="test.EmpMultiController">  
  25.         <property name="methodNameResolver" ref="cResolver">  
  26.         </property>  
  27.     </bean>  
  28.     <!-- 定义三种解析策略 -->  
  29.     <bean id="aResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" />  
  30.     <bean id="bResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">  
  31.          <property name="mappings">    
  32.             <value> /abc/test.do=doTest</value>    
  33.         </property>    
  34.     </bean>  
  35.     <bean id="cResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">  
  36.         <property name="paramName" value="func" />  
  37.     </bean>  
  38.       
  39.     <bean id="startController" class="test.StartController" />  
  40.     <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">  
  41.         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>  
  42.         <property name="prefix" value="/WEB-INF/jsp/" />  
  43.         <property name="suffix" value=".jsp" />  
  44.     </bean>  
  45. </beans>  
  46.       

控制器代码:

[java]  view plain copy
  1. package test;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7.   
  8. import org.springframework.web.bind.ServletRequestDataBinder;  
  9. import org.springframework.web.servlet.ModelAndView;  
  10. import org.springframework.web.servlet.mvc.multiaction.MultiActionController;  
  11.   
  12. public class EmpMultiController extends MultiActionController{  
  13.       
  14.     public ModelAndView to_add(HttpServletRequest request, HttpServletResponse response){  
  15.         ModelAndView mav = new ModelAndView("add_emp");  
  16.         mav.addObject("deptList"new String[]{"sales","manage"});  
  17.         return mav;  
  18.     }  
  19.       
  20.     public ModelAndView doTest(HttpServletRequest request, HttpServletResponse response){  
  21.         System.out.println("doTest");  
  22.         return null;  
  23.     }  
  24.       
  25.     public ModelAndView add_emp(HttpServletRequest request, HttpServletResponse response,   
  26.              Emp emp){  
  27.         System.out.println(emp);  
  28.         return new ModelAndView("success");  
  29.     }  
  30.   
  31.     @Override  
  32.     protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {  
  33.         binder.registerCustomEditor(Date.classnew MyEditor());  
  34.     }  
  35.       
  36. }  


当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即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值