SSH集成(Struts+Spring+Hibernate)
環境:
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)