Spring和Struts2集成

Struts 2与Spring集成编程 Struts 2是一个基于MVC(模型-视图-控制器)模式的Web应用程序框架,而Spring是一个轻量级的Java开发框架,提供了广泛的功能,包括依赖注入和面向切面编程。将Struts 2与Spring集成可以充分发挥它们各自的优势,提供更灵活和可扩展的开发体验。通过将这两个强大的框架结合起来,我们可以充分利用它们各自的优势,实现灵活和可扩展的Java Web应用程序开发。在本文中,我们将详细介绍如何将Struts 2与Spring集成,并提供相应的源代码示例。然后,我们可以在Action的方法中使用。 阅读详情

推荐两篇博客:集成的大致思路大致都是如此那就是谁来创建Action, Struts来创建Action; Spring来创建Action,
1,Struts2和Spring集成合并
2,Spring和Struts2集成的两种方式


方式1:Action由Struts2框架负责创建;Service由Spring框架负责创建,提供了jar包:struts2-spring-plugin-2.1.8.1.jar。将这样两个框架就可以通过此jar包进行合并集成了。
Step 1:
在 web.xml文件中配置struts2和spring的两个关键类,目的是让在tomcat在启动时,就创建好Struts的中央控制器StrutsPrepareAndExecuteFilter 和 Spring 的配置文件初始化类ContextLoaderListener;
web.xml

