spring 与struts2 的整合

Struts2与Spring框架的深入整合实践指南 Struts2框架是一个基于MVC模式的Java Web应用框架。核心概念包括Action类、Result、Value Stack以及拦截器链。工作原理是,用户发出请求后,Struts2接收请求并创建Action实例,通过拦截器链处理请求,最终调用Action的业务逻辑方法,并根据配置生成响应结果。@Service// 实现业务逻辑编写自定义拦截器的过程相对简单,我们只需要创建一个类实现接口即可。下面是一个示例代码,展示如何实现preHandle方法来打印日志:@Override。 阅读详情


一、需要的JAR文件为:Spring和Struts2框架本身需要的JAR文件以及他们所依赖的JAR文件,比如commons-logging.jar等等,另外还需要Struts2发布包中的struts2-spring-plugin-x.xx.jar。

二、在web.xml中增加WebApplicationContext的相应配置,以下两种配置方式本质是一样的。
1.         Servlet 2.3及以上版本可以使用监听器,相应配置如下:
<context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
如果spring配置文件被命名为applicationContext.xml,并且放在WEB-INF目录下,则不需要配置<context-param>,因为ContextLoaderListener默认在WEB-INF目录下寻找名为applicationContext.xml的文件。若存在多个Spring配置文件,则在<param-value>中依次列出,之间以逗号隔开。
2.         Servlet 2.3以下版本由于不支持<listener>,需要配置<servlet>,格式如下:
<context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<servlet>
              <servlet-name>contextLoaderServlet</servlet-name>
              <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
              <load-on-startup>1</load-on-startup>
</servlet>
如果spring配置文件被命名为applicationContext.xml,并且放在WEB-INF目录下,则不需要配置<context-param>,因为ContextLoaderListener默认在WEB-INF目录下寻找名为applicationContext.xml的文件,或者是名字为contextConfigLocation的ServletContext参数所指定的文件。由于该Servlet配置只是为了在容器启动时能启动ContextLoaderServlet使其工作,而不需要引用该Servlet,所以不需要配置<servlet-mapping>。
三、在web.xml中完成加载WebApplicationContext之后,接下来就可以做到Spring和Struts2的整合了。整合有两种方法,分别叙述如下:



1、  将Struts的业务逻辑控制器类配置在Spring的配置文件中,业务逻辑控制器中引用的业务类一并注入。注意,必须将业务逻辑控制器类配置为scope=”prototype”!

1)在struts.xml文件中加入 < constant name="struts.objectFactory" value="spring" />    

  指struts.objectFactory为spring,struts2框架就会将Bean转发给Spring来创建,装配,注入。但是Bean创建完成之后,还是由struts2容器来管理其生命周期。

还可以就是在src下建立一个struts.properties文件,写入:    struts.objectFactory=spring  

这是另一种方式,如果是这样子创建就不用在struts.xml文件中指定,struts.xml也不用更改,如常一样,如果在Action中有依赖于其它的Bean,也会被自动注入.这个时候,Action实例是以prototype方式创建的,Spring会为每个请求创建一个action的实例。

2)

  在某些时候,你可能希望不仅仅让SPRING创建和装配Action对象,还希望让SPRING完全管理这些对象,如希望使用AOP或者希望使用acegi时。这时候,只需要在spring的配置文件中定义这些action 即可。

如在applicationContext.xml文件中:  < bean id="user" class="action.LoginAction"/>

  然后在struts.xml文件中的action元素,class="user"即可。如下:

<action name="login" class="user" method="login">
    
<result name="success">/success.jsp</result>
    
<result name="error">/error.jsp</result>        
</action>

需要注意的一个地方:Spring中的缺省作用域是单例。而往往Action属于有状态的Bean,应该使用prototype作用域。 

< bean id="user" class="action.LoginAction" singleton="false"/>   如果忽略了这个细节,在我们实用SET,GET 方法注入关系的时候可能会有线程安全上的风险。请注意!


2、         第二种实现方法:
1)        业务类在Spring配置文件中配置,业务逻辑控制器类不需要配置,Struts2的Action像没有整合Spring之前一样配置,<action>的class属性指定业务逻辑控制器类的全限定名。
2)        业务逻辑控制器类中引用的业务类不需要自己去初始化,Struts2的Spring插件会使用bean的自动装配将业务类注入进来,其实业务逻辑控制器也不是Struts2创建的,而是Struts2的Spring插件创建的。默认情况下,插件使用by name的方式装配,可以通过增加Struts2常量来修改匹配方式:设置方式为:struts.objectFactory.spring.autoWire = typeName,可选的装配参数如下:
a)         name:等价于Spring配置中的autowire=”byName”,这是缺省值。
b)        type:等价于Spring配置中的autowire=”byType”。
c)         auto:等价于Spring配置中的autowire=”autodetect”。
d)        constructor:等价于Spring配置中的autowire=” constructor”。
四、如果原先在Struts2中使用了多个object factory,则需要通过Struts2常量显式指定object factory,方式如下:struts.objectFactory = spring;如果没有使用多个object factory,这一步可以省略。
五、可以通过设增加Struts2常量来指定是否使用Spring自身的类缓存机制。可以设定的值为true或false,默认为true。设置方式为:struts.objectFactory.spring.useClassCache = false。
六、至此,完成了两种方式的整合。比较这两种整合方式,其本质是一样的。不同之处在于,使用第二种自动装配的方式时,由于没有在Spring中配置业务逻辑控制器,所以需要对其配置一些AOP之类的内容时就很难实现了。



