对于S2SH的组合,其实注意几点就可以了:
第一: 由于Struts2的Action是有状态,而Spring中的Bean默认为单例模式的,故一定要将Spring中配置Struts2的Action的scope设置为prototype 。而Struts1中的Action是无状态故在SSH时可以不用将Spring设置为prototype!
第二:Struts2与Spring的组合不像Struts1,它需要一个Struts2中一个struts2-spring-plugin-2.1.6.jar也不需要在struts.xml中加入其它的配置,只需将struts.xml中的action的class的值改成action在Spring中配置的Bean的id 就可以了!
简单的例子如下:
(说明这个例子当中包括Struts2大部分的内容,主要是想体验一下Struts2的功能)
数据库如下: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);
/**
* 导出用户列表的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
">
<!-- 数据源 -->
<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>
<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="MySessionFactory"></ref>
</property>
</bean>
<!-- 定义事务的属性 -->
<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切面中配置事务 -->
<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是有状态的故这个的scope必须为prototype,Spring默认的是单例模式 -->
<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导出 -->
<action name="exportUsers" class="exportUsersAction">
<result name="success" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<!-- 对于第一个参数默认值为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>
<s:property value="#user.ulastName"/>
</td>
<td>
<s:property value="#user.uage"/>
</td>
<td>
<s:a href="getUser.action?users.uid=%{#user.uid }">
<s:text name="UpdateOperaction"></s:text>
</s:a>
</td>
<td>
<s:a href="deleteUser.action?uid=%{#user.uid }">
<s:text name="DeleteOperaction"></s:text>
</s:a>
</td>
</tr>
</s:iterator>
</table>
<tr/>
<tr/>
<tr/>
<div align="center">
<s:a href="exportUsers.action">Excel导出</s:a>
</div>
用户信息修改页面
<s:form action="updateUser" method="post">
<s:hidden name="users.uid"></s:hidden>
<s:textfield name="users.ufristName" key="UFristName"></s:textfield>
<s:textfield name="users.ulastName" key="ULastName"></s:textfield>
<s:textfield name="users.uage" key="UAge"></s:textfield>
<s:submit key="submit"></s:submit>
</s:form>
由于文件很多,不能全部显示,下面的压缩包是本程序的源码,由于jar很大上传不了,故不包含S2SH的jar包
- 复件_S2SHDome.rar (52.2 KB)
- 描述: Struts2.1+Hibernate3.4+Spring2.0组合实例不包含jar包
- 下载次数: 260
分享到:
相关推荐
### SSH框架简单快速搭建MyEclipse 2013 (spring2.5+struts2.1+hibernate3.1) #### 概述 本文档将指导您如何使用MyEclipse 2013集成开发环境快速搭建SSH框架(Spring 2.5、Struts 2.1 和 Hibernate 3.1)。SSH框架...
应广大网友需求,自己抽了点时间写了一个Struts2.0+Spring2.0+Hibernate3.1的登录及增删改查的完整演示示例,以此奉献给大家,由于本人水平有限,有写的不好的地方还望大家多提宝贵意见,如果有不明白的地方请关注我的...
Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1
Struts2.1、Hibernate3.1和Spring2.5是经典的Java企业级开发框架组合,简称SSH。这个整合项目主要是为了实现基本的数据操作:增加(Create)、删除(Remove)、修改(Update)和查询(Retrieve),也就是CRUD操作。...
eclipse整合Struts1.2 + hibernate3.1 + spring2.0 相关链接:http://blog.csdn.net/shellwin/archive/2010/07/02/5708865.aspx
Struts2.1+Hibernate3.1+Spring2.0是一个经典的Java企业级开发框架组合,也被称为SSH2。这个项目实例提供了全面的功能,包括基本的CRUD(创建、读取、更新、删除)操作,文件和图片上传,以及JavaScript表单验证。...
开发环境:Windows XP sp3、SQL Server 2005、JDK 1.6、Struts2.1.6、Spring 2.0、Hibernate3.1、MyEclipse 5.5、Tomcat 6.0 使用步骤: 1、下载解压之后,使用IDE导入工程 2、把工程中的“演示数据脚本.sql”导入到...
Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3 SSH
Help\Struts2.0+Hibernate3.1+Spring in.zip學習文檔
### Struts2.0 + Hibernate3.1 + Spring2.0环境配置与实验指导 #### 一、实验目的与要求 本次实验旨在帮助学生全面掌握使用Struts2.0、Hibernate3.1与Spring2.0这三个开源框架来构建一个简单的企业级应用。通过...
Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3内个框架的集成
标题 "struts2+hibernate3.1+spring2.0带图片" 提到的是一个集成使用Struts2、Hibernate3.1和Spring2.0的项目,这些技术都是Java Web开发中的重要框架。这个项目可能包含了这些框架的集成教程或者示例应用,同时还...
在IT行业中,SSH(Spring、Struts和Hibernate)是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。这个整合项目是基于Spring 3.1.1、Struts 2.1和Hibernate 4.14,且与MyEclipse 2014集成,...
【开发Web购物网站(Struts1.2+Hibernate3.1+Spring2.0)整合案例详细解析】 在构建Web购物网站时,选择合适的框架对于项目的成功至关重要。本案例中,我们采用Struts1.2、Hibernate3.1和Spring2.0这三大经典Java框架...
oracle+struts2.0+hibernate3.1+spring2.0实验代码与前面发布的实验指导配套,由于所需要的包实在太打,所以请你们根据实验指导到相应地方找,实在找不到请email: haoxing272@gmail.com<br>一起努力…………
Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,它们在2000年代中期至后期广泛应用于构建基于Java的Web应用程序。这个组合通常被称为“SSH”三位一体,各自负责不同的职责: 1. **Struts1.2**...
Struts2.0+spring2.0+hibernate3.1 ACEGI应用示例
Struts2、Hibernate3.1和Spring2.0是Java Web开发中经典的三大框架,它们共同构建了一个轻量级的企业级应用架构。Struts2作为MVC(模型-视图-控制器)框架,主要负责处理用户界面交互和业务流程控制;Hibernate是一...
标题中的"struts2.0+hibernate3.1+spring2.0实例源码里的jar2"指的是一个基于这三个经典技术栈的Web应用程序示例。Struts2、Hibernate和Spring是Java开发中非常流行的开源框架,它们分别用于MVC(模型-视图-控制器)...