<?xml version="1.0" encoding="UTF-8"?>  
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  

        <!-- 用于指定Spring的配置文件路径 -->  
        <context-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:applicationContext-*.xml</param-value>  
        </context-param>  

        <!-- 服务器启动时,通过监听器初始化Spring的配置环境   
            监听器,默认加载文件是:/WEB-INF/applicationContext.xml  
        -->  
        <listener>  
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
        </listener>  

        <!-- 配置Struts2框架的核心调度器 -->  
        <filter>  
            <filter-name>struts2</filter-name>  
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
        </filter>  
        <filter-mapping>  
            <filter-name>struts2</filter-name>  
            <url-pattern>/*</url-pattern>  
        </filter-mapping>  
    </web-app>  

Step 2:
这样两者的各自环境就算搭建好了,那么如何进行两者的集成合并呢?这里Struts2为我们提供了jar包:struts2-spring-plugin-2.1.8.1.jar。我们需要将此jar包也引用到项目中。这样两个框架就可以通过此jar包进行合并集成了。
简单说一下这个jar包的作用吧:插件中提供了新的工厂类,覆盖了Struts2的原工厂类。新工厂类的工作原理:首先根据Action的完整类名,到Spring配置文件中查询bean标签的id是否存在一致的名称。如果有一致的说明,Action对象是由Spring负责创建,并有Spring进行装配组合对象之间的关系。
如果查找不到,会进行特殊的处理操作,再由Strtus2框架进行反射创建Action对象,并采用Strust2框架的自动装配功能来完成Action和Service对象的关联。默认是根据name进行查找的,当然我们也可以进行修改,例如改成以type类型进行查找的方式:

在struts.xml文件中指定指定以type的方式组合action和service的关系

<constant name="struts.objectFactory.spring.autoWire"value="type"/>

方案二,Struts2负责流程,Spring负责对象的创建,Action和Service都由Spring框架负责创建。
这是常用的集成合并方案。步骤和上边的基本上一样,都是导入响应的jar包,拷入响应的配置文件,web.xml文件的写法也一样。
struts2.xml的写法:

 <struts>
 <!--写法基本一样但是注意class的值,这里没有写真正路径,为了是在Spring中根据此值进行查找-->  
    <package name="example" namespace="/user" extends="struts-default">  

        <action name="login" class="loginAction" method="login">  

            <result name="success" type="redirect">/success.jsp</result>  
            <result name="login" type="redirect">/login.jsp</result>  

        </action>  
    </package>          
</struts>  

applicatinContext.xml的写法:
这里的id对应上边的class,这里的class才是真正的路径,采用了Spring的根据name自动装配的功能,当然也可以我们手动指定,这里需要注意的是,action需要多例创建,而Spring默认为单例创建的,所以需要制定scope=”prototype”

<bean id="loginAction" class="com.ljh.action.LoginAction" autowire="byName" scope="prototype"></bean>  

<bean id="userService" class="com.ljh.service.UserService" ></bean>  

需要注意的是,为了完成Spring托管Struts Action,必须加入一个包,该包为:struts2-spring-plugin-2.2.1.jar,或者其他版本。如果系统中加入了该包,那么就不需要在Struts配置文件中加入配置了,该常量配置是指示Action的创建者由Struts变为Spring。为什么加入了该包以后就不需要加入的配置了呢?这是由于在包内定义了一个struts-plugin.xml的文件,该文件内容如下所示:

<struts>

     <!—创建Action的类变为了StrutsSpringObjectFactory-->

    <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />

    <!--  Make the Spring object factory the automatic default -->

    <constant name="struts.objectFactory" value="spring" />

    <constant name="struts.class.reloading.watchList" value="" />

    <constant name="struts.class.reloading.acceptClasses" value="" />

    <constant name="struts.class.reloading.reloadConfig" value="false" />

    <package name="spring-default">

        <interceptors>

            <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>

            <interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/>

        </interceptors>

    </package>   

</struts>
Struts2+Spring整合所需jar包 Struts2+Spring整合所需jar包(13个Struts2+6个Spring+1个整合包) 立即下载

相关推荐

struts2与spring2的整合

NULL 博文链接:https://corrinejtt.iteye.com/blog/555679

spring和struts2的集成

Spring②指定配置文件在web.xml上配置好spring和struts2其他监听器和过滤器jar包或者依赖xml文件的导入struts.xmlspring.xml三级目录 指定配置文件 以下基础,在已经创建好maven项目上。 在web.xml上配置好spring和struts2 <!-- 指定spring配置文件所在的路径 --> <context-param> <param-name>contextConfigLocation</pa

qq_46119030的博客 1457

Spring+status2+mybatis整合源码源码实例

一个完整的Spring+status2+mybatis整合源码源码实例,适合新手和学习者查看和学习。

struts2集成spring方式

1,struts2和spring集成时,除了咱们常用的那一种,将aciton交给spring来代理。 如:首先类extends ActionSupport, 如:public class UserAction extends ActionSupport { 。。。。。 } 然后在配置文件中增加 已经创建类的bean对象。 如:         最后在配

xclsky的博客 429

SSH笔记-Spring整合Struts2

SSH笔记-Spring整合Struts2,作用是使用 IOC 容器来管理 Struts2 的 Action

一、5.8GHz射频接收机链路仿真

5.8GHz射频接收机链路仿真 一、5.8GHz射频接收机链路仿真 文章目录5.8GHz射频接收机链路仿真目的一、原理1、仿真工具2、二次下变频超外超接收机二、要求三、内容总结 目的   1、熟悉射频接收机整体结构。   2、学习使用MATLAB工具进行行为级仿真。   3、进行简单的通信链路预算。   4、直观感受接收机各个模块对整体性能的影响。   5、分析增益、线性度、噪声系数等参数。 一、原理 1、仿真工具   MATLAB是一款功能强大的数学软件,针对不同领域提供各种工具箱,帮助设计者快

平乾的博客 6760

struts2与spring的简单集成

常说SSH框架,想必大家都不陌生吧,将其分开无非也就是三个单独的框架,将其结合在一起则会更好的方便开发人员进行开发,同时也为项目的快速开发打下了很好的基础,那么他们是如何在一起配合应用的呢?下面请看struts2与spring的简单集成。 其实他们的集成很简单,也就是分为4个部分:     1、加入所需要的jar包     2、编写页面jsp     3、编写Action     4、配

刘杰 廊坊师范学院信息技术提高班十期 667

Eplan P8 API二次开发--插入符号(Symbol)功能(Function)并定义属性

1、目的 使用Eplan API在页中自动插入某个符号并按约定规则自动设置好属性 2. 步骤 一、基础信息 比如要在Eplan中自动插入一个电机的符号并定制属性,我们先要确定要插入的符号名,可以在Eplan中获取如下符号(Symbol)信息 可以知道我们待插入的符号名称为M3_1, 接下来,使用Visual Studio建立类库项目,并引用Eplan Api库 二、获取符号变量(SymbolVariant) 在Eplan中,当一个符号(Symbol)被插入到页中,这个符号的引用即变为一个(Function

如是道程序人生 4523

java struts spring_在Struts2中集成Spring详细讲解

Spring的官方定义是:一个轻量级的IoC和Aop容器框架,它使用了一种叫做依赖注入的技术。所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到“工厂”中去,这个“工厂”通常由IoC容器提供。Struts2与Spring的集成要用到Spring插件包,这个包是同Struts2一起发布的。Spring插件是通过覆盖(override)Struts2的ObjectFacto...

weixin_42327217的博客 455

AISHELL-2 中文语音数据库

AISHELL-1 is by far the largest open-source speech corpus available for Mandarin speech recognition research. It was released with a baseline system containing solid training and testing pipelines for Mandarin ASR. In AISHELL-2, 1000 hours of cle

AI_SHELL的博客 7886

解决windows10下无法安装.net framework 3.5(包括.net2.0和3.0)

入域电脑,win10系统中安装 .net framework 3.5(包括.net2.0和3.0)

God_me_1的博客 4万+

spring整合struts2

因为最近工作的需要不得不学习struts2,整理了一下spring整合struts2的过程。在resources目录下创建该文件,有几处地方需要根据自己的项目进行修改,请认真阅读。需要详细了解struts2的朋友可以自行百度,这里只是简单的讲述如何使用。我是用的是idea进行项目构建的,eclipse的话可以自己百度一下。需要自己手动在main目录下创建java,resources目录。在java目录下自行创建一个类,根据自己的的项目进行创建。这里可以自己选择自己的maven版本以及设置等信息。

一般社员的博客 1445

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 238

Struts2+Spring集成合并

前边单独总结了Struts2,Spring和Ibaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2和Spring的集成合并。其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分好彼此的工作就可以了。     好看一下Struts2+Spring的集成方案!           Struts2和Spring集成有两种方案,是根据action的创建来划分的!

学会改变自己——才能突破 2万+

新年美食鉴赏——基于注意力机制CBAM的美食101分类

新年美食鉴赏——基于注意力机制CBAM的美食101分类一、数据预处理1.数据集介绍2.读取标签3.统一命名4.整理图片路径5.划分训练集与验证集6.定义美食数据集二、注意力机制1.简介2.卷积块注意力网络——CBAM通道注意力模块CAM空间注意力模块SAM3.将通道、空间注意力模块合并三、基于卷积块注意力模块的ResNet-CBAM1.代码实现2.模型测试3.查看网络结构4.模型训练5.模型预测四、总结与升华个人简介 春节是一年当中最隆重、最盛大的节日,吃得最好的一餐可能就是年夜饭了,想想就很激动呢!随着新

zbp_12138的博客 1万+

从光耦隔离到稳定驱动:信捷伺服与STM32的硬件设计陷阱与救赎

本文深入探讨了信捷伺服驱动器与STM32微控制器配合时的硬件设计关键问题,包括光耦隔离电路选型、电源电压选择、拨码开关设置等核心环节。针对伺服驱动器的稳定驱动需求,提供了从电路设计到抗干扰策略的完整解决方案,帮助工程师规避常见陷阱,提升工业控制系统的可靠性。

gold8的专栏 310

Struts 2 + Spring集成示例

下载它– Struts2-Spring-Integration-Example.zip 在本教程中,它显示了Struts 2和Spring之间的集成。 1.项目结构 这是本教程的项目文件夹结构。 2. Struts 2 +弹簧插件 要集成Struts 2和Spring,请获取“ struts2-spring-plugin-xxx.jar ”库并将其包括在您的项目类路...

一名可爱的技术搬运工 268

uniapp [安卓苹果App端] - 实现APP开发后台保活+息屏后台持续运行效果,强制后台保活手机黑屏后进程存活后台保持网络连接或持续定位等功能提供支持(app后台运行休眠仍然可以确保一直运行)

uniapp APP开发后台保活,Uniapp-APP后台保活插件(安卓苹果ios后台保活)保证应用在后台继续运行,uniapp实现app保活 保后台运行 避免系统主动杀进程,如何让安卓APP一直在后台运行?uniapp 安卓 APP 后台持续运行(保活)iOS App后台保活,Android 后台运行白名单实现保活,保活息屏后台运行,uniapp后台保活,uniapp熄屏 后台运行,Android/ios进程保活/息屏后后台保持定位、网络运行,uniapp在android ios保活,挂后台可运行,安卓A

🏆 前端领域优质创作者 1万+

Struts2学习:在struts2中集成Spring

Spring的官方定义是:一个轻量级的IoC和Aop容器框架,它使用了一种叫做依赖注入的技术。所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到“工厂”中去,这个“工厂”通常由IoC容器提供。Struts2与Spring的集成要用到Spring插件包,这个包是同Struts2一起发布的。Spring插件是通过覆盖(override)Struts2的ObjectFac

鱼与飞鸟 2650

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Struts2与Spring集成

       最近我一直在考虑一个问题,华为的BME框架与裸奔的Struts2集成Spring到底差别在哪里呢?这两者在使用方式上基本相同,由于多次直接使用BME框架来开发MTV Portal系列项目,觉得BME框架整合集成Spring和Struts2做得相当好,使用比较方便,由于无法直接看到BME的源代码,遂决定对比一下在具体使用上BME框架与直接使用Struts2集成Spring的异同点,借此

张兆坤 4530

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

struts2集成spring3的原理分析

Struts2与Spring进行集成的主要是为了使用 Spring的依赖注入和控制反转特性来实例struts2的action对象和注入action所依赖的对象。 它们的集成方法非常简单,只需要在项目的类路径中加入struts2的spring插件包,无需额外配置。当然web.xml不能初始struts和spring的初始化配置。 web.xml中的struts、spring配置具体如下:

荔子——一路走来 566

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

spring集成struts2

转载地址:http://javeye.iteye.com/blog/940122  点击打开链接   在用spring集成struts时遇到的问题。   如果想用sprng 托管struts的action,需要引用struts2插件struts2-spring-plugin,该插件目录下会有一个配置文件strtus-plugin.xml, 该插件引入工程后,会自动设置Struts的Objec

醉翁的专栏 522

Spring IBatis Struts2 集成之二:Spring与Struts2集成

接首上一篇《Spring IBatis Struts2 集成之一:Spring与IBatis集成 》,本篇写Spring与Struts2的集成。 集成Spring  Struts2 的整个过程如下: 引入所有需要的*.jar文件。配置web.xml。配置strut

tony的专栏 1059

使用Maven配置Struts2 集成Spring

使用Maven配置Struts2 集成Spring上篇文章介绍了如何配置Struts2,但是Struts和Spring是怎么集成的呢,他们关联的配置是什么,带着这些疑问,我又开始找各种资料。开此文以记录。

飓风 4177
上一篇: Struts2简单开发流程
下一篇: Linux入门篇
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值