Spring 和struts1 整合的三种方式

Spring与Struts1的整合方式 Spring与Struts1的整合方式 无论您使用哪种技术,都需要使用 Spring 的 ContextLoaderPlugin 为 Struts 的 ActionServlet 装载 Spring 应用程序环境。就像添加任何其他插件一样,简单地向您的 struts-config.xml ... 阅读详情


Spring 和 struts1 整合的三种方式。

1,使用Spring 的 ActionSupport 
2, 使用Spring 的 DelegatingRequestProcessor 类。
3,全权委托。

无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在 struts 中加入一个插件。
struts-config.xml中

 <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
 </plug-in>


spring 的配置文件被作为参数配置进来。这样可以省略对web.xml 文件中的配置。确保你的applicationContext.xml 在WEB-INF目录下面

1,使用Spring的ActionSupport .
Spring 的ActionSupport 继承至 org.apache.struts.action.Action 
ActionSupport的子类可以或得 WebApplicationContext类型的全局变量。通过getWebApplicationContext()可以获得这个变量。

这是一个 servlet 的代码:
public class LoginAction extends org.springframework.web.struts.ActionSupport {
 
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
                //获得  WebApplicationContext  对象              
  WebApplicationContext ctx = this.getWebApplicationContext();
  
  LoginDao dao = (LoginDao) ctx.getBean("loginDao");
  User u = new User();
  
  u.setName(loginForm.getName());
  u.setPwd(loginForm.getPwd());
  
  
  if(dao.checkLogin(u)){
   return mapping.findForward("success");
  }else{
   return  mapping.findForward("error");
  }
  
 }
}

applicationContext.xml 中的配置
<beans>
 <bean id="loginDao" class="com.cao.dao.LoginDao"/>
</beans>

这中配置方式同直接在web.xml文件配置差别不大。注意:Action继承自 org.springframework.web.struts.ActionSupport 使得struts和spring耦合在一起。
但实现了表示层和业务逻辑层的解耦(LoginDao dao = (LoginDao) ctx.getBean("loginDao"))。


2,使用Spring 的 DelegatingRequestProcessor 类
DelegatingRequestProcessor  继承自 org.apache.struts.action.RequestProcessor 并覆盖了里面的方法。
sturts-config.xml  中  <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> 通过 <controller >来替代
                        org.apache.struts.action.RequestProcessor 的请求处理。

public class LoginAction extends Action {
 //利用spring来注入这个对象。
 private LoginDao dao ;
 
 public void setDao(LoginDao dao) {
  System.out.println("执行注入");
  this.dao = dao;
 }

 public LoginDao getDao() {
  return dao;
 }

 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
  //这样一改这行代码似乎没有必要了。
  //WebApplicationContext ctx = this.getWebApplicationContext();
  //LoginDao dao = (LoginDao) ctx.getBean("loginDao");
 
  User u = new User();
  
  u.setName(loginForm.getName());
  u.setPwd(loginForm.getPwd());
  
  //直接用dao来调用spring会将这个对象实例化。
  if(dao.checkLogin(u)){
   return mapping.findForward("success");
  }else{
   return  mapping.findForward("error");
  }
  
 }
}
这里的。
LoginAction extends Action 说明 struts 每有和spring 耦合。
看一下
applicationContext.xml 中的配置。
<beans>
 <bean id="loginDao" class="com.cao.dao.LoginDao"/>
 
 <bean name="/login" class="com.cao.struts.action.LoginAction">
  <property name="dao">
   <ref local="loginDao"/>
  </property>
 </bean>
</beans>

这里 name="/login" 与struts 中的path匹配 
    class="com.cao.struts.action.LoginAction" 与struts 中的type匹配

还要为 LoginAction 提供必要的setXXX方法。 获得ApplicationCotext和依赖注入的工作都在DelegatingRequestProcessor中完成。


3,全权委托:
Action 的创建和对象的依赖注入全部由IOC容器来完成。 使用Spring的DelegatingAcionProxy来帮助实现代理的工作 
org.springframework.web.struts.DelegatingActiongProxy继承于org.apache.struts.action.Action .


全权委托的配置方式同 方式 2 类似 (applcationContext.xml文件的配置和 Action类的实现方式相同)。
<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="loginForm" type="com.cao.struts.form.LoginForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
 <action-mappings >
    <!-- type指向的是spring 的代理类 -->
    <action
      attribute="loginForm"
      input="login.jsp"
      name="loginForm"
      path="/login"
      scope="request"

      type="org.springframework.web.struts.DelegatingActionProxy" >
      
      <forward name="success" path="/ok.jsp" />
      <forward name="error" path="/error.jsp" />
    </action>
 
 </action-mappings>
 
  
  <message-resources parameter="com.cao.struts.ApplicationResources" />

 <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
 </plug-in>

</struts-config>
不同之处
1, <action>中 type指向的是spring 的代理类

