SSH整合

Posted sxw123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH整合相关的知识,希望对你有一定的参考价值。

思路

 

技术图片

 

一.整合Struts2Spring框架

1.创建Web项目2.

2.导入jar

 

技术图片技术图片

 

 

 

 技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 4.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--配置拦截器-->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--配置监听器-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>
5.创建Spring核心配置文件:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
<!--开启注解扫描-->
    <context:component-scan base-package="dao,action,entity,service"/>
    <!--开启AOP-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    <!--<aop:config>-->
        <!--<aop:pointcut id="userput" expression="execution(* dao.UserDao.add(..))"/>-->
        <!--<aop:aspect ref="textDao">-->
            <!--<aop:around method="text" pointcut-ref="userput"></aop:around>-->
        <!--</aop:aspect>-->
    <!--</aop:config>-->
    <!-- Ioc入门 -->    
<bean id="dataSource" class="com.mchange.v2.c3p0.DriverManagerDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/user"/>
    <property name="user" value="root"/>
    <property name="password" value="971128"/>
</bean>
    <!--<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">-->
        <!--<property name="dataSource" ref="dataSource"/>-->
    <!--</bean>-->
    <!--注入sessionFactory对象-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocations" value="classpath:hibernate.cfg.xml" />
</bean>
    <!--注入hibernateTemplate对象-->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!--将hibernateTemplate注入到BaseDao-->
    <bean id="baseDao" class="tool.BaseDao">
        <property name="hibernateTemplate" ref="hibernateTemplate"/>
    </bean>
    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!--开启事务注解-->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <import resource="classpath:user.xml"/>
    <!-- 使用静态工厂来创建对象 -->
    <!--<bean id="bean2" class="com.atwyl.beans.Bean2Factory" factory-method="getBean2"></bean>-->
    <!---->
    <!--&lt;!&ndash; 使用实例工厂来创建工厂对象 &ndash;&gt;-->
    <!--<bean id="bean3Factory" class="com.atwyl.beans.Bean3Factory"></bean>-->
    <!--<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3" ></bean>-->
</beans>

8.修改web.xml文件,配置Spring的监听器

技术图片

 

 

 9.修改struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
        <!DOCTYPE struts PUBLIC
                "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
                "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

<constant name="struts.i18n.encoding" value="UTF-8" ></constant>
    <include file="entity/user.xml"/>
     <!--引入其他struts配置文件-->
    <!--<include file="=jsons.xml"></include>-->
    <!--<include file="register.xml"></include>-->
</struts>

Spring框架整合Hibernate框架

技术图片技术图片

 

技术图片

 

 

 

 技术图片

 

 

 5.创建映射文件:User.hbm.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 1.配置类和表的对应 class标签 
           name属性:实体类的全名称 
           table属性:数据库表名称
                 (表还没有创建,我们让hibernate帮我们自动生成) -->
    <class name="cn.at.wyl.entity.User"   table="t_user">
        <id name="uid" column="uid">
    <!-- 
    设置增长的策略(主键生成的方式) :::::  native:表的uid是主键自增    
    -->
            <generator class="native"></generator>
        </id>
        <!-- 配置其他的属性和表的对应
           name:实体类属性的名称,要和实体类里面的名称保持一致
            column:表的字段的名称
           name和column可以一样也可以不一样,为了方便记忆,我们保持一致
         -->
        <property name="username" column="username"></property>
        <property name="address" column="address"></property>
    </class>
</hibernate-mapping>

6.创建Hibernate核心配置文件:hibernate.cfg.xml,此时我们已经把Hibernate集成进来。

<hibernate-configuration>
    <session-factory>
        <!-- 1、配置hibernate的信息,可选的 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 底层SQL语句进行格式化 -->
        <property name="hibernate.format_sql">true</property>
        <!-- 希望hibernate帮我们自动创建表 update:如果表已有,它就更新表,如果没有表,则创建表 -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!-- 表示数据库的方言 在MySQL中-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!-- 2、把映射文件放到核心配置文件中:必须的 -->
        <mapping resource="cn/at/wyl/entity/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>

8.我们已经把hibernate核心配置文件里的数据库配置删除,在Spring里面已经配置了节点:<dataSource> 节点,把hibernate中的配置去掉:下图是去掉部分:

技术图片

 

 

 9.把hibernate的sessionFactory交给Spring配置

 服务器启动的时候,加载Spring配置文件,在配置文件中对象创建

 sessionFactory对象创建在Spring配置

 因为创建sessionFactory代码不是new出来的,而是多行代码实现的

技术图片

 Spring里面针对上面的情况,封装类,配置类对象可以创建sessionFactory 

