首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > 网页制作 > MultiActionController中的处理方法映射
【标  题】:MultiActionController中的处理方法映射
【关键字】:MultiActionController
【来  源】:http://www.cublog.cn/u/18918/showart.php?id=220100

MultiActionController中的处理方法映射

    一般情况下,一个控制器只处理一个动作,这有很大的局限性,若要实现几个相似的功能,应该使用“多动作控制器”(MultiActionController),

MultiActionController是一个特殊类型的控制器,它可实现多个动作。而该控制器中的每个动作分派给不同的方法,其实多控制器中的每个方法实现的是类似的功能,每个方法代表了一个可以由一个单独控制器完成的动作。

那么这样的控制器里的诸多方法,是怎样选择执行的呢?MultiActionController对此有一个名为“方法名解析器”的东东来做这项工作。

MultiActionController中的方法名解析器共有三个:

0InternalPathMethodNameResolver——这是MultiActionController的缺省情况下的方法名解析器,它是根据URL样式来解析方法名的。(实际上就是根据URL中的“文件名部分”决定的)。

除了上面的缺省的解析器外,MultiActionController还有两个方法名解析器:

1ParameterMethodNameResolver——根据请求中的参数来解析并执行方法名。

2PropertiesMethodNameResolver——根据查询一个key/value列表来解析并执行方法名。

 

 

举个例子吧,

比如说,有一个名为MAController的控制器,MultiActionController的子类,它有里边有三个方法分别是method01method02method03。其代码如下:

 

public class MAController extends MultiActionController {

public MAController () {}

 

public ModelAndView method01(

HttpServletRequest request,   HttpServletResponse response) {

  ……

return new ModelAndView("courseList", "courses", courses);

}

 

public ModelAndView method02(

HttpServletRequest request, HttpServletResponse response) {

  ……

return new ModelAndView("courseList", "courses", courses);

}

 

public ModelAndView method03(

HttpServletRequest request, HttpServletResponse response) {

  ……

return new ModelAndView("courseList", "courses", courses);

}

 

private CourseService courseService;

public void setCourseService(CourseService courseService) {

this.courseService = courseService;

}

……

}

 

然后,在映射文件中,它被映射到一个id值为“maController”的Bean

<bean id="maController"

    class="com.w3cs.vlar.training.mvc.MAController">

    <property name="methodNameResolver">

       <ref bean="methodNameResolver"/>

    </property>

</bean>

 

1、此时方法名解析器若用ParameterMethodNameResolver,这时就会根据请求中的一个参数决定选择哪个方法

<bean id="methodNameResolver"

    class="org.springframework.

web.servlet.mvc.multiaction.ParameterMethodNameResolver">

    <property name="paramName">

       <value>action</value>

    </property>

</bean>

maController这个BeanURL为“test.go”所映射的话,这时就可以在URL中输入形如:

“http://…/test.go?action=Method01”

这时将由控制器MAController中的Method01来处理这个请求。这跟用HTML表单来表现用户的选择形式差不多,你来看

<form action="test.go">

Sort by: <select name="action">

<option value="Method01"> method_01</option>

<option value="Method02"> method_02</option>

<option value="Method03"> method_03</option>

</select>

</form>

这两种选择在形式上不同,但行为上和效果是相同的。

 

2、方法名解析器若用PropertiesMethodNameResolver,用

<bean id="methodNameResolver"

    class="org.springframework.

web.servlet.mvc.multiaction.PropertiesMethodNameResolver">

    <property name="mappings">

       <props>

           <prop key="/methodA.go">Method01</prop>

           <prop key="/methodB.go">Method02</prop>

           <prop key="/methodC.go">Method03</prop>

       </props>

    </property>

</bean>

 

通过这个映射文件,我们可以看到,PropertiesMethodNameResolver的用法和SimpleUrlHandlerMapping非常相似。

 

0、当然,映射文件中,在定义maController时,若没有提及methodNameResolver的话,就说明要使用缺省方式的解析器了,这时,要选择多动作控制器中的某一方法,就在URL中输入形如下面(假定maController映射到URL样式为“/method*.go”):

http://…/method01.go

这个将被maController中的Method01方法处理。

 

新手需要大虾指教--我想系统地学习一下unix与网络:【上一篇】
Web2.0网站需要解决的问题:【下一篇】
【相关文章】
  • SpringMVC MultiActionController的使用-最简化教程
  • 【随机文章】
  • 在ChianUnixBlog上把关键字加颜色的程序Java非常简陋的
  • 关于Hibernate中assigned id 的load方法的使用
  • Cool Hack for the SparcStation(running OpenBSD)
  • Brooks-没有银弹-1986
  • 禁止向“开始”中的“文档”保留历史记录
  • 其他语言的.net实现列表
  • Authorware 6.0技巧与实例之二
  • 常见的数据库对象
  • 计算机等级合格证书在自考中的免考规定
  • 让我如何不骂你(之一)------天荣欣防火墙试用手记!
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.