`
wangzhen5
  • 浏览: 79320 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

Spring MVC增强型Controller-MultiActionController 使用方法

阅读更多
Spring MVC增强型Controller-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是ParameterMethodNameResolver或PropertiesMethodNameResolver,它们都是根据请求的参数来决定使用那个方法。例如,如果定义这个请求参数为method,则路径为xxx.htm?method=getlist时,就会执行指定controller的getlist方法。

首先定义我们的Controller
其中有两个不同的业务方法courseSortByList和courseSortByName
package Action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class DispathActionController extends MultiActionController ...{
   private String listView;
   private String nameView;
   public String getListView() ...{
    return listView;
}
public void setListView(String listView) ...{
    this.listView = listView;
}
public String getNameView() ...{
    return nameView;
}
public void setNameView(String nameView) ...{
    this.nameView = nameView;
}
public DispathActionController()...{
      
   }
   public ModelAndView courseSortByList(HttpServletRequest request,HttpServletResponse response)...{
      
       return new ModelAndView(this.getListView());
   }
   public ModelAndView courseSortByName(HttpServletRequest request,HttpServletResponse response)...{
       return new ModelAndView(this.getNameView());
   }
}


同时建立sortByList和sortByName两个jsp文件

我们有三种使用方式
(1)使用URL
           配置文件如下:
        <bean id="simpleUrlMapping"

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
   <props>
     <prop key="/home.mvc">HomeController</prop>
     <prop key="/register.mvc">RegisterStudentController</prop>
     <prop key="/feedback.mvc">FeedbackController</prop>
     <prop key="/course*.mvc">multiactionController</prop>  <!---用*代表所有course开头的url path->
   </props>
</property>
</bean>


<bean id="viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix">
    <value>/</value>
  </property>
  <property name="suffix">
    <value>.jsp</value>
  </property>
</bean>

<!-- 使用MuitlActionController控制器及URL方式访问-->
<bean id="multiactionController" class="Action.DispathActionController">
  <property name="listView"><value>dispatch/sortByList</value></property>
  <property name="nameView"><value>dispatch/sortByName</value></property>
</bean>
使用这种方式,我们访问两个方法的url分别为  方法名.mvc

http://localhost:81/SpringMVCStudy/courseSortByList.mvc
http://localhost:81/SpringMVCStudy/courseSortByName.mvc

(2)解析方法名的方式

   有两种细分,第一是用一个参数(类似struts的dispathAction),第二种是直接配置url mapping

  第一种方式配置文件

 

<bean id="simpleUrlMapping"

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
   <props>
     <prop key="/home.mvc">HomeController</prop>
     <prop key="/register.mvc">RegisterStudentController</prop>
     <prop key="/feedback.mvc">FeedbackController</prop>
     <prop key="/course.mvc">multiactionController</prop>
   </props>
</property>
</bean>

<bean id="viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix">
    <value>/</value>
  </property>
  <property name="suffix">
    <value>.jsp</value>
  </property>
</bean>

<bean id="multiactionController" class="Action.DispathActionController">
<property name="listView"><value>dispatch/sortByList</value></property>
  <property name="nameView"><value>dispatch/sortByName</value></property>
<property name="methodNameResolver">
   <ref bean="methodNameResolver"/>
</property>
</bean>

<bean id="methodNameResolver"

class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
  <property name="paramName">
    <value>action</value>
  </property>
</bean>

使用这种方式,我们访问两个方法的url分别为  action=方法
http://localhost:81/SpringMVCStudy/course.mvc?action=courseSortByList
http://localhost:81/SpringMVCStudy/course.mvc?action=courseSortByName

  第二种方式配置文件



<bean id="simpleUrlMapping"

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
   <props>
     <prop key="/home.mvc">HomeController</prop>
     <prop key="/register.mvc">RegisterStudentController</prop>
     <prop key="/feedback.mvc">FeedbackController</prop>
     <prop key="/course.mvc">multiactionController</prop>
   </props>
</property>
   <property name="defaultHandler" ref="multiactionController"/>  <!---这个很重要,把multiactionController配置到           
                                                                                                            SimpleUrlHandlerMapping-,否则无法识别mapping>
</bean>

<bean id="viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix">
    <value>/</value>
  </property>
  <property name="suffix">
    <value>.jsp</value>
  </property>
</bean>

<!-- 使用MuitlActionController控制器及mapping参数方式访问-->


<bean id="multiactionController" class="Action.DispathActionController">
  <property name="listView"><value>dispatch/sortByList</value></property>
  <property name="nameView"><value>dispatch/sortByName</value></property>
  <property name="methodNameResolver">
    <ref bean="methodNameResolver"/>
  </property>
</bean>

<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
  <props>
     <prop key="/courseList.mvc">courseSortByList</prop>
     <prop key="/courseName.mvc">courseSortByName</prop>
  </props>
</property>
</bean>

分享到:
评论

相关推荐

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

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

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

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

    spring mvc MultiActionController配置方法源码

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

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

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

    SpringMVC - MultiActionController

    SpringMVCMultiActionController的使用最简化教程

    spring mvc_03

    MultiActionController

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

    2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 ...

    spring mvc_04

    MultiActionController静态访问

    开源框架 Spring Gossip

    Controller 的类别 介绍如何在 Controller上搭配使用验证器(Validator)、如何实作Command资料的型态转换,以及如何使用Spring的相关API来实作档案上传的功能。 实作 Validator 使用 PropertyEditor ...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack ...19.2. 使用Spring JMS ...

    Spring中文帮助文档

    使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. 使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@...

    Spring API

    使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. 使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@...

    Spring 2.0 开发参考手册

    2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6.3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring ...

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

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

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

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

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

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

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

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

    spring 2.0表单绑定实例

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

    springmvcdemo

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

    SPRING API 2.0.CHM

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

Global site tag (gtag.js) - Google Analytics