技术图片

 

 

 10.新建dao层和service层

技术图片

 

 

 11.在Action里面注入Service,在Service里面 注入dao,并生成他们的set方法

技术图片技术图片

12. 修改配置文件,配置dao,在Service里面注入dao的对象,配置Service,在Action里面注入Service的对象。

 技术图片

 

 

13. 在dao中使用hibernateTemplate

技术图片

HibernateTemplate常用的方法

- Serializable save(Object entity)

- void update(Object entity)

- void delete (Object entity)

- <T> T get(Class(T) entityClass,Serializable id)

- <T> T load(Class(T) entityClass,Serializable id)

- List find(String queryStringObjectvalues)

-dao里面得到hibernateTemplate的对象

技术图片

配置applicationContext.xml

技术图片

测试

技术图片

② 在service层调用dao层方法

 

技术图片

③ 在action里面调用Service

 

技术图片

第一步:配置事务管理器,第二步:开启事务的注解

 

技术图片

service里面加上注解

技术图片

HibernateTemplate介绍

1.HibernateTemplatehibernate框架进行封装

 

直接调用HibernateTemplate里面的方法实现功能

2.HibernateTemplate常用方法

 

- Serializable save(Object entity)   添加操作

 

- void update(Object entity)    修改操作

 

- void delete (Object entity)    删除操作

 

- <T> T get(Class(T) entityClass,Serializable id)    根据id查询操作

 

技术图片

-⑤ <T> T load(Class(T) entityClass,Serializable id)   根据id查询操作(延迟加载)

 

 

- List find(String queryStringObjectvalues)     查询操作的方法

 

技术图片

 

技术图片

-⑦ 分页查询语句如下:

 

hibernateTemplate.findByCriteria(criteria,firstResult, maxResults)

SSH框架整合过程

1、 第一步:导入jar

2、 第二步:

 创建action,创建struts.xml配置文件,配置action

 配置struts2过滤器

3、 第三步:搭建hibernate环境

 创建实体类

创建并配置数据库表的映射文件

 创建hibernate核心配置文件hibernate.cfg.xml

   引入映射文件

4、 第四步:搭建Spring环境

 创建Spring核心配置文件

 Spring配置文件在服务器启动时候加载
   配置监听器

   指定Spring配置文件的位置

5、 Struts2Spring整合

 actionSpring配置(action是多实例的)

 struts.xmlaction标签class属性里面写beanid

6、 Springhibernate整合

 hibernate核心配置文件中数据库配置,在Spring里面配置

hibernatesessionFactorySpring里面配置

7、 dao里面使用HibernateTemplate

 dao注入hibernateTemplate对象

hibernateTemplate里面注入sessionFactory

8、 配置事务

技术图片

其他整合方式

Spring整合hibernate时候,可以不写hibernate核心配置文件

- ① hibernate核心配置文件中,基本信息配置和映射引入都放入Spring的核心配置文件中。有了如下代码,我们在Spring配置文件引入hibernate.cfg.xml的代码可以删除,hibernate核心配置文件也可以删除。

 

 

 技术图片

Spring分模块开发

  1. 在Spring的核心配置文件中,配置的有Action对象的创建和Service对象的注入 , 还有Service对象的创建和dao对象的注入,有dao对象的创建和hibernateTemplate对象的创建等。当我们的类很多,有很多的Action,有很多的Action,我们的核心配置文件就会很大。内容很多,造成混乱,不利于维护。
  2. 把Spring核心配置文件中的一部分配置,放到一个单独的配置文件中,具体把那一部分拿出去,没有严格的要求,我们现在就把关于Action的部分拿出去 , 然后引入 , 在Spring配置引入其他配置文件即可:
  3. 把下面这一部分单独放入user.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
    <!-- 配置C3P0数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql:///ssh_demo01" />
        <property name="user" value="root" />
        <property name="password" value="root" />
    </bean>
    
    <!-- 把sessionFactory创建交给Spring管理 -->
    <bean id="sessionFactory" 
          class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 因为我在hibernate核心配置文件里面没有数据库的部分,
                  数据库的配置在Spring里面,所以要注入dataSource -->
        <property name="dataSource" ref="dataSource" />
        <!-- 指定:hibernate核心配置文件 -->
        <property name="configLocations" value="classpath:hibernate.cfg.xml" />

 

 

 

 

 

 

 

 

以上是关于SSH整合的主要内容,如果未能解决你的问题,请参考以下文章

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段

Java的SSH框架整合

SSH整合总结(OA项目)

dwr与ssh框架整合教程

SSH 框架整合(maven版本 xml配置方式)

Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用