Spring 与Struts框架的整合常见方法

本文介绍了Spring与Struts框架整合的多种方法,包括不同级别的配置复杂度,从简单的插件配置到高级的依赖注入实践,帮助开发者更好地理解并应用这两种流行框架。

       Spring 与 Struts 框架的整合通常有好几种方法。每种方法都有不同的特点,而且之间的差异也挺大,对于初学者来说非常难已弄懂每种方法是如何正确配置的。通常大家在网上或者书上看到的 spring 与 struts 整 合都是只介绍一到两种,而且各自介绍的方法又大有差异。这样使初学者更难入手,甚至把各个方法混淆在一起(本人初学时就是如此)。后来经过一段时间的摸 索,参考了大量的资料后,总结出了以下四种方法。四种方法从易到难,从不常用到常用。当然这只是本人的个人观点,没有任何权威性可言,仅供参考。

 

(所有方法的前提是你已经为项目添加好了 spring 与 struts 类库)

第一种:

       需要配置的文件有: web.xml applicationContext.xml

步骤

1 、先配置 web.xml. ,首先让容器在启动的时候加载 applicationContext.xml

       需要在 web.xml 当中添加如下内容:       

< servlet >

    < servlet-name > context </ servlet-name >

    < servlet-class > org.springframework.web.context.ContextLoaderServlet </ servlet-class >

    < load-on-startup > 1 </ load-on-startup >

</ servlet >

( 这只是一种,还可以配置 Listener ,具体内容请上网搜索。 )

这里的介绍有个前提,那就是你的 applicationContext.xml 文件存放到 WEB-INF/ 文件夹下,不能是在别的文件夹,同时文件名也不可以更改为其它的文件名。

如果你真的更改了 applicationContext.xml 这个文件的路径或名字那么请在 web.xml 中加上以下内容:

<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value> /WEB-INF/classes/spring.xml </param-value>

</context-param>

(红色部分是你自己的路径和文件名)

 

2 、配置 applicationContext.xml

       这里假设你有一个 ( Userdao .java) 类用于进行数据库的操作(具体的操作可暂时忽略)

那么我们在 applicationContext.xml 文件中进行如下配置:

< bean id = "userdao" class = "cn.oyangk.dao.Userdao" >    </ bean >

 

同时也有一个接口 ( IUserDAO .java) ,为什么要接口呢?其实这是一种编程思想――面向接口编程。

你的 Userdao .java 类实现了这个接口,那么我们在 struts 当中的 Action 中可以这样操作了。

 

ServletContext context = this.getServlet().getServletContext();

WebApplicationContext wac = WebApplicationContextUtils. getWebApplicationContext(context);

// 只有通过此种配置方法才可以使用此方法

       IUserDAO dao = (IUserDAO)wac.getBean("userdao");

// 通过 WebApplicationContext 得到 bean

这样我们就可以将操作数据库的 DAO 通过 Spring 来管理了。当我们需要使用的时候,只需通过上面的方法就可以从 spring 当中得到我们想要的 DAO 类 .

所有方法的前提是你已经为项目添加好了 springstruts 类库)

首先你的 web.xml 文件不需要像第一种方法那样去做任何的添加。只需保持默认的就行,也就是在你添加好 strutsspring 支持后默认的内容就可以。

以下为你需要进行更改的步骤:

1、             首先为了让 struts 能认识到 spring 那么先在 struts-config.xml 文件中添加 spring 插件。具体内容如下:

<!--   添加 spring 支持 -->

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

       < set-property property = "contextConfigLocation"

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

    </ plug-in >

2、             修改你的 action 对应的 type 。这是因为,为了让 spring 来管理 action 那么我们需要将 action 生成权力交给 spring 具体参考以下例子:

< action

      attribute = "userForm"

      input = "/jsp/errors.jsp"

      name = "userForm"

      path = "/user"

      scope = "request"

      type="org.springframework.web.struts.DelegatingActionProxy" / > <!-- 截获 action ,让 spring 来生成 action -->

