当Struts遇到Spring

SPRING 2.5 + STRUTS2 配置文件 注释备忘 最近接受了一个项目,SPRING 2.5 + STRUTS2 的。之前的项目只有接触过SPRING 1.X 和 STRUTS 1.X 的。 还是先熟悉一下配置文件的好。 SPRING 2.5 的配置果然比 SPRING 1.X / SPRING 2.0 简洁多了。 第一部分:WEB.XML<web-app version="2.4" xmlns="http:// 阅读详情

<load-on-startup>1</load-on-startup>这个在web.xml里,平时很少注意的,今天发现还是得关注下他的

前段时间练习SSH的组合,结果以前写的代码运行很好的,就从Tomcat5 换到了Tomcat6就出问题 了,老是说找不到某 个bean,最终的就是修改了下上面的那个参数就OK 了

Tomcat加载一个web应用的时候,我们 在WEB-INF/目录里有可能放了很多是应用文件,但是web.xml才是javaee规范 了的标准配置文件,因此,很多 框架都是把自己的配置文件放在web.xml里的

<servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>
   org.apache.struts.action.ActionServlet
  </servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
  <init-param>
   <param-name>debug</param-name>
   <param-value>3</param-value>
  </init-param>
  <init-param>
   <param-name>detail</param-name>
   <param-value>3</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

 Struts把中心控制器放这了,<load-on-startup>1</load-on-startup>参数让这个先加载,eclipse默认生成的好象这个参数是0,结果当我把Spring集成进去的时候,由于我的struts-config.xml文件里配置是这样的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="addRoleForm" type="cn.edu.ctgu.ghl.struts.form.AddRoleForm" />
    <form-bean name="departmentForm" type="cn.edu.ctgu.ghl.struts.form.DepartmentForm" />
    <form-bean name="employeeForm" type="cn.edu.ctgu.ghl.struts.form.EmployeeForm" />
    <form-bean name="consumerForm" type="cn.edu.ctgu.ghl.struts.form.ConsumerForm" />
    <form-bean name="wageForm" type="cn.edu.ctgu.ghl.struts.form.WageForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards >
    <forward name="login" path="/login.jsp" />
    <forward name="failure" path="/admin/failure.jsp" />

  </global-forwards>

  <action-mappings >
    <action
      attribute="addRoleForm"
      input="/admin/addRole.jsp"
      name="addRoleForm"
      path="/admin/addRole"
      scope="request"
     >
      <forward name="failure" path="/admin/failure.jsp" />
      <forward name="success" path="/admin/listRole.jsp" />
    </action>
   
   
    <action
      attribute="departmentForm"
      input="/admin/deparment.jsp"
      name="departmentForm"
      parameter="action"
      path="/admin/department"
      scope="request"
      type="cn.edu.ctgu.ghl.struts.action.DepartmentAction">
      <forward name="failure" path="/admin/failure.jsp" />
      <forward name="addDepartment" path="/admin/department.jsp" />
     
     
     
      <forward name="updateDepartment" path="/admin/department.jsp" />
      <forward name="updateSuccess" path="/admin/listDepartment.jsp" />
     
     
      <forward name="listDepartment" path="/admin/listDepartment.jsp" />
      <forward name="removeSuccess" path="/admin/listDepartment.jsp" />
      <forward name="addSuccess" path="/admin/listDepartment.jsp" />
     
      <forward name="noRight" path="/admin/failure.jsp" />
     
     
     
     
     
     
    </action>
    <action
      attribute="employeeForm"
      input="/admin/employee.jsp"
      name="employeeForm"
      parameter="action"
      path="/admin/employee"
      scope="request"
      type="cn.edu.ctgu.ghl.struts.action.EmployeeAction" >
      <forward name="addEmployee" path="/admin/employee.jsp" />
      <forward name="listEmployee" path="/admin/listEmployee.jsp" />
      <forward name="addEmployeeSuccess" path="/admin/success.jsp" />
      <forward name="employeeInfo" path="/admin/employeeInfo.jsp" />
      <forward name="updateEmployee" path="/admin/employee.jsp" />
      <forward name="updateEmployeeSuccess" path="/admin/success.jsp" />
      <forward name="noRight" path="/admin/failure.jsp" />
      <forward name="searchEmployee" path="/admin/searchEmployee.jsp" />
      <forward name="redeploy" path="/admin/redeploy.jsp" />
      <forward name="attendance" path="/admin/attendance.jsp" />
    </action>
    <action
      attribute="consumerForm"
      input="/login.jsp"
      name="consumerForm"
      parameter="action"
      path="/consumer"
      scope="request"
      type="cn.edu.ctgu.ghl.struts.action.ConsumerAction" >
      <forward name="loginSucess" path="/index.jsp" />
      <forward name="updatePassword" path="/updatePassword.jsp" />
    </action>
    <action
      attribute="wageForm"
      input="/admin/wage.jsp"
      name="wageForm"
      parameter="action"
      path="/admin/wage"
      scope="request"
      type="cn.edu.ctgu.ghl.struts.action.WageAction" >
      <forward name="addWage" path="/admin/wage.jsp" />
      <forward name="listWage" path="/admin/listWage.jsp" />
      <forward name="success" path="/admin/success.jsp" />
    </action>

 


  </action-mappings>

  <!-- 这里的controller的作用是请求处理器,配置了controller就不必在每个action里设置type属性了 -->
 
 <controller>
  <set-property property="processorClass"
   value="org.springframework.web.struts.DelegatingRequestProcessor" />
 </controller>
  <message-resources parameter="cn.edu.ctgu.ghl.struts.ApplicationResources" />
 
  <!-- =======在这的配置也初始化一个Spring的bean容器,而且这个容器是以在ContextLoaderServlet里初始化的为父的,
   所以这个容器里的bean可以访问ContextLoaderServlet里初始化容器里的bean======== -->
  <plug-in
  className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation"
   value="/WEB-INF/action-servlet.xml" />
 </plug-in>