Struts2与Spring2框架整合实战详解 Struts2是一个基于MVC设计模式的Java Web应用框架,其核心通过拦截器(Interceptor)实现请求处理流程的解耦。Action类作为控制器组件,负责业务逻辑调度,配合Result映射实现视图跳转,具备良好的扩展性。Spring2引入了完善的依赖注入(DI)和面向切面编程(AOP)机制。DI通过配置管理对象依赖关系,降低组件耦合;AOP支持横切关注点(如日志、事务)的模块化封装,提升系统可维护性。 阅读详情

相关推荐

整合struts2和spring

只使用spring和struts进行整合

struts入门

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!程序员代码面试指南 IT名企算法与数据结构题目最优解这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。“刷”完本书后,你就是“题王”!

2401_84046577的博客 1272

struts2+spring整合最小配置

NULL 博文链接:https://sleepyy.iteye.com/blog/1312162

项目更换struts2的核心包

昨天,想使用include + 通配符 自动引入多个struts配置,但是一直没有成功,在网上查了半天也没解决。后来想到项目使用了五年多,会不会是struts包版本太低?于是下载了最新的struts包,然后进行替换,最后成功了。需要更换的jar包如下:

myb0220的专栏 549

Struts2与Spring之间的整合方法与原理

详细说明了Spring如何与Struts2之间整合,以及整合的原理

Spring与Struts2整合

整合代码 博文链接:https://dxz.iteye.com/blog/2159436

struts2版本升级问题

例如在spring3.2版本升级到spring4.3.8,name在整合框架的时候,也需要相应的升级 升级前的jar包: 升级后的jar包: 在配置文件中有点不同如下: 原来: <filter> <display-name>StrutsPrepareAndExecuteFilter</display-name> <fil...

荒的博客 3688

spring+struts2整合源码

详细介绍:细谈Spring(十一)深入理解spring+struts2整合(附源码)http://blog.csdn.net/csh624366188/article/details/7666280

Struts2+spring配置2024.11版

最开始配置时,出现了如下报错(经典问题解决后没法复原错误,只能拿当时的拍照了)

2301_80079046的博客 960

基于图神经网络的社交网络虚假账号检测系统 (Graph-based Fake Account Detection System, GFADS)

FOLLOWSRETWEETSSHAREDCOMMENTSLIKESMENTIONSUseruser_idusernamejoin_datebioavatar_urllocationverifiedis_fakeLOAD CSV这是决定模型性能的关键环节,需结合和。XXedge_indexy新账号缺乏历史数据和丰富关系。全网图可能包含数亿节点和数十亿边,难以直接训练。社交网络是动态变化的,虚假账号策略也在不断进化。获取大规模、高质量的真实/虚假账号标注数据非常困难。

Deng945201314的博客 1481

vins-mono前端详解(2)——imu预积分

本篇文章详细讲解了vins-mono中imu预积分内容,包括复杂的公式推导。

weixin_44587828的博客 1196

使用MyEclipse工具快速搭建Struts2框架

Java开源框架的出现,极大程度的提高了项目开发的效率,同时保证了项目开发的合理分工以及项目后期的良好维护,这让程序开发人员受益无穷。struts2框架便是众多开源框架中的一个重要组成部分。那么如何手动搭建一个Struts2框架呢? 搭建简单的struts2项目步骤如下: 在Apache官方网站下载struts的jar包。下载地址http://struts.apache.org/,建议

申振的博客 2901

【从零开始学Skynet】实战篇《球球大作战》(一):功能设计

为了能把之前在基础篇中学习到的Skynet的各种知识结合起来,所以在实战篇中,我们准备开发一个完整的游戏案例《球球大作战》,介绍分布式游戏服务端的实现方法。

我是一条寻水的鱼 2984

spring整合struts2

导入依赖包:除了导入Struts2和Spring的核心库之外,还要导入commons-logging和struts2-spring-plugin包。(PS:Struts2是主导,把spring嵌到struts2中。)配置:通过配置ContextLoaderListener监听器,使容器启动时,自动加载application...

weixin_42051953的博客 276

VFIO框架源码分析(二十二)- IOMMUFD 的脏页跟踪与 Dirty Bits 读取

在虚拟化热迁移(Live Migration)的场景中,脏页追踪(Dirty Page Tracking)是最具挑战性的环节之一。它的核心任务是实时捕获设备(DMA)对内存的写操作,以便 VMM(如 QEMU)知道哪些内存页需要被重新传输到目标主机。在强耦合与粗粒度:脏页追踪是绑定在 Container 上的。这意味着,如果一个 Container 内有多个设备,哪怕只有一个设备在写内存,脏页追踪也会影响 Container 内的所有设备。软件模拟开销大。