红色部分为关键的一句。通俗一点来讲,就是当我们提交表单时, struts 会把我们提交的请求先转发给 spring 。这里的红色部分所显示的类,就是用来截获我们的请求。

spring 截获到请求后。它就会在 applicationContext.xml 当中寻找对就的 bean 。这里通过 action 当中的 path=”/user” applicationContext.xml bean name 相等来进行匹配。

3、             修改 applicationContext.xml 文件。示例如下:

// 这个类是你的具体实现类,用来操作数据库的!当然他也实现了一个接口,这个接口我们会在 Action 当中使用到。

< bean id = "userdao" class = "cn.oyangk.dao.UserDAOImpl" > </ bean >

// 通过此处的 name = "/user" 与上面的 action 进行匹配。这样 spring 就知道我们的请求是转向哪个 action

    < bean name = "/user" class = "cn.oyangk.struts.action.UserAction" >

       < property name = "userdao" >

           < ref bean = "userdao" />

       </ property >

    </ bean >

4、             现在再来看 UserAction 这个类。

在这里我们只需要定义 UserDAOImpl 这个类的接口,并生成 setter 方法。

具体实现原理及过程:首先当我们提交一个请求到 struts 时, struts 会转发到 spring ,或者说是 spring 截获了我们的请求。然后 spring 根据 path 寻找对应的 action ,将请求转发到相应的 action ,同时实例化一个在此 action 当中设置好了的 dao 对象。此处为 userdao 。此后当我们在 action 类中进行操作时,由于 spring 已经将我们需要的 dao 类实例化好了,我们只需要拿到这个类的引用就可以。那如何拿到这个引用呢?这里就是为什么我们要在 action 定义这个类接口了。 spring 通过接口的 setter 方法使接口能够操作 userdao 了。

