SpringMVC 中如何将MultiActionController和CommandController结和使用

在利用Spring MVC 时,或许会想到把MultiActionController和CommandController结全起来全用,使你的Controller功能更加强大。现在就有这样一个例子,能使你的一个Controller既可以处理多个URL请求,又可以接受form表单
Controller源码如下:
java 代码

java 代码
 
  1. package com.betop.probe.controller.study;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. import org.springframework.validation.BindException;  
  10. import org.springframework.web.bind.ServletRequestDataBinder;  
  11. import org.springframework.web.servlet.ModelAndView;  
  12. import org.springframework.web.servlet.mvc.AbstractCommandController;  
  13.   
  14. import com.betop.probe.domain.MasterUser;  
  15.   
  16. public class UserMultiActionController3 extends AbstractCommandController{  
  17.       
  18.     public UserMultiActionController3(){  
  19.         this.setCommandClass(MasterUser.class);  
  20.     }  
  21.       
  22.     public ModelAndView demo1(HttpServletRequest req, HttpServletResponse resp)throws Exception {  
  23.           
  24.         Map<String, Object> model = new HashMap<String, Object>();  
  25.         model.put("message""这是MultiActioncontroller的第三种配置!");  
  26.         return new ModelAndView("study/MultiActionControllerView3.vm", model);  
  27.     }  
  28.       
  29.     public ModelAndView demo2(HttpServletRequest req, HttpServletResponse resp)throws Exception{  
  30.           
  31.           
  32.         MasterUser user = getCommand(req, resp);  
  33.           
  34.         Map<String, Object> model = new HashMap<String, Object>();  
  35.           
  36.         model.put("user", user);  
  37.           
  38.         return new ModelAndView("study/result.vm", model);  
  39.         //return super.handleRequest(req, resp);  
  40.     }  
  41.       
  42.     private MasterUser getCommand(HttpServletRequest req, HttpServletResponse resp) throws Exception{  
  43.           
  44.         MasterUser command = (MasterUser)getCommand(req);  
  45.         ServletRequestDataBinder binder = bindAndValidate(req, command);  
  46.         BindException errors = new BindException(binder.getBindingResult());  
  47.           
  48.         return command;  
  49.     }  
  50.   
  51.     @Override  
  52.     protected ModelAndView handle(HttpServletRequest request,  
  53.             HttpServletResponse response, Object command, BindException errors)  
  54.             throws Exception {  
  55.         // TODO Auto-generated method stub  
  56.         return null;  
  57.     }  
  58.   
  59. }  

配置如下:
xml 代码
 
  1.        <bean id="testMulti3" class="com.betop.probe.controller.study.UserMultiActionController3"/>  
  2.   
  3. <bean id="proxyController" class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">  
  4.     <property name="methodNameResolver">  
  5.         <ref bean="paraMethodResolver"/>  
  6.     </property>  
  7.   
  8.     <property name="delegate">  
  9.         <ref bean="testMulti3"/>  
  10.     </property>  
  11. </bean>  
  12.   
  13. <bean id="SimpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  14.        <property name="mappings">  
  15.            <props>  
  16.         <prop key="/test/*.htm">proxyController</prop>  
  17.            </props>  
  18.        </property>  
  19.    </bean>  

这样你就可以通过URL:http://host/project/test/demo2.htm来提交你的表单
URL:http://host/project/test/demo1.htm来访问另外一个方法。
上面的做法是通过 getCommand方法,借用了父类里的一些功能把请求参数转换为你想要的对象。

当然,你也可以不去写getCommand方法,对于方法demo2也可以写成如下:
java 代码
  1. public ModelAndView demo2(HttpServletRequest req, HttpServletResponse resp)throws Exception{
  2.      return super.handleRequest(req, resp);
  3. }
这样你就要把demo2中功能复制到 handle方法中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC 和 MyBatis 是两个在 Java Web 开发非常常用的框架。 Spring MVC 是一个基于 MVC(Model-View-Controller)设计模式的轻量级 Web 框架,它提供了强大的控制反转(IoC)和面向切面编程(AOP)的功能。它通过将请求和响应的处理分离,使得开发人员可以更好地组织和管理代码。Spring MVC 提供了丰富的注解和配置选项,使得开发人员可以方便地实现 RESTful 风格的 API 接口或者传统的页面渲染。它还支持数据绑定、表单验证、拦截器、文件上传等常用的 Web 开发功能。 MyBatis 是一个优秀的持久层框架,它通过 XML 或注解的方式将数据库操作与 Java 对象之间进行映射。MyBatis 提供了灵活的 SQL 映射配置,使得开发人员可以自由地编写和优化 SQL 语句。它支持动态 SQL、缓存机制、延迟加载等高级特性,有效地提升了数据库操作的性能和开发效率。MyBatis 还与 Spring 框架无缝集成,可以通过 Spring 的事务管理机制来管理数据库事务。 综合来说,Spring MVC 和 MyBatis 在 Web 开发有着不可替代的作用。Spring MVC 提供了优秀的控制反转和面向切面编程的支持,使得开发人员可以更好地组织和管理代码;而 MyBatis 则提供了强大的数据库操作能力,使得开发人员可以轻松地进行数据库访问。它们的结合可以使得开发人员更加高效地进行 Web 应用的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值