167.SSH整合

本文详细介绍Struts2、Hibernate和Spring三大框架在项目中的整合过程,包括各框架的作用、整合步骤及测试方法,实现MVC模式、面向接口编程及声明式事务管理。

一、明确三大框架在项目中的作用

       1. Struts2

              充当MVC的角色

       2. Hibernate

              Dao层使用Hibernate来实现

       3. Spring

              使用Spring实现声明式事务管理

              使用Spring的Ioc和DI实现完全的面向接口编程

二、三大框架整合步骤

         1. 新建一个工程,将工程编码和JSP编码都改成UTF-8

         2. 在WEB-INF/lib目录下导入三大框架的架包,推荐按类型分文件夹导入,如图

             

        3. 建立三个Source Folder,因为已经有src了,再建两个[config和test],明确它们的作用,并设置相应的包。Source Folder的根目标下就是classpath。

             

        4. 在Dao和Service层相应的包中写上接口和类[以Person为例]

                DAO中只有一个public void savePerson(Person person)方法。

        5. 将Spring配置文件进行分类管理,如图

      

             将不同功能分开到子配置文件中,然后在applicationContext.xml文件中进行整合。如图

在applicationContext-db.xml文件中配置数据库连接池、sessionFactory、事务管理器、通知以及切面。如图

从上面可以看出,hibernate的相关配置基本都在sessionFactory里有所体现了,只剩下实体类的配置文件还放在hibernate.cfg.xml文件中,其实完全可以也放在spring中,上图注释部分的写法就是如何在Spring配置文件中写入实体类的配置文件,如果这么写的话hibernate.cfg.xml文件就完全没有用了。这是Spring4和Hibernate5整合的一个问题,hibernate.cfg.xml中的配置当使用配置文件的形式导入Spring配置文件中的时候,有些属性不起作用。所以只能这么写了。要不是为了体现Hibernate配置文件的存在,完全可以将它的加入Spring配置文件中了。

        6. 当sessionFactory配置好的时候,就可以直接先测试一下,在名为test的Source Folder下建立一个edu.njusttz.spring.test的包,并在该包下面创建SessionFactoryTest.java文件,具体测试代码如下:

        7. 由于之前Spring配置文件已经分类,所以现在可以在分类后的Spring配置文件applicationContext-person.xml中配置Dao和Service.

注意上图中dao注入sessionFactory的时候,sessionFactory不在同一个配置文件中,所以MyEclipse没有提示,这里只需要手动写上去即可,Spring能读取到。

        8. 在test的Source Folder下面新建PersonTest.java文件,对Dao进行测试。

具体Dao类的代码:PersonDao.java继承自IPersonDao这个接口。

到此,Hibernate和Spring的整合已经完成,下面就是要加入Struts2了。

        9. 在项目的web.xml文件中进行配置。

             1)以监听器的形式整合Spring

需要注意的是:

1.该监听器监听Web服务器【此处是Tomcat】的启动和关闭,当Web服务器启动的时候,Spring容器也跟着启动;当Web服务器关闭的时候Spring容器也跟着销毁。注意这个监听类ContextLoaderListener,该类中有两个方法:

这两个方法正好对应着Spring容器的启动和销毁。

2. ContextLoaderListener这个类继承自ContextLoader这个类,该类中有一个参数contextConfigLocation ,对应着配置文件中<param-name>的值。是固定的,不可以修改。但是在ContextLoader类中说明了Spring配置文件可以存放在很多位置,具体说明如图所示:默认不配置的话是在/WEB-INF/applicationContext.xml

3.当Spring启动的时候,Service和Dao层的由于是单例的,所以它们的对象也就产生了,而Action属于多例,所以它只有在调用的时候才会产生对象。

2)配置Struts2过滤器

      

        10.在src下面的edu.njusttz.action包下面创建一个PersonAction.java文件,对Person进行相应操作。因为要调用Service层,所以它必须有Service接口的对象。

然后在Spring配置文件applicatonContext-person.xml文件中加入该Action,让Spring给Action创建对象。【特别注意:Action是多例

这里需要强调的是Spring为什么可以创建Action的对象?

之前学习Struts2的时候知道,Action对象是由Struts的对象工厂ObjectFactory调用bulidAction()方法产生,它怎么就交给Spring去创建了呢?这是因为struts架包里有个struts到spring的插件包,在该包下面有个文件:

它重写了Struts2的ObjectFactory类。这里就需要了解Struts2配置文件的加载顺序了。

它加载的基本顺序是struts-default.xml-->struts-plugin.xml-->struts.xml ,后面的覆盖前面的。

        11. 在config这个Source Folder的根目录下加入struts.xml。

特别注意,必须是在根目录下,而且文件名不能变,因为struts2读取的就是这个目录下的这个文件。

这里在struts.xml文件中引入了struts-person.xml达到项目模块化开发的目的。

struts-person.xml内容如下:

这里使用了动态匹配。注意这里的class=”personAction”为什么可以直接写personAction?

而不是写成class=”edu.njusttz.entity.PersonAction”?

首先,两种写法都可以,之所以可以这么写是因为这里的personAction是Spring容器中产生的那个Action类。

到此,SSH框架整合全部完成,下面只需要发布项目在浏览器进行测试即可。

http://localhost:8080/s2sh/person/personAction_savePerson.action

内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值