1. 程式人生 > >SSH集成(Struts+Spring+Hibernate)

SSH集成(Struts+Spring+Hibernate)

ren struts2的 ping rect 註意 實現 XML 配置文件 cor

環境:
struts2.3.X
spring4.0.0
hibernate4.2

思路:從下開始往上集成;層與層之間沒有關系;在集成的時候,只關註當前集成的那個層的內容;

1,創建一個空的web項目;重新定位class文件編譯路徑
2,設置項目的編碼;
3,完成domain;
4,完成映射文件;
5,寫DAO接口;
6,寫DAO實現

  1),拷包(hiberante/required,數據庫驅動,springcore/test/bean/context);
  2),spring配置文件:
    1),配置datasource;
    2),添加db.properties文件;
    3),引入db.properties文件;
  3),配置sessionFactory
    1),導入spring jdbc/tx/orm;
    2),使用LocalSessionFactoryBean來創建SessionFactory;
      1),配置dataSource;
      2),配置hibernate的其他相關配置:直接在classpath下面創建一個hibernate.proeprties文件,在這裏面加上show_sql,dailect,hbm2ddl.auto等hibernate配置;(spring會自動的加載和讀入);
      3),配置映射文件:使用的是掃描hbm.xml文件所在的文件夾路徑來引入的(mappingDirectoryLocations,這個配置後面的內容可以使用classpath:前綴,註意是文件路徑)

  4),完成DAO:
    1),直接在dao中註入一個SessionFactory;
    2),在DAO中直接使用SessionFactory.getCurrentSession()來得到我們需要的session;
    3),千萬不要開啟事務;
    4),千萬不要手賤關session;
  5),在spring中配置DAO;
    1),抽象一個baseDAO;<bean id="baseDAO" abstract="true" />
    2),讓employeeDAO繼承BaseDAO;<bean id="employeeDAO" parent="baseDAO" />

7,寫Service:
  1),完成service接口和實現;
  2),在spring中配置servicebean;
  3),配置事務:
    1),配置transcationMaanager,使用HibernateTransactionManager,並傳入一個sessionFactory;
    2),配置事務屬性;
    3),配置事務切面;

8,集成Struts2
  1),拷貝相關內容(struts2.xml,struts2的jar包,web.xml)
  2),完成Action;
  3),在Spring中配置Action;註意,action的scope需要是prototype的;
  4),完成struts的配置文件:
  註意,在action的class屬性,不能再寫Action的類限定名;只能寫這個Action在spring中配置的bean的id值;


  5),導入spring-web.jar,struts2-spring-plugin.jar;
  6),在web.xml中添加<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  7),在web.xml中添加spring框架啟動的加載的配置文件路徑:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

struts集成spring原理

在struts2-spring-plugin.jar中:
<!--配置了一個名字叫做spring的StrutsSpringObjectFactory -->
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />

<!-- struts.objectFactory代表,在struts中,使用哪個類來作為工廠類,生產struts需要的bean(包括action,interceptor) -->
<constant name="struts.objectFactory" value="spring" />

SSH集成(Struts+Spring+Hibernate)