springMVC3学习(五)--MultiActionController

Spring提供一个多动作控制器,使用它你可以将几个动作合并在一个控制器里,这样可以把功能组合在一起。

多动作控制器存在在一个单独的包中——org.springframework.web.mvc.multiaction——它能够将请求映射到方法名,

然后调用正确的方法。比如当你在一个控制器中有很多公共的功能,但是想多个入口到控制器使用不同的行为,

使用多动作控制器就特别方便。

MultiActionController类实现

类定义:public class MultiActionController extends  AbstractController implements LastModified,

继承了AbstractController,并实现了LastModified接口,默认返回-1;

核心属性:

delegate: 功能处理的委托对象,即我们要调用请求处理方法所在的对象,默认是this;

methodNameResolver:功能处理方法名解析器,即根据请求信息来解析需要执行的delegate的功能处理方法的方法名。


接下来看一个使用ParameterMethodNameResolver的例子

  1. import javax.servlet.http.HttpServletRequest; 
  2. import javax.servlet.http.HttpServletResponse; 
  3. import org.springframework.web.servlet.ModelAndView; 
  4. import org.springframework.web.servlet.mvc.multiaction.MultiActionController; 
  5.  
  6. public class UserController extends MultiActionController { 
  7.      
  8.     public ModelAndView add(HttpServletRequest request,HttpServletResponse response) { 
  9.         ModelAndView mv = new ModelAndView();  
  10.         mv.addObject("message","add");  
  11.         mv.setViewName("add");  
  12.         return mv;  
  13.     } 
  14.     public ModelAndView delete(HttpServletRequest request,HttpServletResponse response) { 
  15.         ModelAndView mv = new ModelAndView();  
  16.         mv.addObject("message","delete");  
  17.         mv.setViewName("delete");  
  18.         return mv;  
  19.     } 
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 UserController extends MultiActionController {
	
	public ModelAndView add(HttpServletRequest request,HttpServletResponse response) {
		ModelAndView mv = new ModelAndView(); 
		mv.addObject("message","add"); 
		mv.setViewName("add"); 
		return mv; 
	}
	public ModelAndView delete(HttpServletRequest request,HttpServletResponse response) {
		ModelAndView mv = new ModelAndView(); 
		mv.addObject("message","delete"); 
		mv.setViewName("delete"); 
		return mv; 
	}
}

springMVC.xml配置
  1. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
  2.       <property name="mappings"> 
  3.             <props> 
  4.                   <prop key="userAction.do">userAction</prop> 
  5.         </props> 
  6.       </property> 
  7. </bean> 
  8. <bean id="userAction" class="com.itmyhome.UserController"> 
  9.       <property name="methodNameResolver"> 
  10.         <bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> 
  11.            <!-- 指定参数名为action --> 
  12.            <property name="paramName" value="action" /> 
  13.         </bean> 
  14.       </property> 
  15. </bean> 
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      <property name="mappings">
            <props>
                  <prop key="userAction.do">userAction</prop>
	    </props>
      </property>
</bean>
<bean id="userAction" class="com.itmyhome.UserController">
      <property name="methodNameResolver">
	    <bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		   <!-- 指定参数名为action -->
		   <property name="paramName" value="action" />
	    </bean>
      </property>
</bean>

测试URL:

http://localhost:8080/spring_MultiActionController/userAction.do?action=add

http://localhost:8080/spring_MultiActionController/userAction.do?action=delete


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值