qq_36071928的博客 1046

详解ReID的各部分组成及Trick——基于FastReID

这一系列博客将基于京东开源的FastReID进行扩充,详细介绍了ReID的各个组成部分,一些有用的Trick,评价指标,常用数据集等,详细内容见下方的链接,总结不易,如有理解不正确之处,麻烦各位批评指正。 一、FastReID的中的baseline文件配置 二、Training strategy 三、Pre-processing 四、Backbone 五、Aggregation 六、Head 七、Loss 八、Distance Metric 九、Post-processing 十、Evaluation 十一

藏晖的博客 9165

struts2与Spring整合

1、导包(已导) 2、配置常量 <!-- # struts.objectFactory = spring 将action的创建交给Spring struts.objectFactory.spring.autoWire = name Spring负责action的属性注入 --> <constant name="struts.objectFactory" va...

玉爷的博客 221

使用ST-LINK烧录stm32教程说明

使用ST-LINK烧录stm32

qq_34426854的博客 1万+

spring与struts2整合

这两天都是一直在鼓捣Struts2.3如何整合Spring3.2以及dao层到底选用什么以及如何整合。下面就把自己这两天的一些小成果分享出来也以便自己以后在实际项目中快速搭建。 首先是Struts2.3整合Spring3.2 1、新建一个web工程(这个就不说了) 2、添加Struts2.3 把Struts开发所需的jar复制到工程的lib文件中。开发struts必须包如下

IT程序员的成长记 490

【OpenClaw从入门到精通】第09篇:企业级实践——将OpenClaw接入钉钉,打造7×24小时数字员工(2026实测版)

本文聚焦OpenClaw的企业级落地实践,以“招聘数字专员”为核心场景,完整演示从钉钉接入到全流程自动化的实现路径。内容涵盖企业级部署架构设计、前置环境搭建、核心技能开发、流程串联、安全权限管控及运维监控六大模块,详解简历解析、岗位匹配、外呼集成、CRM同步、日历提醒等关键技能的构建逻辑与代码实现。借鉴中关村科金、网易智企的企业级实践经验,重点突破企业知识融合、安全权限管控、业务系统连接三大核心门槛,提供可直接参考的配置示例与操作步骤。所有技术方案均基于公开文档与实测验证,兼顾新手入门与进阶实操。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1178

《计算机视觉:从入门到精通》技术手册 第1章 计算机视觉概述与历史演进

视觉感知与机器视觉在工程实践中常被混用,但二者存在本质差异。视觉感知强调对光学信号的语义理解与场景解释,核心在于从二维投影重建三维世界的物理与语义属性。该领域关注遮挡处理、光照变化、材质反射等复杂因素的建模,其目标是实现类似人类视觉系统的场景理解能力。机器视觉则侧重于工业场景中的精密测量与控制,通常基于结构化光源、已知几何约束与标定参数,执行边缘检测、尺寸测量、位置定位等任务。前者面向开放环境的通用理解,后者面向受控环境的精确执行。

u012133341的博客 270

Struts2 与 Spring整合

Struts2 与 Spring整合 利用Spring 的 IOC/AOP 功能可以很方便的管理软件的业务层和控制器. Struts2 提供了 Struts2-spring-plugin插件, 可以自动的将Struts2 和Spring进行整合, 整合之后Struts2可以利用Spring作为工厂, 生产Struts2控制器实例 整合的作用: 1.利用Spring管理Action对象 2....

荒的博客 366

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

struts2 整合spring 及 由spring治理struts的Action实例

1.当指定struts.objectFactory为spring时,struts2框架就会把bean转发给spring来创建,装配,注入。但是bean创建完成之后,还是由struts容器来治理其生命周期 2. 在某些时候,你可能希望不仅仅让SPRING创建和装配Action对象,还希望让SPRING完全治理这些对象,如希望使用AOP或者希望使用acegi时。这时候,只需要在spring的配置文件中定义这些action即可。

it_man的专栏 5379

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Struts2与Spring整合的原理

ObjectFactory,是xwork中很重要的一个类,是产生action的地方。单独使用xwork的时候,action都是这个类创建的。 struts2包装了ObjectFactory,自成了一个StrutsObjectFactory,他是继承自ObjectFactory的一个类,因此struts2默认产生action的类就不使用xwork的ObjectFactory了,而是使用Struts

码出个天下——程序员的自我修养 1062

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

struts2+spring4+hibernate5整合实例

struts2作为一个很传统的mvc框架,在一些项目中,仍然发挥着重要的作用,另外hibernate和spring的结合也是很常见的,这里介绍struts2+hibernate5+spring4的整合,因为struts2支持最高的spring是4版本,所以这里采用的是spring4。整合的思路比较简单,可以从struts2+spring整合,然后接着整合hibernate+spring。也可以反过...

feinifi的博客 1778

【WEB】struts2整合spring原理以及源码剖析

一、原理概述          二、实现细节 三、实现展示f

厚积薄发者,轻舟万重山 1961
上一篇: Spring 和struts1 整合的三种方式
下一篇: 让Hibernate输出SQL语句参数配置
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值