最近正在学习ssh的最新版本。由于一直没有用ssh做过东西,尤其是中间的spring,项目中用到的struts和hibernate,所以对于在中间层加上spring该如何处理,还存在一些困惑,这是我做的一个三者结合的例子,其主要目的是充分利用spring的ioc和hibernate3的annoation
1.struts2和spring的结合,以及如何把action纳入spring的管理
首先:工程中应加入struts2-spring-plugin-2.0.8.jar
其次:在web.xml中加入如下
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
第三:在struts.xml和applicationContext.xml中的配置如下
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="com" extends="struts-default">
<action name="Login" class="Login" method="getAllUserInfo"><!--此处的class属性不能写成包名.类名的格式,否则会报空指针异常-->
<result name="input">Login.jsp</result><!-- 如果输入为空的话跳转到Login.jsp -->
<result >userindex.jsp</result><!--因为此处没有声明name属性,所以默认为成功时的跳转页, 如果成功的话跳转到userindex.jsp -->
</action>
</package>
</struts>
applicationContext.xml中(配置片段)
<bean id="Login" class="com.web.action.Login" p:iuserinfo-ref="UserInfoImpl" scope ="prototype"/>
注意”红色“字体部分,其中action中的class=“Login”要和<bean>中的id对应,action的属性mehtod如果没有制定的话,将默认调用struts中action中的execute方法,在struts2官方的faq中提到要把action纳入spring的管理还得添加<beans default-autowire="autodetect">(原因还不太清除),由于strus2为每一个请求实例化一个action所以bean的scope要设成protype,默认为singleton
ok,struts2和spring已经结合到一起,剩下的就是根据项目需要"求精了"
2,spring和hibernate的结合hibernate3 aonotation
目前的例子只是演示如何集成二者,所以只是将hibernte的SessionFactory交由spring管理,其他的如(事务管理没有考虑很细致,全部在dao层控制)
如下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"
xmlns:p="http://www.springframework.org/schema/p"
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"
default-lazy-init="true" default-autowire="autodetect"><!-- 默认是byName,可以改为byType,autodetect将先按照byName处理在按照byType -->
<!--datasource config -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/paulstudy" p:username="root"
p:password="1234" />
<!-- SessionFactory annotation config, instead of "hibernate.cfg.xml"-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.hbm2ddl.auto">none</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.model.UserInfo</value>
</list>
</property>
<property name="annotatedPackages">
<list>
<value>com.model</value>
</list>
</property>
</bean>
<!-- SessionFactory annotation config, i end -->
<bean id="usermanager" class="com.dao.hibernate.UserManagerImpl">
<property name="dataSource">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="UserInfoImpl" class="com.business.service.UserInfoImpl"
p:iusermanager-ref="usermanager" />
<bean id="Login" class="com.web.action.Login"
p:iuserinfo-ref="UserInfoImpl" scope="prototype" />
<bean id="userinfo" class="com.UserInfo" p:userName="paul"
p:age="25" />
</beans>
通过以上实现了hibernate的零配置文件。如下domainobject
package com.model;
import javax.persistence.Column;//所在jar包是 persistence-api-1.0.jar
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Entity;
import org.hibernate.annotations.AccessType;
//import org.hibernate.annotations.Entity;
import org.hibernate.annotations.GenericGenerator;
@Entity//此处声明必须用avax.persistence.Entity;而不能用 org.hibernate.annotations.Entity
@Table(name = "userinfo")
@AccessType("property")
public class UserInfo {
private String userId = "";
private String userName = "";
private String userSex = "";
private int userAge = 0;
@Id
@Column(name = "userid")
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name = "username")
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(name = "usersex")
public String getUserSex() {
return userSex;
}
@Column(name = "userage")
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
}
ok。spring和hibernate的结合,hibernate的零配置已经搞定,很简单吧
学好。学精还需要时间啊!
分享到:
相关推荐
2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,被称为SSH(Struts2、Spring、Hibernate)集成。这个整合包可能是为了帮助开发者快速搭建基于这些技术的项目环境。 Struts2是MVC(Model-View-...
Struts2、Spring和Hibernate是Java Web开发中的三...以上就是关于“Struts2+Spring2.5+Hibernate3.2整合示例”的主要知识点,这个整合实例涵盖了Java Web开发中的重要技术,对于开发者来说,深入学习和实践将非常有益。
cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码...
Struts2+spring2.0+hibernate3.2整合带全部jar包 Struts2+spring2.0+hibernate3.2整合带全部jar包 Struts2+spring2.0+hibernate3.2整合带全部jar包
总结来说,"struts2.1 + spring 2.5 + hibernate 3.2 增删改查"的例子涵盖了Web应用开发中的核心部分:前端请求处理(Struts2)、业务逻辑管理(Spring)和数据库操作(Hibernate)。这个例子为初学者提供了一个很好...
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
Struts2+Spring2.5+Hibernate3.2集成实例开发2 Struts2+Spring2.5+Hibernate3.2集成实例开发2
非常好的学习资料 struts2+spring2.5+hibernate3.2大型项目spring mvc
整合过程中,还需要配置各框架的配置文件,例如Struts2的struts.xml、Spring的applicationContext.xml和Hibernate的hibernate.cfg.xml。struts.xml中定义Action和结果,applicationContext.xml中配置bean和数据源,...
Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细解释这三个框架以及它们如何协同工作。 **Struts2** Struts2是一个基于MVC(Model-View...
标题 "ecside+struts2+spring2.5+hibernate3.2" 提及的是一个基于Java的Web开发框架组合,这个组合是企业级应用的常见选择,特别是对于那些需要强大持久层、业务层和表现层管理的项目。让我们逐一深入探讨这四个关键...
在“Struts2+Spring+Hibernate3.2+整合文档及事例程序.zip”这个压缩包中,包含了这些框架的集成教程和示例代码,旨在帮助开发者理解并熟练掌握SSH框架的联合使用。 首先,我们来看“properties文件即i18n国际化...
Struts2_Spring2.5_Hibernate3.2整合是一个经典的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。这个整合涉及到三个主要组件:Struts2、Spring2.5和Hibernate3.2,它们各自在Web开发中扮演着重要的...
1、可以运行(发布后,删除\Tomcat 6.0\webapps\ssh\WebRoot\WEB-INF\lib下的asm-2.2.3.jar) 2、采用Struts1.2 + Spring2.5 + Hibernate3.2 整合开发 3、SSH入门级实例
Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,通常被称为SSH(Struts2、Spring、Hibernate)集成框架。这个组合在2000年代末到2010年代初广泛应用于构建大型、复杂的企业级Web应用。SSH框架...
标题 "ecside+struts2+spring2.5+hibernate3.2部分源代码" 描述了一个基于四个核心技术的项目,它们分别是ECSide、Struts2、Spring 2.5 和 Hibernate 3.2。这些技术是Java开发中的重要组件,尤其在构建企业级应用时...
Struts2、Spring2和Hibernate 3.2是经典的Java Web开发框架组合,它们在企业级应用中被广泛使用。这个压缩包包含了这三个框架的源代码以及数据库建表语句,为开发者提供了一个完整的示例项目,便于学习和理解它们的...
Struts2.0、Spring3.0和Hibernate3.2是经典的Java企业级开发框架组合,通常被称为SSH(Struts2、Spring、Hibernate)架构。这个API参考手册提供了这三个框架的核心概念、用法和功能的详细说明。 Struts2.0是MVC...