首先是对于Javaeye 论坛的严格感到惊奇,同时也敬佩他们工作的态度
前些日子写了个DEMO是结合Structs + Hibernate + Spring 技术来写了个用户注册管理的Demo 完了写点心得,以便自己和其他人学习
Demo 用户注册管理的主要功能是用户注册、登录,开始只觉得这点功能很简单,但是后来发现并非想象中的简单,业务逻辑简单,不代表自己可以很快的将它实现,=.=(自己的体会)
设计思路要清晰,MVC模式是我实现或者说是设计的思路。
感觉其实中间最大的艰辛在于架包的选择,当时费了我N天才搞定
我选择的JAR有(放在lib文件夹中)
activation.jar
antlr-2.7.6.jar
aopalliance.jar
c3p0-0.9.0.4.jar
cglib-nodep-2.1_3.jar
classes12.jar
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
commons-validator.jar
dom4j-1.6.1.jar
freemarker-2.3.8.jar
hibernate3.jar
jakarta-oro.jar
jsonplugin-0.7.jar
jta.jar
junit.jar
log4j-1.2.13.jar
ognl-2.6.11.jar
pull-parser-2.1.10.jar
saaj.jar
spring-mock.jar
spring.jar
struts2-core-2.0.8.jar
struts2-spring-plugin-2.0.8.jar
xwork-2.0.3.jar
对象实体是用户User 那么就需要一个 Model 实体
User.java
import java.io.Serializable;
public class User implements Serializable
{
//标识属性
private String id;
//用户名属性
private String userName;
//密码属性
private String password;
//电子邮件属性
private String email;
//以下是setter getter 方法
//......
}
对应的是一个xml映射文件,这个文件映射到数据库中的表和列,User.hbm.xml这个文件不需要放在SRC根目录下,这样方便管理,清晰
User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="gwideal.hklyjj.model.user">
<class name="User" table="user_table">
<id name="id" column="user_id" length="32">
<generator class="native"/>
</id>
<property name="userName" column="user_name" not-null="true" length="80" unique="true"/>
<property name="password" column="user_pwd" not-null="true" length="80"/>
<property name="email" length="200"/>
</class>
</hibernate-mapping>
这里要使用Spring 容器来控制管理整个数据库连接事务,所以需要配置一个Spring 的配置文件 applicationContext.xml
applicationContext.xml
<?xml version="1.0" encoding="GBK"?>
<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.xsd">
<!-- 定义数据源Bean,使用C3P0数据源实现 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!-- 指定连接数据库的驱动 -->
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<!-- 指定连接数据库的URL -->
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:ORA"/>
<!-- 指定连接数据库的用户名 -->
<property name="user" value="jaychen"/>
<!-- 指定连接数据库的密码 -->
<property name="password" value=""/>
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20"/>
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1"/>
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1"/>
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20"/>
</bean>
<!--定义了Hibernate的SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>gwideal\hklyjj\dao\hbm\User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<!-- 下面定义事务传播属性-->
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 定义BeanNameAutoProxyCreator-->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
<property name="beanNames">
<!-- 下面是所有需要自动创建事务代理的bean-->
<list>
<value>userService</value>
</list>
<!-- 此处可增加其他需要自动创建事务代理的bean-->
</property>
<!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
<property name="interceptorNames">
<list>
<!-- 此处可增加其他新的Interceptor -->
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<bean id="userService" class="gwideal.hklyjj.service.general.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="gwideal.hklyjj.dao.hibernate.UserDaoHibernate">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
可以根据个人习惯,把这个配置文件按照层次、业务、功能分开。
这个就需要在web.xml文件中做出解释,
<?xml version="1.0" encoding="GBK"?>
<web-app 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"
version="2.4">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext.xml
</param-value>
</context-param>
<!-- 用于初始化Spring容器的Listener -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
分享到:
相关推荐
这个"Spring2.5+Structs2+Hibernate3.3框架例子"是一个经典的组合,旨在帮助初学者理解这些框架如何协同工作,构建高效的企业级应用程序。 **Spring框架**:Spring 是一个全面的后端开发框架,它提供了依赖注入(DI...
最后,Struts2+Spring+Hibernate+3.2+整合文档及事例程序.rar提供了完整的整合教程和示例代码,涵盖了从配置文件设置到业务逻辑处理的全过程。通过学习这些内容,开发者可以了解到如何在实际项目中实现SSH框架的集成...
标题中的"Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包"涉及到一系列在Java开发中常用的框架和技术,这是一套集成的开发环境,可以帮助开发者快速搭建企业级应用。下面将对这些技术...
在IT行业中,"Structs2+Spring+Hibernate"(SSH)是经典的Java Web开发框架组合,这三大框架的整合能够构建高效、灵活且易于维护的企业级应用。下面将详细讲解这三个框架以及它们如何协同工作。 Struts2是MVC(模型...
这个"structs2 + spring + hibernate 小例子"是用于演示如何整合这三个组件来构建一个完整的后端系统。下面我们将深入探讨这三个框架的核心功能和它们之间的协作。 1. **Struts2**:Struts2是一个基于MVC(Model-...
标题中的"structs++hibernate+Spring++++ssh"提到了四个重要的Java开发框架和技术:Struts、Hibernate、Spring和SSH。这些技术都是Java企业级应用程序开发中的关键组件,尤其在传统的MVC(模型-视图-控制器)架构中...
2. Hibernate:这是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。Hibernate允许开发者用面向对象的方式来操作数据库,通过编写实体类和映射文件(hbm.xml),可以将数据库表与Java类进行映射...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...
Struts 2+Hibernate+Spring整合开发技术详解sample.pdf
3. **适配Spring**:确保Hibernate配置能够与Spring框架兼容,可以通过Spring管理Hibernate SessionFactory来实现。 ```xml <!-- 示例:配置Hibernate SessionFactory --> ...
根据提供的标题、描述以及部分内容,本文将详细解析与MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12相关的技术栈及其应用。这些技术在企业级开发中非常常见,能够帮助开发者构建高效...
通过这三本书的学习,开发者可以掌握SSH框架的集成使用,包括如何在Struts 2中调用Spring管理的Bean,如何结合Hibernate进行数据访问,以及如何利用Spring的AOP特性来处理横切关注点。这样的组合可以极大地提高开发...
标题中的"jquery+json+structs+spring+hibernate-annotations+maven"是一个典型的Java Web开发技术栈,涵盖了前端到后端的核心组件。这里,我们逐一解析这些技术及其关联的知识点。 1. **jQuery**: jQuery是一个...
structs2 + spring2 + hibernate3 +freemaker + Ajax 其中包括Jquery+Ajax等最新技术 实现的完整项目实例,从中可以学得很多技术知识,只此一家别 无二家. 想学好java_Web开发的就赶紧下载吧 (己包含了数据库的文件,...
Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们共同构成了SSH(Spring、Struts、Hibernate)架构,用于构建高效、灵活的企业级应用程序。本文将深入探讨这三大框架的核心概念、工作原理以及它们...
标题中的"sshzhenghe.rar_spring+structs_structs+hibernate"指的是一个包含Spring、Struts和Hibernate整合的项目压缩包。这个压缩文件很可能是为了展示或分享一个基于这三个关键技术的Web应用程序开发实例。Spring...
在本项目"structs2+hibernate学生信息管理"中,我们主要关注的是使用Struts2框架与Hibernate ORM工具来构建一个简单的学生信息管理系统。这个项目对于初学者来说是一个很好的实践,它涵盖了Web开发中的关键技术和...
在"spring+structs+hibernate 框架的整合demo"中,我们将探讨如何将这三个强大的工具集成到一起,实现一个完整的Web应用程序。 首先,Spring框架是整个应用的核心,它提供了IoC(Inversion of Control)和AOP...
【标题】"很好用的学生信息管理系统,Struts2+hibernate+spring"是一个基于Java技术的教育管理软件,主要用于管理学生数据。该系统利用了Struts2、Hibernate和Spring三大框架,构建了一个高效且易维护的后台架构。 ...
总的来说,`Structs+Spring+Hibernate`实例展示了如何利用这三个框架构建一个功能完善的电商应用,涵盖了用户交互、业务处理和数据存储的全链条。通过学习这个实例,开发者能够深入了解Java Web开发的实践技巧,提升...