SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

一、Spring与Web项目整合

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

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

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

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

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

  SSH整合 随笔 第1张

 <!--加载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管理

   SSH整合 随笔 第2张

    SSH整合 随笔 第3张

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

SSH整合 随笔 第4张

二、SSH整合

  1.引入jar包

  2.引入配置文件

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

    核心过滤器

    SSH整合 随笔 第5张

struts.xml

SSH整合 随笔 第6张

action类

SSH整合 随笔 第7张

jsp

SSH整合 随笔 第8张

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

  SSH整合 随笔 第9张

SSH整合 随笔 第10张

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

SSH整合 随笔 第11张

  2.2引入Spring

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

     SSH整合 随笔 第12张

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

  SSH整合 随笔 第13张

    在web层调用Spring工厂

  SSH整合 随笔 第14张

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

SSH整合 随笔 第15张

SSH整合 随笔 第16张

 

 

  3.创建包结构

  4.创建相关类

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

  6.Spring整合struts2

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

 SSH整合 随笔 第17张

SSH整合 随笔 第18张

 

  7.创建Dao交给Spring管理

  创建dao接口,dao实现类

SSH整合 随笔 第19张

将dao实现类交给Spring管理

SSH整合 随笔 第20张

SSH整合 随笔 第21张

 

  8.在业务中注入dao

 

  9.Spring整合Hibernate框架

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

  SSH整合 随笔 第22张

引入jar包:

SSH整合 随笔 第23张

将数据库配置文件引入

SSH整合 随笔 第24张

另外写一个hibernateApplicationContext.xml

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

SSH整合 随笔 第25张

 <!--配置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>

SSH整合 随笔 第26张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