2, 去掉struts-config.xml中 <controller >

 

三种整和方式中我们优先选用 全权委托的方式。
理由:
1,第一种使得过多的耦合了Spring和Action .
2,RequestProcessor类已经被代理 如果要再实现自己的实现方式(如:编码处理)怕有点麻烦。

总结一下:
整合工作中的步骤:
1,修改struts-config.xml   
2, 配置applicationContext.xml
3, 为Action添加get/set方法 来获得依赖注入的功能。

【VTKExamples::Meshes】第十二期 QuadricDecimation 本文分享VTK样例QuadricDecimation,并解析接口vtkQuadricDecimation,希望对各位小伙伴有所帮助! 阅读详情

相关推荐

Windows Server远程桌面断开后,PyWinAuto/按键精灵脚本失效?试试这个‘会话保持’的终极配置

本文深入解析Windows Server远程桌面断开后导致PyWinAuto/按键精灵脚本失效的问题,提供会话保持的终极配置方案。通过转换到控制台会话(console模式)和调整组策略,确保自动化程序在断开连接后持续稳定运行,适用于Windows Server各版本。

weixin_28738165的博客 228

八、框架整合(一) - Spring 与 Struts整合

一、spring 与 struts整合 Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! 配置struts的核心过滤器,拦截请求资源。 配置spring的监听器,初始化IOC容器。 1.1 引入jar文件 1. 引入struts.jar 相关jar文件 2. 引入spring-core 相关jar文件

weixin_45602227的博客 542

IEC103协议实战指南:报文解析与传输优化策略

本文深入解析IEC103协议在电力自动化系统中的核心应用,重点拆解其固定帧与可变帧两种报文格式,并详细阐述了主从问答与非平衡传输机制。文章结合实战经验,针对报文解析中的常见问题(如字节序、超时重发)提供了解决方案,并探讨了传输层优化策略,旨在帮助工程师实现更可靠、高效的通信链路。

r2s3t4的博客 542

Spring 和struts 整合的三种方式

Spring 和 struts 整合的三种方式。1,使用Spring 的 ActionSupport 2, 使用Spring 的 DelegatingRequestProcessor 类。3,全权委托。无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在 struts 中加入一个插件。struts-config.xml中   ="/WEB-INF/app

Shine的专栏 1万+

传感器采集信息的频率(采样频率)

较高的采集频率通常能提供更详细的信息,但也会增加数据处理和存储的负担。在某些应用中,较高的采样频率可能是必要的,而在其他情况下,则可能会选择适当的低采样频率以降低功耗和数据处理压力。传感器采集信息的频率(采样频率)是指传感器在一定时间内对输入信号进行采样的次数。对于一些需要快速检测和响应的应用,如运动传感器、声音传感器等,高采样频率是至关重要的。高采样频率通常需要更多的功耗和更大的存储容量,因为产生的数据量更大。例如,对于快速运动的对象,较低的采样频率可能无法捕捉到运动的真实轨迹。

chen的博客 5349

PT静态时序分析实战:从基础命令到高级报告解析

本文详细介绍了PT(PrimeTime)静态时序分析(STA)的实战技巧,从基础命令如pt_shell和report_timing的使用,到高级报告解析与问题排查。通过丰富的实例和脚本示例,帮助工程师快速掌握时序分析的核心技能,提升芯片设计验证效率。

weixin_29289821的博客 957

Boost电路双闭环控制MATLAB仿真

通过电流内环控制,我们可以改变目标平均电流基准值的大小来闭环改变占空比,再改变输出电压与电路电流,直到电路电流达到基准电流才达到稳态。但是我们的基准电流依旧是外部提供的,下边的电压外环控制就是电路自己计算基准电流。

Fourglsl的博客 5849

spring+struts整合

首先是为什么整合strut2和spring?   struts2的action是由struts2自己创建出来的,它不受spring的委托,也不受spring的管理,所以无法进行自动注入;spring和struts的结合点就在于struts的action不能直接注入service,都是通过自己来进行创建的;   在整合spring和struts2的时候需要使用一个apache提供的第三方的插件包...

weixin_30587025的博客 462

DSP复习笔记(5)——外部接口模块XINTF

【注意】 1. 芯片型号:TMS320F28335 2. 适用于NJUSTEO李彧晟老师课程 3. 参考资料:《TMS320F28335 DSP原理、开发及应用》 4. 对应PPT第二章 5. 本章内容较多而且较为重要,请结合PPT一起复习

BerenCamlost的博客 1万+

[数学建模][2012年A国赛模拟] 3. 葡萄酒的评价

暑期学校数学建模培训第三次模拟:2012年国赛A题,一道完全统计方面的题目。据老师反映当年有位老师所带领小组取得“全国10佳优秀论文奖”,我们大组搞统计的老师建模能力不行,但其统计理论非常扎实,在此期间给予我们非常大的帮助,十分感谢老师的倾囊相授。我们小组的定位也不在统计方向,主攻物理建模及优化模型,故本次模拟就用SPSS软件简单做了下,还是学到了多元统计的许多知识,达到了本次训练的目的。 ...

