- 浏览: 12462 次
- 性别:
- 来自: 北京
最新评论
Struts 2,Spring 2,Hibernate 整合
开发工具Eclipse 6.5/6.6 GA
1.首先创建一个web工程,我们暂且启明为s2sh
这里我们选择的是Java EE 5.0
finish
2.向工程加入hibernate支持,这里我们使用的是hibernate 3.2
默认就可以,不要忘记将jar包加入到/WebRoot/WEB-INF/lib
接着next
实际上这里的hibernate.cfg.xml不起作用,因为该配置文件的内容由后面的spring配置文件进行管理,我们可以在创建之后将其删除
默认next
我们根本不用hibernate.cfg.xml,所以这里根本不需要进行数据库配置,当然默认也无所谓。
继续next
sessionFactory我们在之后也会直接使用spring为我们提供的,所以这里不需要创建。
finish
3.向工程加入spring支持,这里我们使用的是spring2
这里我们选择的是spring2,
不要忘记选中这5个库包:
Spring 2.0 AOP Libraries
Spring 2.0 Core Libraries
Spring 2.0 Persistence Core Libraries
Spring 2.0 Persistence JDBC Libraries
Spring 2.0 Web Libraries
也不要忘记将jar包加入到/WebRoot/WEB-INF/lib。
next
这里我们不需要Enable AOP 所以不需要选中
不要忘记将配置文件applicationContext.xml指定在/WEB-INF目录下,不然服务器启动时无法加载
next
这里的sessionFactory我们也不需要,之后会手动配置。
finish
4.加入struts2支持,由于MyEclipse并没有加入Struts2的支持,所以我们需要手动导入相关jar包。
这里我们使用的是struts 2.0.11版本
需要的相关jar包如下:
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.jar
xwork-2.0.4.jar
struts2-spring-plugin-2.0.11.jar
4.进行相关文件的配置
首先我们需要在src下加入struts的配置文件struts.xml
接下来我们配置web.xml
到目前为止我们的整合工作已经完成。我们可以将该工程打包,以备下次直接使用。
这里由一个问题就是如果采用myeclipse加载hibernate和spring的lib包形式发布项目的时候会出现异常,我们可以手动去掉一个asm-2.2.3jar即可。
5.下面我们做一个简单的应用来验证。
(1)首先我们使用的是mysql,不要忘记将mysql-jdbc的jar包导入到我们的工程中
我们创建s2sh数据库,并创建表person
(2)首先我们创建test.s2sh.bean包,在下面创建我们person表对应的Entity Bean及其映射文件
Person.java
Person.hbm.xml
(3)在spring配置文件applicationContext.xml配置hibernate的连接数据库信息及sessionFactory创建方式
如果出现乱码问题,可以考虑如下解决方案
或者将url后面加入编码串,如下
注意 : 这里我的数据库编码是utf-8
具体那种方案好用大家可以尝试一下,我基本上直接将两种方式都加上了。
(4)下面我们开始写DAO层,首先创建test.s2sh.dao包放置Dao类的接口,创建test.s2sh.dao.impl包放置Dao类的实现。
PersonDAO.java
由于使用了spring,所以DAO的实现类我们可以继承HibernateDaoSupport进行实现
PersonDAOImpl.java
(5)下面我们开始进行service层的设计,这里的service层仅是简单调用DAO层的的方法。
同样是创建接口包(test.s2sh.service),实现包和接口类(test.s2sh.service.impl),实现类
PersonService.java
这里我们需要使用spring的ioc将DAO诸如到service中,所以不要忘记在service实现类中加入DAO作为属性。
PersonServiceImpl.java
开发工具Eclipse 6.5/6.6 GA
1.首先创建一个web工程,我们暂且启明为s2sh
这里我们选择的是Java EE 5.0
finish
2.向工程加入hibernate支持,这里我们使用的是hibernate 3.2
默认就可以,不要忘记将jar包加入到/WebRoot/WEB-INF/lib
接着next
实际上这里的hibernate.cfg.xml不起作用,因为该配置文件的内容由后面的spring配置文件进行管理,我们可以在创建之后将其删除
默认next
我们根本不用hibernate.cfg.xml,所以这里根本不需要进行数据库配置,当然默认也无所谓。
继续next
sessionFactory我们在之后也会直接使用spring为我们提供的,所以这里不需要创建。
finish
3.向工程加入spring支持,这里我们使用的是spring2
这里我们选择的是spring2,
不要忘记选中这5个库包:
Spring 2.0 AOP Libraries
Spring 2.0 Core Libraries
Spring 2.0 Persistence Core Libraries
Spring 2.0 Persistence JDBC Libraries
Spring 2.0 Web Libraries
也不要忘记将jar包加入到/WebRoot/WEB-INF/lib。
next
这里我们不需要Enable AOP 所以不需要选中
不要忘记将配置文件applicationContext.xml指定在/WEB-INF目录下,不然服务器启动时无法加载
next
这里的sessionFactory我们也不需要,之后会手动配置。
finish
4.加入struts2支持,由于MyEclipse并没有加入Struts2的支持,所以我们需要手动导入相关jar包。
这里我们使用的是struts 2.0.11版本
需要的相关jar包如下:
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.jar
xwork-2.0.4.jar
struts2-spring-plugin-2.0.11.jar
4.进行相关文件的配置
首先我们需要在src下加入struts的配置文件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>
- <package name="s2sh" extends="struts-default">
- </package>
- </struts>
<?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> <package name="s2sh" extends="struts-default"> </package> </struts>
接下来我们配置web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <!-- 配置struts2的过滤器 -->
- <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>
- <!-- 配置spring的监听器 -->
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 配置struts2的过滤器 --> <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> <!-- 配置spring的监听器 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
到目前为止我们的整合工作已经完成。我们可以将该工程打包,以备下次直接使用。
这里由一个问题就是如果采用myeclipse加载hibernate和spring的lib包形式发布项目的时候会出现异常,我们可以手动去掉一个asm-2.2.3jar即可。
5.下面我们做一个简单的应用来验证。
(1)首先我们使用的是mysql,不要忘记将mysql-jdbc的jar包导入到我们的工程中
我们创建s2sh数据库,并创建表person
- -- Table "person" DDL
- CREATE TABLE `person` (
- `id` int(11) NOT NULL,
- `name` varchar(20) NOT NULL,
- `age` int(11) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Table "person" DDL CREATE TABLE `person` ( `id` int(11) NOT NULL, `name` varchar(20) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)首先我们创建test.s2sh.bean包,在下面创建我们person表对应的Entity Bean及其映射文件
Person.java
- package test.s2sh.bean;
- public class Person {
- private Integer id;
- private String name;
- private int age;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
package test.s2sh.bean; public class Person { private Integer id; private String name; private int age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Person.hbm.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="test.s2sh.bean.Person" table="person">
- <id name="id" type="java.lang.Integer" column="id">
- <generator class="increment"></generator>
- </id>
- <property name="name" type="string" column="name"
- length="20"></property>
- <property name="age" type="java.lang.Integer" column="age"></property>
- </class>
- </hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="test.s2sh.bean.Person" table="person"> <id name="id" type="java.lang.Integer" column="id"> <generator class="increment"></generator> </id> <property name="name" type="string" column="name" length="20"></property> <property name="age" type="java.lang.Integer" column="age"></property> </class> </hibernate-mapping>
(3)在spring配置文件applicationContext.xml配置hibernate的连接数据库信息及sessionFactory创建方式
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <!-- apache.dbcp连接池的配置 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
- <property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&characterEncoding=UTF-8"></property>
- <property name="username" value="root"></property>
- <property name="password" value=""></property>
- <!-- 最大活动连接数 -->
- <property name="maxActive" value="100"></property>
- <!-- 最大可空闲连接数 -->
- <property name="maxIdle" value="30"></property>
- <!-- 最大可等待连接数 -->
- <property name="maxWait" value="500"></property>
- <!-- 默认的提交方式(如果不需要事务可以设置成true,在实际应用中一般设置为false,默认为false) -->
- <property name="defaultAutoCommit" value="true"></property>
- </bean>
- <!-- 这里直接使用spring对hibernate3支持的sessionFactory -->
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource"></property>
- <!-- hibernate方言等相关配置 -->
- <property name="hibernateProperties">
- <props>
- <prop key="connection.useUnicode">true</prop>
- <prop key="connection.characterEncoding">utf-8</prop>
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- </props>
- </property>
- <!-- hbm.xml的映射文件 -->
- <property name="mappingResources">
- <list>
- <value>test/s2sh/bean/Person.hbm.xml</value>
- </list>
- </property>
- </bean>
- </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- apache.dbcp连接池的配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&characterEncoding=UTF-8"></property> <property name="username" value="root"></property> <property name="password" value=""></property> <!-- 最大活动连接数 --> <property name="maxActive" value="100"></property> <!-- 最大可空闲连接数 --> <property name="maxIdle" value="30"></property> <!-- 最大可等待连接数 --> <property name="maxWait" value="500"></property> <!-- 默认的提交方式(如果不需要事务可以设置成true,在实际应用中一般设置为false,默认为false) --> <property name="defaultAutoCommit" value="true"></property> </bean> <!-- 这里直接使用spring对hibernate3支持的sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- hibernate方言等相关配置 --> <property name="hibernateProperties"> <props> <prop key="connection.useUnicode">true</prop> <prop key="connection.characterEncoding">utf-8</prop> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <!-- hbm.xml的映射文件 --> <property name="mappingResources"> <list> <value>test/s2sh/bean/Person.hbm.xml</value> </list> </property> </bean> </beans>
如果出现乱码问题,可以考虑如下解决方案
- <property name="hibernateProperties">
- <props>
- <prop key="connection.useUnicode">true</prop>
- <prop key="connection.characterEncoding">utf-8</prop>
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- </props>
- </property>
<property name="hibernateProperties"> <props> <prop key="connection.useUnicode">true</prop> <prop key="connection.characterEncoding">utf-8</prop> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property>
或者将url后面加入编码串,如下
- <property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&characterEncoding=UTF-8"></property>
注意 : 这里我的数据库编码是utf-8
具体那种方案好用大家可以尝试一下,我基本上直接将两种方式都加上了。
(4)下面我们开始写DAO层,首先创建test.s2sh.dao包放置Dao类的接口,创建test.s2sh.dao.impl包放置Dao类的实现。
PersonDAO.java
- package test.s2sh.dao;
- import java.util.List;
- import test.s2sh.bean.Person;
- public interface PersonDAO {
- void savePerson(Person p);
- void removePerson(Person p);
- Person findPersonById(Integer id);
- List<Person> findAllPersons();
- void updatePerson(Person p);
- }
package test.s2sh.dao; import java.util.List; import test.s2sh.bean.Person; public interface PersonDAO { void savePerson(Person p); void removePerson(Person p); Person findPersonById(Integer id); List<Person> findAllPersons(); void updatePerson(Person p); }
由于使用了spring,所以DAO的实现类我们可以继承HibernateDaoSupport进行实现
PersonDAOImpl.java
- package test.s2sh.dao.impl;
- import java.util.List;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import test.s2sh.bean.Person;
- import test.s2sh.dao.PersonDAO;
- public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO {
- public List<Person> findAllPersons() {
- String hql = "from Person p order by p.id desc";
- return (List<Person>)this.getHibernateTemplate().find(hql);
- }
- public Person findPersonById(Integer id) {
- Person p = (Person) this.getHibernateTemplate().get(Person.class, id);
- return p;
- }
- public void removePerson(Person p) {
- this.getHibernateTemplate().delete(p);
- }
- public void savePerson(Person p) {
- this.getHibernateTemplate().save(p);
- }
- public void updatePerson(Person p) {
- this.getHibernateTemplate().update(p);
- }
- }
package test.s2sh.dao.impl; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import test.s2sh.bean.Person; import test.s2sh.dao.PersonDAO; public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO { public List<Person> findAllPersons() { String hql = "from Person p order by p.id desc"; return (List<Person>)this.getHibernateTemplate().find(hql); } public Person findPersonById(Integer id) { Person p = (Person) this.getHibernateTemplate().get(Person.class, id); return p; } public void removePerson(Person p) { this.getHibernateTemplate().delete(p); } public void savePerson(Person p) { this.getHibernateTemplate().save(p); } public void updatePerson(Person p) { this.getHibernateTemplate().update(p); } }
(5)下面我们开始进行service层的设计,这里的service层仅是简单调用DAO层的的方法。
同样是创建接口包(test.s2sh.service),实现包和接口类(test.s2sh.service.impl),实现类
PersonService.java
- package test.s2sh.service;
- import java.util.List;
- import test.s2sh.bean.Person;
- public interface PersonService {
- List<Person> findAll();
- void save(Person p);
- void delete(Person p);
- Person findById(Integer id);
- void update(Person p);
- }
package test.s2sh.service; import java.util.List; import test.s2sh.bean.Person; public interface PersonService { List<Person> findAll(); void save(Person p); void delete(Person p); Person findById(Integer id); void update(Person p); }
这里我们需要使用spring的ioc将DAO诸如到service中,所以不要忘记在service实现类中加入DAO作为属性。
PersonServiceImpl.java
- package test.s2sh.service.impl;
- import java.util.List;
- import test.s2sh.bean.Person;
- import test.s2sh.dao.PersonDAO;
- import test.s2sh.service.PersonService;
- public class PersonServiceImpl implements PersonService {
- private PersonDAO personDAO;
- public void delete(Person p) {
- this.personDAO.removePerson(p);
- }
-
public List<Person> findAl
发表评论
相关推荐
S2SH整合指的是Struts2、Spring和Hibernate这三个开源框架的集成应用,它们分别是MVC(Model-View-Controller)架构中的控制层、业务层和数据持久层的优秀解决方案。在Java Web开发中,S2SH整合能提供一个强大、灵活...
**S2sh整合所需jar包大全** 在Java Web开发领域,Struts 2、Spring 和 Hibernate(简称S2SH)是一种常见的集成框架,用于构建高效、可维护的企业级应用程序。这个压缩包“s2sh整合所需jar包大全”提供了一整套支持...
**S2SH整合详解** S2SH,全称为Struts2、Spring和Hibernate的整合,是Java Web开发中一种常见的框架组合,用于构建高效、可维护的Web应用程序。这三个框架分别负责不同的职责:Struts2作为MVC(模型-视图-控制器)...
本压缩包"**s2sh整合详细jar**"显然是一份包含了这三个框架核心组件的集合,旨在帮助初学者快速搭建SSH整合环境。以下是对每个框架及其整合细节的详细解释: 1. **Struts2**:Struts2是一个基于MVC设计模式的Java ...
**S2SH整合详解** S2SH,全称为Spring、Struts、Hibernate的组合,是经典的Java Web开发框架。这个框架结合了Spring的依赖注入、事务管理,Struts的MVC设计模式,以及Hibernate的对象关系映射(ORM)工具,为开发者...
标题 "s2sh整合所有的jar包" 指的是将Struts、Spring和Hibernate这三种技术集成所需的Java档案(JAR)文件集合在一起,便于在项目开发中快速引用和使用。这种整合通常被称为SSH框架,它是Java Web开发中的一个流行...
【标题】"s2sh整合完全包"指的是一个包含了所有必要组件的压缩文件,用于支持基于Struts2、Spring和Hibernate(简称s2sh)的Web应用开发。这个包简化了开发过程,因为它包含了这三个框架的库文件,使得开发者无需...
在S2SH整合中,Hibernate 3.5.6版本作为ORM(对象关系映射)工具,允许开发者通过对象模型来操作数据库,而无需编写SQL。它支持懒加载、缓存策略和复杂查询,使得数据库操作更加便捷。 **整合过程** S2SH的整合...
s2sh整合 所需其他jar包 打包下载 spring-dao.jar mysql-connector-java-5.1.6-bin.jar commons-dbcp.jar cglib-nodep.jar
这个"最新S2SH整合所需jar包"是开发者为了方便快速搭建基于这三个框架的应用而准备的资源集合。以下是这些标签所代表的框架和它们的主要知识点: 1. **Struts2**:Struts2是一个强大的MVC(Model-View-Controller)...
这三者结合,被称为S2SH整合,能够构建出高效、灵活且可维护的Java Web应用程序。 **Struts2框架**: Struts2是Struts1的升级版,它引入了拦截器(Interceptor)的概念,增强了动作(Action)与结果(Result)的...
这个压缩包提供了实现增删改查功能的源代码,以及完整的S2SH整合包,使得开发者可以直接运行项目,无需从零开始配置环境。 **Struts2** 是一个基于MVC设计模式的Action驱动框架,它负责处理用户的请求,并通过...
【S2SH整合完美教程】 在Java Web开发中,Struts2、Spring和Hibernate的整合是常见的技术栈,被广泛用于构建MVC架构的应用程序。S2SH整合旨在实现业务逻辑与控制层、持久化层的高效协同,提高代码的可维护性和可...
【S2SH整合的学生宿舍管理系统】是一个针对Java开发者和学习者设计的项目,它结合了Struts、Spring和Hibernate三个框架,简称S2SH。这个系统不仅提供了对学生宿舍的全面管理功能,还能够帮助开发者提升自己的技能...
【s2sh整合详解】 `s2sh` 是一个常见的Web应用程序开发框架的简称,它结合了Struts、Spring和Hibernate这三个流行的开源Java框架。Struts提供了MVC(Model-View-Controller)架构,Spring提供了依赖注入(DI)和...
下面将详细讲解这个"S2SH整合_注册_登录"项目中的关键知识点。 首先,Struts2作为控制器层,负责处理HTTP请求,并将这些请求转发给相应的业务逻辑处理。在注册和登录功能中,Struts2配置文件(struts.xml)定义了...
在S2SH整合中,Hibernate负责将Java对象持久化到数据库,Spring通过HibernateTemplate或JPA接口与Hibernate进行交互,实现数据的增删改查。 整合步骤: 1. **配置Struts2**:在web.xml中配置Struts2的过滤器,设置...
【S2SH整合详解】 S2SH,全称为Struts2、Hibernate和Spring的整合,是一种常见的Java Web开发框架组合,用于构建高效、灵活的企业级应用程序。这三个组件各自扮演着不同的角色,共同构建了一个强大的MVC(Model-...
如果在描述中提到"S2SH整合lib缺数据库驱动自己视情况去下载",这意味着在进行S2SH整合时,可能缺少了对应数据库的JDBC驱动。例如,如果你的项目连接的是MySQL数据库,那么需要下载并添加`mysql-connector-java`的...
这个"S2SH整合的jar"文件可能是为了方便开发者快速搭建基于这三个框架的项目而制作的。 标题中的"S2SH整合的jar"意味着这个文件包含Struts2、Spring和Hibernate的核心库以及可能的整合配置,旨在帮助开发者避免繁琐...