</struts-config>

而在action-servlet.xml里的配置的bean要访问在web.xml里配置的bean ,web.xml里有contextConfigLocation,确定了Spring配置文件路径,/WEB-INF/webApplicationContext.xml,/WEB-INF/dataAccessContext.xml
这两个文件里的bean 应该可以认为是在同一个容器中的,而在struts-config.xml里配置的action-servlet.xml则是以这个容器为父容器的,也正是这样,所以在action-servlet.xml里配置的bean 才能够访问WEB-INF/webApplicationContext.xml,/WEB-INF/dataAccessContext.xml里配置的bean 的,如此说来要让action-servlet.xml里的bean 能访问到父容器里的bean ,那么WEB-INF/webApplicationContext.xml,/WEB-INF/dataAccessContext.xml这个里的bean就应该在action-servlet.xml里的bean 前加载。所以这里对较低版本的tomcat来说就得用<load-on-startup>0</load-on-startup>参数来控制加载顺序了,高版本的可以直接用

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener> 
这也是推荐的方法

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/webApplicationContext.xml,/WEB-INF/dataAccessContext.xml
  </param-value>
 </context-param>
 <!-- 注意,这个地方如果用 listener org.springframework.web.context.ContextLoaderListener老是出错,网上说好像和tomcat版本有关-->

 <!-- tomcat5.523用listener org.springframework.web.context.ContextLoaderListener-->
 <!--
  <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener> 
 -->
 <!-- tomcat5.520用org.springframework.web.context.ContextLoaderServlet-->

 <servlet>
  <servlet-name>SpringContextServlet</servlet-name>
  <servlet-class>
   org.springframework.web.context.ContextLoaderServlet
  </servlet-class>
  <load-on-startup>0</load-on-startup>
 </servlet>

Spring整合Struts2 spring整合Struts2,使得struts的action从spring中获取。login.jsp Insert title here 阅读详情

相关推荐

Spring与Struts整合深入解析

