首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring中MethodNameResolver的学习札记:MultiActionController

2012-10-06 
Spring中MethodNameResolver的学习笔记:MultiActionController(摘自API)Spring提供了MultiActionControlle

Spring中MethodNameResolver的学习笔记:MultiActionController
(摘自API)Spring提供了MultiActionController来将多个请求处理方法合并在一个控制器里,这样可以把相关功能组合在一起。 (如果你很熟悉Struts,会发现这与Struts的DispatchAction很像) MultiActionController位于org.springframework.web.mvc.multiaction包中,它可以定义页面请求到控制器方法名的映射, 然后在处理相应请求时调用该方法。当你有很多比较小的且相关的功能时使用MultiActionController很方便,这样就不必为每个小功能创建 一个单独的Controller了。但是一般来说MultiActionController不适合处理复杂逻辑,或者完全不相关 的功能,这时应该坚持使用标准方法,当在一个控制器存在大量公共的行为,但是有多个调用入口时,使用MultiActionController就特别方便。

MultiActionController有两种使用方式:一是创建MultiActionController的子类,并指定将被 MethodNameResolver解析的方法(这种情况下不需要这个delegate参数);二是定义一个委托对象, MethodNameResolver解析出目标方法后将调用该对象的相应方法。这种情况下需要定义MultiActionController 的实例并将委托对象作为协作者注入(可通过构造参数或者setDelegate方法)。

Spring提供的MethodNameResolver的三种方式:主要记录第一种MultiActionController类

1 : ParameterMethodNameResolver,这个可以根据请求的参数来确定一个需要调

用的方法。类继承MultiActionController
例如,http://localhost:8080/ASDS/showCpll.htm?action=pdfDownload,这个

请求会调用名称为pdfDownload的处理方法。public ModelAndView showCpll

(HttpServletRequest request,
HttpServletResponse response, PageExtNative

page)throws Exception
{}
<bean name="/showCpll.htm"     

ref="methodNameResolver" />
配置属性,这个属性在父类MultiActionController已提供,所以在

ShowCpllController类中不需要声明直接注入即可。不过在外面还要注入

methodNameResolver,它的类是

org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameRes

olver,根据参数选择方法。action就是参数,后接方法
<bean id="methodNameResolver"

class="org.springframework.web.servlet.mvc.multiaction.ParameterMethod

NameResolver">
<property name="paramName">
<value>action</value>
</property>
</bean>


2 : InternalPathMethodNameResolver,这个可以根据请求的路径名称来调用相

应的方法。
例如,http://www.sf.net/testing.view,这个请求会调用testing方法。

3 : PropertiesMethodNameResolver,这个可以根据一个URLs 映射列表来调用

相应的方法。
例如,如果定义了/index/welcome.html=doIt,那么当请求

为/index/welcome.html时,会调用doIt方法。在定义URLs时可以使用通配

符。/**/welcom?.html



热点排行