167.SSH整合

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

       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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值