整合框架技术是现代Java Web开发的重要组成部分。Spring和Struts作为两个功能强大的框架,它们的整合能够提升开发效率、优化资源管理和提升项目的可维护性。Spring框架以其轻量级的控制反转(IoC)和面向切面编程(AOP)特性,广泛应用于业务逻辑层和数据访问层。而Struts则在视图层和控制器层发挥着强大的MVC架构支持。在实际开发中,将Spring和Struts进行整合,可实现更加模块化和松耦合的应用程序,这不仅对开发人员友好,而且在后期的维护和扩展上,也具有显著的优势。

weixin_36019375的博客 815

不错的struts插件:Struts Spring Plugin

http://struts.sourceforge.net/struts-spring/不错的struts插件,可以让你用spring的Ioc容器来管理你的Action,以及为action注入需要的对象。配置使用也比较简单。目前新的版本spring已经集成了这个插件,不用下载安装就可以使用。spring的apidoc里还有相关的说明。   在struts-config.xml中加入插件的配置:  

zmxj的专栏 4420

医疗影像技术实战:如何用Python快速生成DRR图像(附完整代码)

本文详细介绍了如何使用Python实现数字重建放射影像的快速生成。通过实战代码,从基础光线投射算法到性能优化,逐步讲解DRR图像生成的核心原理与工程实践,帮助开发者掌握医疗影像处理的关键技术,赋能放射治疗规划与图像引导手术等临床工具开发。

k8l9m0n的博客 72

Spring集成Struts

Spring集成Struts的主要目的是,将Struts2中Action的实例化工作交给Spring的容器同一管理,同时使Struts2中的Action实例能够访问Spring提供的业务逻辑组件资源。 集成步骤: 1.导入Spring框架依赖的jar包 2.导入需要的Struts2类的jar包 注意此处需要使用合适版本的jar包,否则会导致冲突;最好在一次使用后将所有的jar包存入User Lib...

Test_tju的博客 318

Cadence Allegro 17.4 保姆级教程:PCB位号重排与反标回原理图完整避坑指南

本文详细解析了Cadence Allegro 17.4中PCB位号重排与反标回原理图的全流程,包括安全工程准备、智能重排策略和反标黄金法则。特别针对芯片封装协同设计(Co-Design)场景,提供可追溯的版本管理和故障恢复方案,帮助工程师避免常见位号陷阱,确保设计文件一致性。

weixin_30613433的博客 441

C++碰撞检测库FCL安装(MinGW,CMake)

FCL碰撞检测库、libccd\Eigen库编译配置,全流程问题记录

weixin_45650767的博客 4677

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

国内合规开通ChatGPT Plus实操指南:银行卡绑卡与支付全解析

ChatGPT Plus 是 OpenAI 官方推出的高级订阅服务,基于 GPT-4o 多模态大模型提供语音交互、图像理解与长上下文处理能力。其核心使用前提在于完成合规的国际支付绑定,而非网络接入方式。技术原理上,OpenAI 采用 Stripe 支付网关进行风控校验,重点匹配银行跨境权限、卡片类型(仅支持 Visa/Mastercard/Amex 信用卡)、BIN 号段及地理位置一致性。该机制决定了95%的绑卡失败源于银行端配置缺失或卡片不兼容,而非网络问题。实际应用中,PayPal 作为中间支付层可显著

chuannaoxuan4674的博客 2005

Spring + Struts 框架整合

Spring + Struts 框架整合 项目 项目代码来源how2java 本博客简单记录一下学习框架整合的心得体会。 指定对象工厂 即使得Struts的action的创建交由Spring管理。 <constant name="struts.objectFactory" value="spring"/> Spring配置 在WEB-INF文件夹之下: 配置一个application...

xiabenshu的博客 262

VTK API 详解(134):vtkOBJWriter - 写入 OBJ 模型

是 VTK 中用于将数据写入 Wavefront OBJ 文件格式的类。OBJ 格式是广泛支持的 3D 网格模型格式,支持顶点、面和基本几何信息的保存,便于模型在多种三维软件间交换。

yumeiguo的博客 140

YOLO26涨点改进 | 全网首发Conv独家改进篇 | CVPR 2025 | YOLO26引入FDConv频率动态卷积改进,含FDC3k2二次创新,小目标检测,能够捕捉更加丰富和复杂的特征信息

