快速业务通道

Spring MVC中的MultiActionController用法详解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

Spring MVC中的MultiActionController用法详解

时间:2011-03-24 隔叶黄莺

Spring MVC 中 Controller 的层次实在是多,有些眼花缭乱了 。在单个的基础上,再新加两三个叫做丰富,再多就未必是好事, 反而会令人缩手新闻片脚,无从定夺。多数 Controller 都是只完 成一个任务,不过也有一个像 Struts 的 DispatchAction 的那样 的 Conntroller, org.springframework.web.servlet.mvc.multiaction.MultiActio nController,意即在一个 Controller 中处理多个动作,如同一 个业务的增、删、改可以放在一起了。不至于增、删、改各自为政 ,造成代码混乱、重复难以维护。

本文中的 web.xml 的 org.springframework.web.servlet.DispatcherServlet 所处理的 url-pattern 是 *.html,如何搭建 Spring MVC 项目不细加说明 ,可参考我前面同系列的文章。

例如,下面的 UserController,有两个签名一样的 updateUser() 和 deleteUser() 方法

public class UserController extends MultiActionController {    public ModelAndView updateUser(HttpServletRequest request,        HttpServletResponse response) {      System.out.println("updateUser");//方便于跟踪执 行了哪个方法      return new ModelAndView ("userList","from","updateUser");    }    public ModelAndView deleteUser(HttpServletRequest request,        HttpServletResponse response) {      System.out.println("deleteUser");//方便于跟踪执 行了哪个方法      return new ModelAndView ("userList","from","deleteUser");    } } public class UserController extends MultiActionController { public ModelAndView updateUser(HttpServletRequest request,   HttpServletResponse response) {   System.out.println("updateUser");//方便于跟踪执行了哪 个方法   return new ModelAndView ("userList","from","updateUser"); } public ModelAndView deleteUser(HttpServletRequest request,   HttpServletResponse response) {   System.out.println("deleteUser");//方便于跟踪执行了哪 个方法   return new ModelAndView ("userList","from","deleteUser"); } }

用过 Struts 的 DispatchAction 的都知道,是通过 http://.../userAction.do?method=updateUser 的方式来指定执 行哪个方法。那 Spring MVC中是如何定位到所需方法上呢?

Spring MVC 除了有一个叫做 HandlerMapping(把 URL 解析到 Controller) 的东西,还要把操作进一步解析到方法名上,即要找 到的 Controller 上的哪个方法并执行之。缺省的方法名解析器是 InternalPathMethodNameResolver,它根据 URL 样式解析方法名 。

在缺省的 BeanNameUrlHandlerMapping 和缺省的 InternalPathMethodNameResolver 协调之下,Bean 上下文可以这 样配置:

<bean name="/updateUser.html" class="com.unmi.UserController"/> <bean name="/deleteUser.html" class="com.unmi.UserController"/> <bean name="/updateUser.html" class="com.unmi.UserController"/> <bean name="/deleteUser.html" class="com.unmi.UserController"/>

这样分别通过下面的 URL 就能执行到正确的方法上去了:

http://.../updateUser.html -- 将被 UserController.updateUser()

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号