Y-puyu 的博客 3万+

spring+struts

在spring和struts整合之前,需要导入spring和struts的jar包   原理: 1、用spring来管理struts的action:     在spring的配置文件中配置action和action所依赖的业务逻辑对象。 2、因为Action要调用业务逻辑对象,将业务逻辑对象注入到Action中,从而避免在Action类中直接进行代码查找:      因此Action中要...

wangjinyong的博客 136

实测可复现|2026 Cloudflare盾v4.0反反爬全实战:从JS/WASM逆向到JA3指纹伪装,手把手突破拦截(附完整逆向代码+避坑手册)

本文以2026年Cloudflare盾v4.0(集成Shield Synapse v2.0)为核心,全程以实战复盘为视角,拆解了从JS/WASM混合逆向、全维度指纹伪装(JA3+浏览器指纹)、人类行为模拟,到代理池搭建的全流程,整合了完整可复现的代码,所有步骤和踩坑点均为实测所得,无任何AI套话,新手也能跟着复现,最终实现爬取成功率从12%提升至95%+。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1690

Spring 和 struts1.2 整合的三种方式

Spring 和 struts1.2 整合的三种方式 1,使用Spring 的 ActionSupport 2, 使用Spring 的 DelegatingRequestProcessor 类。 3,全权委托。 无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在 struts 中加入一个插件。 struts-config.xml中     ="

在森林狂奔的鱼 1417

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Struts1和Spring整合三种启动Spring容器的方式

无论使用哪种方式整合,都需要为 Struts装载 Spring 应用上下文环境。有以下三种方式: 1) 在struts-config.xml中使用Struts Plugin <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml,/WEB-INF/action

1020

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【转】Spring 和 struts1.2 整合的三种方式

1,使用Spring 的 ActionSupport 2, 使用Spring 的 DelegatingRequestProcessor 类。3,全权委托。无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在 struts 中加入一个插件。struts-config.xml中spring 的配置文件被作为参数配置进来。这样可以省略对web.xml 文件中的配置。确保你的applicationContext.xml 在WEB-INF目录下面1,使用Spring的ActionSup

659

struts1和spring整合

简要总结三种struts1.x 和  spring2.0 的整合方式,详见附件文档!

programloverjack的专栏 119

spring整合struts

此篇文章为转载,留作记录,spring和struts1.X版本的集成有三种方式,而Struts 2(或者叫做WebWork 2),只需要在struts.prperties中加入struts.objectFactory=spring,指定spring作为Struts的bean工厂就可以了 Sping和Struts1.X集成的三种方法:    1,使用Spring 的 ActionSupport ...

feiyeguohai1的博客 135

Struts1.整合Spring的三种方法

下面的是STRUTS1 与 SPRING的结合。 使用 Spring 的 ActionSupport 类整合 Structs1.X, 使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor,将 Struts Action 管理委托给 Spring 框架装载应用环境:      无论您使用哪种技术,都需要使用

huanghm88的专栏 2345

spring整合struts1三种方式

spring和struts整合方式 1、  最简单方式 ①struts来装载spring的应用环境。就是在 struts 中加入一个插件。 struts-config.xml中 ="/WEB-INF/applicationContext.xml"/> ②几乎与struts无关了,相当于为整合项目加入spring支持,将①的配置放在web.xml中了 context-pa

ryan1214的专栏 760

Struts1和Spring的整合

Struts 1 和 Spring 的整合注意是Struts 1.2.6 和 Spring 2.6的整合,感觉Struts 1现在使用的不多,不过了解下也无妨。步骤如下:1.首先在web.xml中启用ActionServlet,设置过滤的URL2.继承org.apache.struts.action.Action,实现Action层3.配置struts-config.xml,用于生成Action4.

cceking的博客 2711

spring整合Struts的三种方式,及优缺点

2010-04-04前提:必须首先在struts框架中注册Spring在struts-config.xml中的添加一个spring的插件  value="spring的xml文件的路径" />三种实现方式:****1 Action===>org.springframework.web.struts.ActionSupport同时覆盖ActionSupport的execute方法获取

anyue824的专栏 1047

Struts整合Spring三种方式

Struts整合Spring三种方式 接下来的每种整合技术(或者窍门)都有自己的优点和特点。我偏爱其中的一种,但是我知道这三种都能够加深您对 Struts 和 Spring 的理解。在处理各种不同情况的时候,这将给您提供一个广阔的选择范围。无论使用哪种技术,都需要使用 Spring 的 ContextLoaderPlugin 为 Struts 的 ActionServlet 装载 Spr

小菜的码篮 578
上一篇: Spring依赖注入(DI)的三种方式
下一篇: spring 与struts2 的整合
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值