struts和spring的整合方式

本文介绍Struts与Spring框架的整合方法,包括如何通过修改配置文件实现Spring对Struts Action的管理,以及如何利用Spring的依赖注入等功能增强Struts应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts与Spring整合方法之一- -



最近用Struts,Spring做了一个程序,看了很多这方面的资料和代码。这篇是对Struts和Spring协同工作所需要做的工作的总结。

Struts和Spring协同工作有两种方法:

一种是在Struts的Action中直接调用Spring的Bean;另一种方式是将Struts的Action作为Spring Beans,由Spring进行管理。

要使Struts与Spring协同工作需要修改Struts的配置文件struts-config.xml和Spring的配置文件applicationContext.xml

修改struts-config.xml

<struts-config>

<plug-in

className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation"

value="/WEB-INF/applicationContext.xml" />

</plug-in>

</struts-config>

通过plug-in我们实现了Spring Context的加载,我们还需要修改配置,将Struts Action交给Spring容器进行管理:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts

Configuration 1.2//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>

<!-- ================ Form Bean Definitions ================-->

<form-beans>

<form-bean name="userForm"

type="org.apache.struts.validator.DynaValidatorForm">

<form-property name="user" type="org.appfuse.model.User"/>

</form-bean>

</form-beans>

<!-- ================ Action Mapping Definitions ================-->

<action-mappings>

<action path="/user"

type="org.springframework.web.struts.DelegatingActionProxy"

name="userForm" scope="request" parameter="method" validate="false">

<forward name="list" path="/userList.jsp"/>

<forward name="edit" path="/userForm.jsp"/>

</action>

</action-mappings>

<!-- <action-mappings>

<action path="/user"

type="com.ctbr.springtest.web.action.UserAction"

name="userForm" scope="request" parameter="method" validate="false">

<forward name="list" path="/userList.jsp"/>

<forward name="edit" path="/userForm.jsp"/>

</action>

</action-mappings>-->

<!-- ================= Plug Ins Configuration ================-->

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation"

value="/WEB-INF/applicationContext.xml,

/WEB-INF/action-servlet.xml"/>

</plug-in>

</struts-config>

在Action配置上也需要做修改,上面的action-mapping配置中包含了loginForm的两种配置形式,第一种是面向改造后的形式,第二种(作为注释)是与之对应的传统Struts配置方式。

我们试图在action-mapping 中增加一个名为userForm的Action,传统方式中,直接将类名作为action节点的type属性,Struts将根据type中的类名加载对应的Action实例。

而在面向SS组合的配置方式中,我们用Spring提供的DelegatingActionProxy 作为Action的type属性。DelegatingActionProxy同样是org.apache.struts.action.Action的一个子类,它将把调用请求转交给真正的Action实现。下面是DelegatingActionProxy的execute方法代码:

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception {

//获得实际的Action实例,并将请求转交

Action delegateAction = getDelegateAction(mapping);

return delegateAction.execute(mapping, form, request, response);

}

如此一来,Struts 在运行期加载的实际上是DelegatingActionProxy , 而DelegatingActionProxy则实现了针对实际Action的调用代理,Struts最终调用的将是由Spring管理的Action实例。

通过这样的方式,Spring 获得了对Action 实例的管理权,它将对Action进行调度,并为Struts提供所需的Action实例。既然Action已经由Spring全权接管,那么我们就可以将此Action看作是Spring中的一个Bean,它可享受Spring提供的所有服务(依赖注入、实例管理、事务管理等)。

与之对应,Spring Context配置如下:

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://www.springframework.org/dtd/spring-beans.dtd">

<!-- 数据源配置 -->

<beans>

<bean id="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName">

<value>com.mysql.jdbc.Driver</value>

</property>

<property name="url">

<value>jdbc:mysql://localhost:3306/bbs</value>

</property>

<property name="username">

<value>bao</value>

</property>

<property name="password">

<value>double</value>

</property>

</bean>

<!-- DAO配置 -->

<bean id="userDao" class="com.ctbr.springtest.dao.jdbc.UserDaoJdbc">

<property name="dataSource">

<ref bean="dataSource"/>

</property>

</bean>

<bean id="postDao" class="com.ctbr.springtest.dao.jdbc.PostDaoJdbc">

<property name="dataSource">

<ref bean="dataSource"/>

</property>

</bean>

<!-- <bean id="replyDAO" class="com.ctbr.springtest.dao.jdbc.ReplyDaoJdbc">

<property name="postDao">

<ref bean="postDAO" />

</property>

</bean>

-->

<!-- Service配置 -->

<bean id="userService"

class="com.ctbr.springtest.service.impl.UserServiceImpl"

autowire="byType" />

<bean id="postService"

class="com.ctbr.springtest.service.impl.PostServiceImpl">

<!-- <property name="replyDao">

<ref bean="replyDao" />

</property>-->

</bean>

<!-- Action配置 -->

<bean name="/user" class="com.ctbr.springtest.web.action.UserAction"

singleton="false">

<property name="userService">

<ref bean="userService"/>

</property>

</bean>

</beans>
内容概要:本文介绍了基于SMA-BP黏菌优化算法优化反向传播神经网络(BP)进行多变量回归预测的项目实例。项目旨在通过SMA优化BP神经网络的权重阈值,解决BP神经网络易陷入局部最优、收敛速度慢及参数调优困难等问题。SMA算法模拟黏菌寻找食物的行为,具备优秀的全局搜索能力,能有效提高模型的预测准确性训练效率。项目涵盖了数据预处理、模型设计、算法实现、性能验证等环节,适用于多变量非线性数据的建模预测。; 适合人群:具备一定机器学习基础,特别是对神经网络优化算法有一定了解的研发人员、数据科学家研究人员。; 使用场景及目标:① 提升多变量回归模型的预测准确性,特别是在工业过程控制、金融风险管理等领域;② 加速神经网络训练过程,减少迭代次数训练时间;③ 提高模型的稳定性泛化能力,确保模型在不同数据集上均能保持良好表现;④ 推动智能优化算法与深度学习的融合创新,促进多领域复杂数据分析能力的提升。; 其他说明:项目采用Python实现,包含详细的代码示例注释,便于理解二次开发。模型架构由数据预处理模块、基于SMA优化的BP神经网络训练模块以及模型预测与评估模块组成,各模块接口清晰,便于扩展维护。此外,项目还提供了多种评价指标可视化分析方法,确保实验结果科学可信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值