粗谈Spring与Struts的整合——从实现的Struts的扩展点上看Spring与Struts的整合

原创 2007年09月29日 03:30:00

 1.采用DelegatingRequestProcessor将处理转发给Spring容器中的bean

    DelegatingRequestProcessor继承自RequestProcessor。为了让Struts使用DelegatingRequestProcessor,还需要在struts-config.xml文件中增加如下代码:

         <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />

   这一行代码是告诉Struts用DelegatingRequestProcessor来代替原来的RequestProcessor。完成设置这个设置后,Struts会将拦截到的用户请求转发到Spring context下的bean,根据bean的name属性来匹配。而Struts中的action配置则无需配置type属性(即使配置了type属性也不起任何作用)。

   配置了上面的一行代码后,就可以在Spring的配置文件(可以不是applicationContext.xml,比如假设这里是action-servlet.xml)中配置用来处理请求的Action bean了。配置的时候需要注意的是Action bean不再需要id属性,而要用name替代id属性,这时name属性的值应与struts-config.xml中配置的Action的path属性的值相同。

   这样,处理请求的Action就能处于Spring的管理之下了。

2.采用DelegatingActionProxy将处理转发给Spring容器中的bean

   DelegatingRequestProcessor可直接替换原有的RequestProcessor,并在请求转发给action之前,转发给Spring管理的bean;而DelegatingActionProxy则被配置成Struts的action,即所有的请求先被ActionServlet拦截,然后将请求转发给对应的action,而action的实现类全部都是DelegatingActionProxy,最后由DelegatingActionProxy将请求转发给Spring容器中的bean。

   配置时,与采用DelegatingRequestProcessor相比,不再需要struts-config.xml文件中的<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />这行代码,但是Action元素的type属性是必须的,而且是一个定值,都为org.springframework.web.struts.DelegatingActionProxy。Spring配置文件中对用来处理请求的Action bean的配置则无需改变。

3.使用ActionSupport来代替Action

   Spring与Struts的整合也可采用在Action中手动地获得ApplicationContext实例的方法来进行。这种整合策略下,Struts的Action不接受Spring容器的管理,使Action的代码与Spring API部分耦合,也造成了代码的污染。

   Action中访问ApplicationContext有以下两种方法:

      ●利用WebApplicationContextUtils工具类。

      ●利用ActionSupport支持类。

   WebApplicationContext是ApplicationContext的子类。WebApplicationContextUtils可以通过ServletContext获得Spring容器实例。而ActionSupport类则提供了一个更简单的方法:getWebApplicationContext(),该方法用于获取ApplicationContext实例。而且,Spring扩展了Struts的标准Action类,可在其Struts的Action后加上Support,Spring的Action有如下如下几种:

       ●ActionSupport

       ●DispatchActionSupport

       ●LookupDispatchActionSupport

       ●MappingDispatchActionSupport

   采用这种整合策略时,表现层的控制器组件不再受Spring容器的管理,因此没有了控制器context。这种策略下,不需要对Struts及Spring的配置文件有什么特殊的配置。

 

详细分析spring与struts2的整合原理

详细分析spring与struts2的整合原理
  • canot
  • canot
  • 2016年02月19日 15:52
  • 3694

Spring+mybatis+struts框架整合的配置详解

学了很久的spring+mybatis+struts.一直都是单个的用他们,或者是两两组合用过,今天总算整合到一起了,配置起来有点麻烦,但是配置完一次之后,就轻松多了,那么框架整合配置详解如下。1、导...
  • u012036171
  • u012036171
  • 2015年08月13日 00:31
  • 5806

Struts2+Spring, 将框架的配置文件整合起来

如果我们集成多个框架,那每个框架或多或少都会引入一些xml配置文件到项目中,我们一般的做法就是按照配置文件的默认位置去存放它们,但当我们的项目中壮大到连几角旮旯都充斥着配置文件的话,那我们迫切需要将它...
  • zhangleijava1
  • zhangleijava1
  • 2013年12月09日 13:33
  • 1283

【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2

今天开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH。这篇博文总结了如何整合Struts2、Hibernate4.3和Spring4.2。 整合三大框架得先从搭建各部分环境开始,也就是...
  • eson_15
  • eson_15
  • 2016年05月04日 22:11
  • 44559

Spring整合Struts2的两种方式

Spring提供了一个ContextLoaderListener,该监听类实现了ServletContextListener接口。该类可以作为Listener使用,它会在创建时自动查找WEB-INF/...
  • cuiyaoqiang
  • cuiyaoqiang
  • 2016年07月12日 11:44
  • 4347

SSH问题集(一) spring和struts整合配置文件问题

SSH问题集(一) spring和struts整合配置文件问题 1、spring默认配置文件applicationContext.xml的路径设置 contextConfigLocation ...
  • mxhuang
  • mxhuang
  • 2016年11月22日 14:27
  • 336

一、Shiro+Spring+Struts2集成演示权限控制Demo示例

更好的理解shiro安全框架的好demo,不容错过~~
  • u010834071
  • u010834071
  • 2015年03月27日 11:16
  • 5835

对ssh中struts、spring、hibernate分工的理解

对ssh框架来说,核心是spring,spring 1Struts只负责拦截浏览器端的请求(可以理解为获取request请求,即得到request对象。request对象中包含用户在页面输入的表单...
  • Ideality_hunter
  • Ideality_hunter
  • 2016年08月24日 17:12
  • 682

Struts2+Spring+Hibernate 三大框架的合并集成

这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样。    ...
  • liujiahan629629
  • liujiahan629629
  • 2014年03月19日 22:57
  • 35890

Struts2、hibernate和spring下载,整合所需jar包

ssh三个框架各自所有版本下载地址如下 Struts framework 下载地址: http://mirror.bjtu.edu.cn/apache/struts/binaries/ hibe...
  • lulin27860
  • lulin27860
  • 2014年03月06日 09:25
  • 3198
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:粗谈Spring与Struts的整合——从实现的Struts的扩展点上看Spring与Struts的整合
举报原因:
原因补充:

(最多只允许输入30个字)