(摘自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"
class="com.adtech.adlib.asds.controller.systemsetting.ShowCpllControll
er">
<property name="methodNameResolver" 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
分享到:
相关推荐
- **ContextLoaderPlugIn**:该插件用于初始化Spring的应用上下文,将Spring配置文件加载到内存中。这里的`contextConfigLocation`属性指定了Spring配置文件的位置。 ##### 2. 配置ContextLoaderListener ```xml ...
在Spring中配置数据源通常采用Apache Commons DBCP库中的`BasicDataSource`类。 ```xml <property name="url" value="jdbc:oracle:thin:@10.129.255.215:1521:ORCL" /> ``` - **重要配置项解释**: - `...
`<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">`定义了`methodNameResolver`,它是一个Spring MVC中的多动作控制器方法名解析器。...
MultiActionController MultipartActionRequest MultipartException MultipartFile MultipartFilter MultipartHttpServletRequest MultipartResolver MutablePersistenceUnitInfo MutablePropertyValues ...
综上所述,Spring MVC以其组件化的设计、强大的功能和灵活的配置,成为了Java Web开发中的主流框架之一,极大地提高了开发效率并降低了维护成本。通过深入理解和熟练运用Spring MVC,开发者可以构建出高效、稳定且...