SSH整合

一、Spring与Web项目整合

  1)在Servlet中直接加载配置文件,获取对象。

    这样做不好,每次请求都会创建一个Spring工厂,这样浪费服务器资源,应该一个项目只有一个工厂。在服务器启动时,创建一个Spring工厂,创建完工厂,将这个工厂类保存到ServletContext里面。每次从ServletContext中获取。

  解决方案:使用spring核心监听器ContextLoaderContext

    1.引入jar包,Spring-web.war

    2.配置监听器:在web.xml下配置

  

 <!--加载Spring的配置文件的路径的,默认加载的/WEB-INf/applicationContext.xml-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!--Spring的核心监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    3.直接在Action中获取工厂。

    将对象交给Spring管理

   

    

直接从ServletContext中获取工厂,从而获得被Spring管理的对象。

二、SSH整合

  1.引入jar包

  2.引入配置文件

    2.1struts:配置核心过滤器,配置struts.xml,创建Action类

    核心过滤器

    

struts.xml

action类

jsp

    创建domain类:其中字段名与jsp表单的name对应

  

采用模型驱动方式获取参数:

  2.2引入Spring

  web.xml中配置核心监听器,从而在服务器启动时,将创建的Spring工厂存入ServletContext

     

    引入application.xml文件,同时将service层实现类交给Spring管理

  

    在web层调用Spring工厂

  

  也可以通过导入jar包方式获取工厂:

  3.创建包结构

  4.创建相关类

  5.创建业务层,把业务层交给Spring管理

  6.Spring整合struts2

  将action交给Spring管理,本来action在strut.xml中进行配置的,但交给Spring进行配置可以进行AOP增强,且方便管理。

 

  7.创建Dao交给Spring管理

  创建dao接口,dao实现类

将dao实现类交给Spring管理

  8.在业务中注入dao

  9.Spring整合Hibernate框架

   将Account.hbm.xml引入domain文件夹下,并与表做字段对应

  

引入jar包:

将数据库配置文件引入

另外写一个hibernateApplicationContext.xml

在其中写入hibernate相关配置,并在主的applicationContext中引入

 <!--配置Hibernate-->
    <!--加载属性文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <!--属性文件中的名称不能和name值一样-->
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--Spring整合Hibernate-->
    <!--引入Hibernate配置信息,前提是导入Spring.orm的jar包-->
    <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.MySQL5Dialect</prop><!--声明使用mysql数据库语言格式,中间要加5-->
                <prop key="hibernate.show_sql">true</prop><!--生成sql后进行打印-->
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="current_session_context_class">thread</prop><!--允许SessionFactory中可以调用getCurrentSession()方法获取当前线程的session-->
            </props>
        </property>
        <!--设置映射文件-->
        <property name="mappingResources">
            <list>
                <value>com/ual/domain/Account.hbm.xml</value>
            </list>
        </property>
    </bean>

 想要使用Hibernate的dao类继承HibernateDaoSupport这个类,

在applicationContext.xml的dao层管理中注入sessionFactory,在注入sessionFactory时,内部自动帮你创建了模板

后面引入的sessionFactory是HibernateApplicationContext中已经声明好的。

直接在dao类中这样获取模板就可以了。

 在HIbernateApplicationContext中开启事务

在类上添加注解

 

原文地址:https://www.cnblogs.com/UalBlog/p/10708444.html