搭建SSH框架经典总结

    本文主要讲解配置文件的配置,前提是读者已经下载spring、struts和hibernate相关jar包,并加装到源程序库里面;

    一、配置struts2

    1.1修改WEB-INF下的web.xml文件,添加struts配置

         <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>

   1.2添加struts配置文件,在WEB-INF/classes下,新建struts.xml文件

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

   到此struts配置完毕,部署到tomcat运行,按照提示加载缺少的jar包,接着你就可以进行action的创建和使用了。

 

 二、hibernate配置

   2.1添加hibernate配置文件,在WEB-INF/classes下,新建hibernate.cfg.xml文件,这是hibernate连接数据库的配置文件,以oracle数据库为例:

   <?xml version='1.0' encoding='UTF-8'?>
   <!DOCTYPE hibernate-configuration PUBLIC  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
       "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  

   <hibernate-configuration>
     <session-factory>
     <property name="connection.driver_class">
              oracle.jdbc.driver.OracleDriver
     </property>
     <property name="connection.url">
       jdbc:oracle:thin:@localhost:1521:DEMO
     </property>
     <property name="myeclipse.connection.profile">DEMO</property>
     <property name="connection.username">demo</property>
     <property name="connection.password">demo</property>
     <property name="dialect">
              org.hibernate.dialect.Oracle10gDialect
     </property>
     <property name="show_sql">true</property>
     <mapping resource="demo/beans/TUser.hbm.xml" />
   </session-factory>
 </hibernate-configuration>

  注:  Hibernate 对数据库的操作是通过Session来实现的,这里的session不同于页面间传递参数的session,而是类似于JDBC中的 Connection。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。而Session是由HibernateSessionFactory创建的,是线程安全的,可以让多个执行线程同时存取HibernateSessionFactory而不会有数据共享的问题,但不能让多个线程共享一个Session。

 

  三、spring配置

     3.1修该web.xml文件,增加如下代码:

  <!--
  * 从类路径下加载spring的配置文件, 多个配置文件可以用逗号和空格区分
  * classpath: 关键字特指类路径下加载-->
   <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
            classpath*:spring/spring*.xml
   </param-value>
   </context-param>


  在这里,我们指定了spring配置文件的路径,即WEB-INF/classes/spring目录下的所有以spring开头命名的xml文件。

     3.2在src下新建applicationContext.xml文件。首先给这个文件加上spring的标头:

  <?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:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
  </beans>
      

  至此,spring配置完毕!

 

    四、spring集成struts、hibernate框架

    4.1整合struts

  1) 导入jar包。在Struts2.1.6的lib目录中找到struts2-spring-plugin-2.1.6.jar,引入到工程中。

  2) 配置web.xml文件。在web.xml中加入以下代码:

  <listener>
   <listener-class>
         org.springframework.web.context.ContextLoaderListener
   </listener-class>

  </listener>

     备注:action配置(struts.xml)中class值应与bean配置(applicationContext.xml)中bean的ID相同。

   4.2整合hibernate

       Spring整合Hibernate主要是对hibernate的Session进行管理,包含Session的创建、提交、关闭的整个生命周期。Spring对事务的管理应用了AOP的技术,配置前看一下AOP的知识。

  1) 配置sessionFactory,让spring来创建Session。在applicationContext.xml中增加如下代码:

  <!-- 配置sessionFactory -->
   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   <property name="configLocation">
   <value>classpath:hibernate.cfg.xml</value>
   </property>
   </bean>
   这里,创建了一个Session工厂类的Bean,其ID为“sessionFactory”。

  2) 配置事务管理器。增加如下代码:

   <!-- 配置事务管理器 -->
   <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
   <ref bean="sessionFactory"/>
   </property>
   </bean>
   这里创建了一个id为transactionManager的事务管理器,它匹配一个session工厂,<ref bean="sessionFactory"/>这个sessionFactory是指session工厂的ID。

  3) 对事务管理器进行事务设置。增加如下代码:

  <tx:advice id="smAdvice" transaction-manager="transactionManager">
   <tx:attributes>
   <tx:method name="save*" propagation="REQUIRED"/>
   <tx:method name="del*" propagation="REQUIRED"/>
   <tx:method name="update*" propagation="REQUIRED"/>
   </tx:attributes>
   </tx:advice>
  这里创建了一个advice(通知),对事务管理器进行事务设置,这里意思是指,对于以save、del、update开头的方法应用事务。

  4) 下面就把事务应用到具体的类。看如下代码:

  <aop:config>
   <aop:pointcut id="smMethod"
    expression="execution(* demo.service.impl.*.*(..))"/>
   <aop:advisor pointcut-ref="smMethod" advice-ref="smAdvice"/>
   </aop:config>
  这里配置的作用是把我们上面创建的advice应用到具体的类中。以上代码的意思指,给demo.service.impl下的所有类的所有方法应用smAdvice。

 

     本文参考了http://www.cnblogs.com/sunliming/archive/2010/10/04/1842114.html博客!

posted @ 2014-06-29 09:37  圆弧  阅读(71)  评论(0)    收藏  举报