`
lchenjay
  • 浏览: 16446 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Structs2+Hibernate3.2+Spring2用户注册管理 学习笔记(一)-配置

阅读更多
首先是对于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>
分享到:
评论
1 楼 wiely 2008-11-13  
呵呵,jar包的配置本身就是很麻烦。有时候只能是采用一个一个试的办法,看是不是某个jar包缺少拉还是多余拉。

相关推荐

    Spring2.5+Structs2+Hibernate3.3框架例子

    这个"Spring2.5+Structs2+Hibernate3.3框架例子"是一个经典的组合,旨在帮助初学者理解这些框架如何协同工作,构建高效的企业级应用程序。 **Spring框架**:Spring 是一个全面的后端开发框架,它提供了依赖注入(DI...

    Struts2+Spring+Hibernate3.2+整合文档及事例程序.zip

    最后,Struts2+Spring+Hibernate+3.2+整合文档及事例程序.rar提供了完整的整合教程和示例代码,涵盖了从配置文件设置到业务逻辑处理的全过程。通过学习这些内容,开发者可以了解到如何在实际项目中实现SSH框架的集成...

    Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包

    标题中的"Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包"涉及到一系列在Java开发中常用的框架和技术,这是一套集成的开发环境,可以帮助开发者快速搭建企业级应用。下面将对这些技术...

    structs2+spring+hibernate整合

    在IT行业中,"Structs2+Spring+Hibernate"(SSH)是经典的Java Web开发框架组合,这三大框架的整合能够构建高效、灵活且易于维护的企业级应用。下面将详细讲解这三个框架以及它们如何协同工作。 Struts2是MVC(模型...

    structs2 + spring + hibernate 小例子

    这个"structs2 + spring + hibernate 小例子"是用于演示如何整合这三个组件来构建一个完整的后端系统。下面我们将深入探讨这三个框架的核心功能和它们之间的协作。 1. **Struts2**:Struts2是一个基于MVC(Model-...

    structs++hibernate+Spring++++ssh

    标题中的"structs++hibernate+Spring++++ssh"提到了四个重要的Java开发框架和技术:Struts、Hibernate、Spring和SSH。这些技术都是Java企业级应用程序开发中的关键组件,尤其在传统的MVC(模型-视图-控制器)架构中...

    structs+ hibernate +spring 項目

    2. Hibernate:这是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。Hibernate允许开发者用面向对象的方式来操作数据库,通过编写实体类和映射文件(hbm.xml),可以将数据库表与Java类进行映射...

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...

    Struts 2+Hibernate+Spring整合开发技术详解sample.pdf

    Struts 2+Hibernate+Spring整合开发技术详解sample.pdf

    SPring+structs2+hibernate框架搭建

    3. **适配Spring**:确保Hibernate配置能够与Spring框架兼容,可以通过Spring管理Hibernate SessionFactory来实现。 ```xml &lt;!-- 示例:配置Hibernate SessionFactory --&gt; ...

    MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12

    根据提供的标题、描述以及部分内容,本文将详细解析与MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12相关的技术栈及其应用。这些技术在企业级开发中非常常见,能够帮助开发者构建高效...

    structs+hibernate+Spring+ssh三本书

    通过这三本书的学习,开发者可以掌握SSH框架的集成使用,包括如何在Struts 2中调用Spring管理的Bean,如何结合Hibernate进行数据访问,以及如何利用Spring的AOP特性来处理横切关注点。这样的组合可以极大地提高开发...

    jquery+json+structs+spring+hibernate-annotations+maven

    标题中的"jquery+json+structs+spring+hibernate-annotations+maven"是一个典型的Java Web开发技术栈,涵盖了前端到后端的核心组件。这里,我们逐一解析这些技术及其关联的知识点。 1. **jQuery**: jQuery是一个...

    structs2 + spring2 + hibernate3 +freemaker + Ajax

    structs2 + spring2 + hibernate3 +freemaker + Ajax 其中包括Jquery+Ajax等最新技术 实现的完整项目实例,从中可以学得很多技术知识,只此一家别 无二家. 想学好java_Web开发的就赶紧下载吧 (己包含了数据库的文件,...

    spring+structs+Hibernate

    Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们共同构成了SSH(Spring、Struts、Hibernate)架构,用于构建高效、灵活的企业级应用程序。本文将深入探讨这三大框架的核心概念、工作原理以及它们...

    sshzhenghe.rar_spring+structs_structs+hibernate

    标题中的"sshzhenghe.rar_spring+structs_structs+hibernate"指的是一个包含Spring、Struts和Hibernate整合的项目压缩包。这个压缩文件很可能是为了展示或分享一个基于这三个关键技术的Web应用程序开发实例。Spring...

    structs2+hibernate学生信息管理

    在本项目"structs2+hibernate学生信息管理"中,我们主要关注的是使用Struts2框架与Hibernate ORM工具来构建一个简单的学生信息管理系统。这个项目对于初学者来说是一个很好的实践,它涵盖了Web开发中的关键技术和...

    spring+structs+hibernate 框架的整合demo

    在"spring+structs+hibernate 框架的整合demo"中,我们将探讨如何将这三个强大的工具集成到一起,实现一个完整的Web应用程序。 首先,Spring框架是整个应用的核心,它提供了IoC(Inversion of Control)和AOP...

    很好用的学生信息管理系统,Struts2+hibernate+spring

    【标题】"很好用的学生信息管理系统,Struts2+hibernate+spring"是一个基于Java技术的教育管理软件,主要用于管理学生数据。该系统利用了Struts2、Hibernate和Spring三大框架,构建了一个高效且易维护的后台架构。 ...

    structs+spring+hibernate实例

    总的来说,`Structs+Spring+Hibernate`实例展示了如何利用这三个框架构建一个功能完善的电商应用,涵盖了用户交互、业务处理和数据存储的全链条。通过学习这个实例,开发者能够深入了解Java Web开发的实践技巧,提升...

Global site tag (gtag.js) - Google Analytics