本文提出了一种频率动态卷积(FDConv)模块,用于改进YOLO26目标检测模型的性能。FDConv通过在傅里叶域内划分参数预算,构建具有频率多样性的权重,有效提升了模型对低频和高频信息的处理能力。该模块包含内核空间调制(KSM)和频率带调制(FBM)两个关键组件,分别实现空间级和频域级的动态调节。实验表明,FDConv仅增加3.6M参数就能超越其他需要大幅增加参数的方法,并在目标检测、实例分割等任务中表现优异。文章详细介绍了FDConv的原理、实现方法及在YOLO26中的集成方式,提供了完整的代码实现。

Ai缝合怪、助力小伙伴高效发论文 250

Struts+Spring+Hibernate实例——struts-config.xml文件

Struts+Spring+Hibernate实例——struts-config.xml文件xml version="1.0" encoding="ISO-8859-1" ?> DOCTYPE struts-config PUBLIC          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"        

reverocean的专栏 2305

【大模型】从0到1:DeepSeek + Coze API调用全攻略,企业,开发个人专属AI智能体使用详解,小白也能轻松上手

本文介绍了如何通过API将Coze智能体集成到自有系统中的完整步骤:1)获取API token和个人工作空间的space_id;2)通过GET请求获取bot_id;3)使用POST发起对话请求,需包含bot_id、user_id和问题内容;4)通过两次API调用异步获取响应消息。文章还解释了Coze采用异步处理机制的原因,并预告了下期将讲解Java调用Coze接口的实现方法。整个过程需要使用API工具进行调试,确保了系统集成的可行性。

qq_27246521的博客 824

Struts+Spring+Hibernate 的两种组合

这两天从网上 down 了两个 Struts+Spring+Hibernate 的例子,一个是 Spring Live 中第二章的 myusers,一个是 Wiring your web application with open source java(这个文档网上有中文也有英文的) 中的例子,这里我取名为 SSHTest。 在 MyEclipse 中建立这两个工程并调试成功后,我看到这两个工程

小瑜儿温暖阳光专栏 3559

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现(完结,附带项目源码)

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4657

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

struts的包就不列了,只列下spring

tyt叮当tyt的专栏 542

计算机控制技术及应用

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

STRUTS+SPRING

spring(1)为struts+spring,spring管理dao和service层

知识库 132

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

spring+struts+hibernate 搭建项目

记录一下spring+struts+hibernate搭建的项目。 目录结构: spring-context.xml: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:aop="...

weixin_34204722的博客 236

Spring整合Struts详解

Spring整合Struts详解

WYZSC的专栏 1339

spring struts hibernate web

配置数据源,这里面配置连接数据库的一些信息,这里mysql的数据连接8">配置sessionFactory以及注入dataSource再配置一些其他属性相当于把dateSource里面的配置注入,这样可以连接数据库对于hibernate实体类的配置这个是annotation方式对于hibernate语句以及在控制台输出的的一些配置truetruetruenoneupdate。

2501_90249109的博客 612

spring struts_使用Spring更好地处理Struts动作

控制倒置(IOC)设计模式已经产生嗡嗡声已经很长时间了,您肯定已经听说过。 如果您以任何能力使用过Spring框架,那么您已经了解了其工作原理。 在本文中,当我使用IOC模式的原理将Struts应用程序注入Spring框架时,您将直接了解IOC模式的功能。 将Struts应用程序集成到Spring框架中的优点是多方面的。 首先,Spring的显式设计旨在解决JEE的一些实际问题,例如复杂性...

cuyi7076的博客 215

Struts2+Spring集成合并

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

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

Struts1.整合Spring的三种方法

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

huanghm88的专栏 2345

spring整合struts2

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

weixin_42051953的博客 276

通过 Struts提供的Spring插件集成Spring

Edit Page  Browse Space  Add Page   Add News Spring is a lightweight container, providing centralized, automated configuration and wiring of your application objects, using

joyyq的专栏 1311
上一篇: 关于MySQL初学工具必备
下一篇: 要努力学习数据库-StoreProcedure,Order by,group by
javaokay
博客等级 码龄20年 6粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值