新聞中心
Struts+Hibernate+Spring組合相關(guān)的文章也很多了,本篇內(nèi)容和Struts2.1+Hibernate3.1+Spring2.0組合相關(guān)。其實(shí)對于S2SH的組合,其實(shí)注意幾點(diǎn)就可以了:

第一: 由于Struts2的Action是有狀態(tài),而Spring中的Bean默認(rèn)為單例模式的,故一定要將Spring中配置Struts2的Action的scope設(shè)置為prototype 。而Struts1中的Action是無狀態(tài)故在SSH時可以不用將Spring設(shè)置為prototype!
第二:Struts2與Spring的組合不像Struts1,它需要一個Struts2中一個struts2-spring-plugin-2.1.6.jar也不需要在struts.xml中加入其它的配置,只需將struts.xml中的action的class的值改成action在Spring中配置的Bean的id 就可以了!
簡單的Struts+Hibernate+Spring例子如下:
(說明這個例子當(dāng)中包括Struts2大部分的內(nèi)容,主要是想體驗(yàn)一下Struts2的功能)
數(shù)據(jù)庫如下:uid,ufristName,ulastName,uage四個字段
一,加入Spring的支持
二,加入Hibernate的支持(Hibernate的配置由Spring去管理)
三,加入Struts2的支持
四,加入Struts2對Spring的插件(struts2-spring-plugin-2.1.6.jar)
在web.xml中加入對Spring和Struts2的配置:
- < ?xml version="1.0" encoding="UTF-8"?>
- < web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- < 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>
- < filter>
- < filter-name>struts2< /filter-name>
- < filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- < /filter-class>
- < /filter>
- < filter-mapping>
- < filter-name>struts2< /filter-name>
- < url-pattern>/*< /url-pattern>
- < /filter-mapping>
- < welcome-file-list>
- < welcome-file>index.jsp< /welcome-file>
- < /welcome-file-list>
- < /web-app>
UsersDAO的接口如下:
- public interface UsersDaoInter {
- public abstract void save(Users transientInstance);
- public abstract void delete(Users persistentInstance);
- public abstract void delete(final int uId);
- public abstract Users findById(java.lang.Integer id);
- public abstract List findByExample(Users instance);
- public abstract List findByProperty(String propertyName, Object value);
- public abstract List findAll();
- public abstract Users merge(Users detachedInstance);
- }
UsersService接口如下:
- public interface UsersServiceInter {
- public abstract void save(Users transientInstance);
- public abstract void delete(Users persistentInstance);
- public abstract void delete(final int uId);
- public abstract Users findById(java.lang.Integer id);
- public abstract List findByExample(Users instance);
- public abstract List findByProperty(String propertyName, Object value);
- public abstract List findAll();
- public abstract Users merge(Users detachedInstance);
- /**
- * 導(dǎo)出用戶列表的Excel
- * @return
- */
- public abstract InputStream exportUsers();
- }
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: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.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
- ">
- < !-- 數(shù)據(jù)源 -->
- < bean id="MyDataSource"
- class="org.apache.commons.dbcp.BasicDataSource">
- < property name="driverClassName"
- value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
- < /property>
- < property name="url"
- value="jdbc:microsoft:sqlserver://localhost:1433">
- < /property>
- < property name="username" value="sa">< /property>
- < /bean>
- < !-- SessionFactory配置 -->
- < bean id="MySessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- < property name="dataSource">
- < ref bean="MyDataSource">< /ref>
- < /property>
- < property name="hibernateProperties">
- < props>
- < prop key="hibernate.dialect">
- org.hibernate.dialect.SQLServerDialect
- < /prop>
- < /props>
- < /property>
- < property name="mappingResources">
- < list>
- < value>com/mengya/entity/Users.hbm.xml< /value>
- < /list>
- < /property>
- < /bean>
- < !-- 事務(wù)管理器 -->
- < bean id="transactionManager"
- class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- < property name="sessionFactory">
- < ref bean="MySessionFactory">< /ref>
- < /property>
- < /bean>
- < !-- 定義事務(wù)的屬性 -->
- < tx:advice id="txAdvice" transaction-manager="transactionManager">
- < tx:attributes>
- < tx:method name="save*" propagation="REQUIRED" />
- < tx:method name="delete*" propagation="REQUIRED" />
- < tx:method name="merge*" propagation="REQUIRED" />
- < tx:method name="*" read-only="false" />
- < /tx:attributes>
- < /tx:advice>
- < !-- 使用Spring的AOP管理Hibernate的Transaction -->
- < aop:config>
- < !-- 定義AOP切面 -->
- < aop:pointcut id="allManagerMethod"
- expression="execution(* com.mengya.service.*.*(..))" />
- < !-- 在AOP切面中配置事務(wù) -->
- < aop:advisor advice-ref="txAdvice"
- pointcut-ref="allManagerMethod" />
- < /aop:config>
- < !-- 如下是DAO,Service,Action的配置 -->
- < bean id="UsersDAO" class="com.mengya.dao.imple.UsersDAO">
- < property name="sessionFactory">
- < ref bean="MySessionFactory">< /ref>
- < /property>
- < /bean>
- < bean id="userService" class="com.mengya.service.imple.UsersService">
- < property name="usersdao">
- < ref bean="UsersDAO">< /ref>
- < /property>
- < /bean>
- < !-- 對于Struts2與Spring集成時,Strtus2的Action是有狀態(tài)的故這個的scope必須為prototype,Spring默認(rèn)的是單例模式 -->
- < bean id="saveUserAction" class="com.mengya.usersAction.SaveUsersAction" scope="prototype">
- < property name="usersService">
- < ref bean="userService">< /ref>
- < /property>
- < /bean>
- < bean id="listUserAction" class="com.mengya.usersAction.ListUsersAction" scope="prototype">
- < property name="userService">
- < ref bean="userService">< /ref>
- < /property>
- < /bean>
- < bean id="deleteUserAction" class="com.mengya.usersAction.DeleteUsersAction" scope="prototype">
- < property name="usersService">
- < ref bean="userService">< /ref>
- < /property>
- < /bean>
- < bean id="updateUserAction" class="com.mengya.usersAction.UpdateUsersAction" scope="prototype">
- < property name="userService">
- < ref bean="userService">< /ref>
- < /property>
- < /bean>
- < bean id="exportUsersAction" class="com.mengya.usersAction.ExportUsersAction" scope="prototype">
- < property name="userService">
- < ref bean="userService">< /ref>
- < /property>
- < /bean>
- < /beans>
struts.xml配置如下:
- < !DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- < struts>
- < package name="mengya" extends="struts-default">
- < action name="saveUser" class="saveUserAction">
- < result name="success" type="redirectAction">listUser.action< /result>
- < result name="input">/add2.jsp< /result>
- < /action>
- < action name="listUser" class="listUserAction">
- < result name="success">/userList.jsp< /result>
- < /action>
- < action name="deleteUser" class="deleteUserAction">
- < result name="success" type="redirectAction">listUser.action< /result>
- < /action>
- < action name="getUser" class="updateUserAction" method="getUserById">
- < result name="success">/view.jsp< /result>
- < /action>
- < action name="updateUser" class="updateUserAction" method="updateUser">
- < result name="success" type="redirectAction">listUser.action< /result>
- < result name="input">/view.jsp< /result>
- < /action>
- < !-- 將用戶信息用Excel導(dǎo)出 -->
- < action name="exportUsers" class="exportUsersAction">
- < result name="success" type="stream">
- < param name="contentType">application/vnd.ms-excel< /param>
- < !-- 對于第一個參數(shù)默認(rèn)值為inline這樣的話若在線打開的話會生成兩個xls文件 -->
- < param name="contentDisposition">attachment;filename="allUsers.xls"< /param>
- < param name="inputName">downloadFile< /param>
- < /result>
- < /action>
- < /package>
- < /struts>
jsp頁面:用戶列表
- < table border="1" align="center" width="60%">
- < tr>
- < td colspan="6" align="center"> < s:text name="UserListInfo">< /s:text> < /td>
- < /tr>
- < tr>
- < td>
- < s:text name="UId">< /s:text>
- < /td>
- < td>
- < s:text name="UFristName">< /s:text>
- < /td>
- < td>
- < s:text name="ULastName">< /s:text>
- < /td>
- < td>
- < s:text name="UAge">< /s:text>
- < /td>
- < td>
- < s:text name="UpdateOperaction">< /s:text>
- < /td>
- < td>
- < s:text name="DeleteOperaction">< /s:text>
- < /td>
- < /tr>
- < s:iterator value="#request.listUser" var="user">
- < tr>
- < td>
- < s:property value="#user.uid"/>
- < /td>
- < td>
- < s:property value="#user.ufristName"/>
- < /td>
- < td> 網(wǎng)頁名稱:Struts+Hibernate+Spring組合簡單范例
標(biāo)題鏈接:http://www.dlmjj.cn/article/dhedsdo.html


咨詢
建站咨詢
