`

Spring-MultiActionController

阅读更多
如果为每个请求都设计一个controller的话,随着开发的进行,工程也一定会日渐庞大。当然,Spring框架提供了避免这种情况出现的方法,那就是使你的controller继承自org.springframework.web.servlet.mvc.multiaction.MultiActionController。就像Struts里的DispatchAction一样,MultiActionController可以处理多个类似的请求。
   在Struts里,要使用DispatchAction只需要在其action的定义中加入parameter="method"即可。在Spring中,MultiActionController要配合一个org.springframework.web.servlet.mvc.multiaction.MethodNameResolver的实例使用(MethodNameResolver也是一个接口),但我个人认为这并不说明Spring比struts繁琐,在使用中自会体会到它的好处。
   MultiActionController的默认MethodNameResolver是org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver。这个实现类是依据请求的路径来决定执行MultiActionController的那个方法的。例如路径为:getlist.htm,则执行相应controller的getlist方法。在实际开发中,不提倡使用这个MethodNameResolver。
    一般情况下,MultiActionController搭配的MethodNameResolver是org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver或org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver,它们都是根据请求的参数来决定使用那个方法

UrlFileBuildAction.java
package org.dispenseModule.web;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dispenseModule.service.IUrlsService;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class UrlFileBuildAction extends MultiActionController{
 private String fail_view;
 private String success_view;
 
 private IUrlsService urlsService;
 
 public void setFail_view(String fail_view) {
  this.fail_view = fail_view;
 }
 public void setSuccess_view(String success_view) {
  this.success_view = success_view;
 }
   
 public void setUrlsService(IUrlsService urlsService) {
  this.urlsService = urlsService;
 }
 public ModelAndView htmlFile(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
       String urls=urlsService.getUrls("html");
       String filePath="F:/urlFile";
       try{
    File myFilePath = new File(filePath);
        if (!myFilePath.exists()) {
          myFilePath.mkdirs();
        }
        FileWriter write=new FileWriter(filePath+"/htmlUrl.txt");
        BufferedWriter writer=new BufferedWriter(write);
         writer.write(urls);
         writer.flush();
         String success = "生成成功";
         writer.close();
         writer.close();
         return new ModelAndView(this.success_view,"success",success);
       }catch(Exception e){
        String fail = "生成失败";
        return new ModelAndView(this.fail_view, "fail", fail);
       }
   
 }
 
 public ModelAndView ubbFile(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
       String urls=urlsService.getUrls("ubb");
       String filePath="F:/urlFile";
       try{
    File myFilePath = new File(filePath);
        if (!myFilePath.exists()) {
          myFilePath.mkdirs();
        }
        FileWriter write=new FileWriter(filePath+"/ubbUrl.txt");
        BufferedWriter writer=new BufferedWriter(write);
         writer.write(urls);
         writer.flush();
         String success = "生成成功";
         writer.close();
         writer.close();
         return new ModelAndView(this.success_view,"success",success);
       }catch(Exception e){
        String fail = "生成失败";
        return new ModelAndView(this.fail_view, "fail", fail);
       }
   
 }
}
一、使用ParameterMethodNameResolver
1、配置applicationContext.xml
<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
 <property name="paramName">
   <value>method</value>
  </property>
  <property name="defaultMethodName">
   <value>htmlFile</value>
  </property>
我在测试过程中,如何没有设置defaultMethodName,都不能通过
2、配置applicationContext-action.xml
 <bean id="urlFileBuildAction" class="org.dispenseModule.web.UrlFileBuildAction">
       <property name="fail_view">
      <value>fail</value>
  </property>
  <property name="success_view">
   <value>success</value>
  </property>
  <property name="urlsService">
   <ref bean="urlsService" />
  </property>
  <property name="methodNameResolver">
    <ref bean="methodNameResolver"/>
  </property>
   </bean>

<bean id="handlerMapping"
  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <!--  <property name="defaultHandler" ref="urlFileBuildAction"/>-->
  <property name="mappings">
   <props>
<prop key="/urlFileBuildAction.do">urlFileBuildAction</prop>
   </props>
  </property>
 </bean>
使用方法urlFileBuildAction.do?method=htmlFile

二、使用PropertiesMethodNameResolver

1、配置applicatonContext.xml

<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
 <property name="mappings">
<props>
<prop key="/urlhtmlFileBuildAction.do">htmlFile</prop>

<prop key="/urlubbFileBuildAction.do">ubbFile</prop>
</props>
</property>
</bean>

2、配置applicatonContext-action.xml

<bean id="handlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="defaultHandler" ref=" sampleMultiMethodController "/>
</bean>

 <bean id="urlFileBuildAction" class="org.dispenseModule.web.UrlFileBuildAction">
       <property name="fail_view">
      <value>fail</value>
  </property>
  <property name="success_view">
   <value>success</value>
  </property>
  <property name="urlsService">
   <ref bean="urlsService" />
  </property>
  <property name="methodNameResolver">
    <ref bean="methodNameResolver"/>
  </property>
   </bean>

使用urlhtmlFileBuildAction.do

分享到:
评论
1 楼 gimy 2009-03-19  
写的很清楚,谢谢!

相关推荐

    springMVC3学习(五)--MultiActionController(源码)

    springMVC3学习(五)--MultiActionController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988091

    Spring MVC MultiActionController---多动作控制器

    Spring MVC MultiActionController---多动作控制器 博客介绍: http://blog.csdn.net/sunshine_love/article/details/8842261 更换web.xml中web-config.xml即可尝试不同方法解析器,如有问题,请博客回复。欢迎交流...

    spring mvc MultiActionController配置方法源码

    spring mvc MultiActionController配置方法源码,可以部署到tomcat中访问

    SpringMVC - MultiActionController

    SpringMVCMultiActionController的使用最简化教程

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与...

    spring chm文档

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

    Spring 2.0 开发参考手册

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 模型简介 10.7.2 模型封装 10.8 小结 第十一章 ...

    开源框架 Spring Gossip

    认识 Spring 来... AbstractController MultiActionController 与 ParameterMethodNameResolver MultiActionController 与 PropertiesMethodNameResolver ParameterizableViewController ...

    Spring中文帮助文档

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

    Spring API

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 模型简介 10.7.2 模型封装 10.8 小结 第十一章 ...

    Spring MVC框架 多动作控制器详解 spring mvc 2.5

    本代码使用了Spring MVC框架(spring2.5架包) 演示了(Controller接口的试用方法)和 MultiActionController多动作控制器 数据库连接试用Spring JDBC 并且着重介绍了MultiActionController多动作控制器的两种方法名...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 模型简介 10.7.2 模型封装 10.8 小结 第十一章 ...

    spring mvc_03

    MultiActionController

    spring 2.0表单绑定实例

    自己写的spring表单绑定的小例子,分别使用SimpleFormController,MultiActionController,spring的form tag和validator。 还在MultiActionController里面实现了表单的绑定

    SPRING API 2.0.CHM

    MultiActionController MultipartActionRequest MultipartException MultipartFile MultipartFilter MultipartHttpServletRequest MultipartResolver MutablePersistenceUnitInfo MutablePropertyValues ...

    spring mvc_04

    MultiActionController静态访问

    《程序天下:J2EE整合详解与典型案例》光盘源码

    10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 模型简介 10.7.2 模型封装 10.8 小结 第十一章 ...

    springmvcdemo

    4 使用MultiActionController 5 所有service利用spring注入到controller中,利用注解 6 数据库连接串单独在properties文件配置 7 在spring中配置数据源,属性使用properties文件中的配置 8 利用JdbcTemplate操作...

Global site tag (gtag.js) - Google Analytics