SSH整合的三种姿势——你都会吗?

4、SSH整合


4.1 SSH整合方式一:无障碍整合

4.1.1 MVC框架思路

 

4.1.2 创建web项目引入jar包(包含struts2日志包+spring测试包 共计43)

Struts2的jar包:利用struts2的app下的空项目blank的war包在Tomcat下来得到。

 

Struts2中有一些包需要了解的:

  1. struts2-convention-plugin-2.3.24.jar                      ----Struts2的注解开发包。
  2. struts2-json-plugin-2.3.24.jar                                    ----Struts2的整合AJAX的开发包。
  3. struts2-spring-plugin-2.3.24.jar                                ----Struts2的整合Spring的开发包。

 

 

Spring的jar包:IOC开发、AOP开发、JDBC模板开发、事务管理、整合web项目的开发、整合单元测试的开发。

                IOC的开发

 

               AOP的开发

 

 

             JDBC模板的开发

 

               事务管理

 

              整合web项目的开发

 

             整合单元测试的开发

 

            整合hibernate的开发

 

Hibernate的Jar包:

 

            Hibernate必须的包:

 

 Mysql驱动包:

 

日志记录包:

 

C3P0的包:

注意:Struts2Hibernate都引入了一个相同的jar包(javassist包),删除一个低版本的。

 

4.1.3 引入配置文件

Struts2配置文件:

         web.xml中添加核心过滤器

         struts.xml文件

Hibernate配置文件:

         hibernate.cfg.xml 文件(删除线程绑定配置

         映射文件

Spring配置文件:

         web.xml中添加核心监听器

         applicationContext.xml文件

日志记录文件:

                   log4j.xml文件

 

4.1.4 创建包结构并创建响应的类和测试页面

 

4.1.5 Spring整合Struts2

方式一:ActionStruts2自身创建的。

    编写Action

   配置Action

           在struts.xml中配置

    在Action中引入Service

                传统方式

 

进行SpringStruts2的整合:

  1. 引入struts-spring-plugin.jar
  2. 在插件包中有如下配置

*****开启一个常量:在Struts2中只有开启这个常量就会引发下面常量生效

 

 

Action按照名称自动注入Service

             将Service交给Spring管理

           Action注入Service

方式二:Action交给Spring管理(推荐)

引入插件包

  1. 引入struts-spring-plugin.jar
  2. Action交给Spring

     3. 在struts.xml中配置Action

  注意: 需要配置Action为多例的:

 

                 需要手动注入Service


4.1.6 实际流程说明

4.1.6.1  Service调用DAO

     将DAO交给Spring管理

        在Service注入DAO

 

         创建数据库/表、实体类完善Dao层结构

 

4.1.6.2  Spring整合Hibernate

SpringHibernate整合

           在Spring的配置文件中,引入Hibernate的配置的信息

SpringHibernate整合后,Spring提供了一个Hibernate的模板类简化Hibernate开发。

           改写DAO继承HibernateDaoSupport

 

       配置的时候在DAO中直接注入SessionFactory

 

         在DAO中使用Hibernate的模板完成保存操作

 

4.1.6.3 配置Spring的事务管理

        配置事务管理器

         开启注解事务

         在业务层使用注解


4.2 SSH整合方式二:将Hibernate的配置交给Spring

方式二在Spring与Hibernate整合之前的工作一样,这里不做累述。

4.2.1 hibernate配置文件中有哪些内容:

  1. 数据库连接的配置
  2. Hibernate的相关的属性的配置
    1. 方言
    2. 显示SQL
    3. 格式化SQL
    4. 。。。
  3. C3P0连接池
  4. 映射文件

 

4.2.2 将Hibernate的配置交给Spring管理

<!-- 引入外部属性文件=============================== -->

<context:property-placeholder location="classpath:jdbc.properties"/>

   

<!-- 配置C3P0连接池=============================== -->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

        <property name="driverClass" value="${jdbc.driverClass}"/>

        <property name="jdbcUrl" value="${jdbc.url}"/>

        <property name="user" value="${jdbc.username}"/>

        <property name="password" value="${jdbc.password}"/>

</bean>

   

<!-- Spring整合Hibernate -->

<!-- 引入Hibernate的配置的信息=============== -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

        <!-- 注入连接池 -->

        <property name="dataSource" ref="dataSource"/>

        <!-- 配置Hibernate的相关属性 -->

        <property name="hibernateProperties">

            <props>

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

                <prop key="hibernate.show_sql">true</prop>

                <prop key="hibernate.format_sql">true</prop>

                <prop key="hibernate.hbm2ddl.auto">update</prop>

            </props>

        </property>

       

        <!-- 设置映射文件 -->

        <property name="mappingResources">

            <list>

                <value>com/itheima/ssh/domain/Customer.hbm.xml</value>

            </list>

        </property>

    </bean>


4.3针对以上两种方法补充说明:Hibernate模板的常用的方法

保存操作

  1. save(Object obj);

修改操作

  1. update(Object obj);

删除操作

  1. delete(Object obj);

查询操作

  1. 查询一个
    1. get(Class c,Serializable id);
    2. load(Class c,Serializable id);
  2. 查询多个
    1. List find(String hql,Object… args);
    2. List findByCriteria(DetachedCriteria dc);
    3. List findByCriteria(DetachedCriteria dc,int firstResult,int maxResults);
    4. List findByNamedQuery(String name,Object… args);

 

4.4 Spring提供了延迟加载的解决方案

在SSH整合开发中哪些地方会出现延迟加载

  1. 使用load方法查询某一个对象的时候(不常用)
  2. 查询到某个对象以后,显示其关联对象。

 

延迟加载问题出现的原因

 

延迟加载问题的解决方法

         web.xml中配置SessionInViewFilter过滤器,使session在web层中开启关闭。

         注意:SessionInViewFilter过滤器必须在Struts2的核心过滤器之前(过滤器有加载顺序)


                                                                                       谢谢阅读           ---知飞翀

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值