安全帽口罩检测数据集 一、基础信息 数据集名称:安全帽口罩检测数据集 图片数量: - 训练集:1690张图片 - 验证集:212张图片 - 测试集:211张图片 - 总计:2113张实际场景图片 分类类别: - HelmetHelmet:戴安全帽的人员,用于安全防护场景的检测。 - personwithmask:戴口罩的人员,适用于公共卫生监测。 - personwith_outmask:未戴口罩的人员,用于识别未遵守口罩佩戴规定的情况。 标注格式:YOLO格式,包含边界框和类别标签,适用于目标检测任务。 数据格式:JPEG/PNG图片,来源于实际监控和场景采集,细节清晰。 二、适用场景 工业安全监控系统开发: 数据集支持目标检测任务,帮助构建自动检测人员是否佩戴安全帽的AI模型,适用于建筑工地、工厂等环境,提升安全管理效率。 公共卫生管理应用: 集成至公共场所监控系统,实时监测口罩佩戴情况,为疫情防控提供自动化支持,辅助合规检查。 智能安防合规检查: 用于企业和机构的自动化安全审计,减少人工干预,提高检查准确性和响应速度。 学术研究AI创新: 支持计算机视觉目标检测领域的研究,适用于安全健康相关的AI模型开发和论文发表。 三、数据集优势 精准标注实用性: 每张图片均经过标注,边界框定位准确,类别定义清晰,确保模型训练的高效性和可靠性。 场景多样性覆盖性: 包含安全帽和口罩相关类别,覆盖工业、公共场所以及多种实际环境,样本丰富,提升模型的泛化能力和适应性。 任务适配性强: 标注兼容主流深度学习框架(如YOLO),可直接用于目标检测任务,便于快速集成和部署。 实际应用价值突出: 专注于工业安全和公共健康领域,为自动化监控、合规管理以及疫情防护提供可靠数据支撑,具有较高的社会和经济价值。
内容概要:本文围绕FOC电机控制代码实现调试技巧在计算机竞赛中的应用,系统阐述了从基础理论到多场景优化的完整技术链条。文章深入解析了磁链观测器、前馈控制、代码可移植性等关键概念,并结合FreeRTOS多任务调度、滑动窗口滤波、数据校验热仿真等核心技巧,展示了高实时性稳定性的电机控制系统设计方法。通过服务机器人、工业机械臂、新能源赛车等典型应用场景,论证了FOC在复杂系统协同中的关键技术价值。配套的千行级代码案例聚焦分层架构任务同步机制,强化工程实践能力。最后展望数字孪生、低代码平台边缘AI等未来趋势,体现技术前瞻性。; 适合人群:具备嵌入式开发基础、熟悉C语言实时操作系统(如FreeRTOS)的高校学生或参赛开发者,尤其适合参智能车、机器人等综合性竞赛的研发人员(经验1-3年为佳)。; 使用场景及目标:① 掌握FOC在多任务环境下的实时控制实现;② 学习抗干扰滤波、无传感器控制、跨平台调试等竞赛实用技术;③ 提升复杂机电系统的问题分析优化能力; 阅读建议:此资源强调实战导向,建议结合STM32等开发平台边学边练,重点关注任务优先级设置、滤波算法性能权衡观测器稳定性优化,并利用Tracealyzer等工具进行可视化调试,深入理解代码系统动态行为的关系。
【场景削减】拉丁超立方抽样方法场景削减(Matlab代码实现)内容概要:本文介绍了基于拉丁超立方抽样(Latin Hypercube Sampling, LHS)方法的场景削减技术,并提供了相应的Matlab代码实现。该方法主要用于处理不确定性问题,特别是在电力系统、可再生能源等领域中,通过对大量可能场景进行高效抽样并削减冗余场景,从而降低计算复杂度,提高优化调度等分析工作的效率。文中强调了拉丁超立方抽样在保持样本代表性的同时提升抽样精度的优势,并结合实际科研背景阐述了其应用场景价值。此外,文档还附带多个相关科研方向的Matlab仿真案例和资源下载链接,涵盖风电、光伏、电动汽车、微电网优化等多个领域,突出其实用性和可复现性。; 适合人群:具备一定Matlab编程基础,从事电力系统、可再生能源、优化调度等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于含高比例可再生能源的电力系统不确定性建模;②用于风电、光伏出力等随机变量的场景生成削减;③支撑优化调度、风险评估、低碳运行等研究中的数据预处理环节;④帮助科研人员快速实现LHS抽样场景削减算法,提升仿真效率模型准确性。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,理解拉丁超立方抽样的原理实现步骤,并参考附带的其他科研案例拓展应用思路;同时注意区分场景生成场景削减两个阶段,确保在实际项目中正确应用该方法
道路坑洞目标检测数据集 一、基础信息 • 数据集名称:道路坑洞目标检测数据集 • 图片数量: 训练集:708张图片 验证集:158张图片 总计:866张图片 • 训练集:708张图片 • 验证集:158张图片 • 总计:866张图片 • 分类类别: CirEllPothole CrackPothole IrrPothole • CirEllPothole • CrackPothole • IrrPothole • 标注格式:YOLO格式,包含边界框和类别标签,适用于目标检测任务。 • 数据格式:图片为常见格式(如JPEG/PNG),来源于相关数据采集。 二、适用场景 • 智能交通监控系统开发:用于自动检测道路坑洞,实现实时预警和维护响应,提升道路安全。 • 自动驾驶辅助驾驶系统:帮助车辆识别道路缺陷,避免潜在事故,增强行驶稳定性。 • 城市基础设施管理:用于道路状况评估和定期检查,优化维护资源分配和规划。 • 学术研究创新:支持计算机视觉在公共安全和交通领域的应用,推动算法优化和模型开发。 三、数据集优势 • 精准标注类别覆盖:标注高质量,包含三种常见坑洞类型(CirEllPothole、CrackPothole、IrrPothole),覆盖不同形态道路缺陷。 • 数据多样性:数据集涵盖多种场景,提升模型在复杂环境下的泛化能力和鲁棒性。 • 任务适配性强:标注兼容主流深度学习框架(如YOLO),可直接用于目标检测任务,支持快速模型迭代。 • 实际应用价值:专注于道路安全维护,为智能交通和城市管理提供可靠数据支撑,促进效率提升。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值