`
z_xiaofei168
  • 浏览: 197959 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

三大框架Struts2+Spring2.5+Hibernate3.5的整合开发

    博客分类:
  • S2SH
阅读更多

三大框架Struts2+Spring2.5+Hibernate3.5的整合开发

第一步:

下面给出整合开发时Struts2、Hibernate3.5、Spring2.5需要的jar。

 

Struts2所需要的jar如下:

 

      1、struts2-core-2.x.x.x.jar :Struts 2框架的核心类库
      2、xwork-2.x.x.jar :XWork类库,Struts 2在其上构建
      3、ognl-2.x.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
      4、freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写
      5、commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
      6、commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件
      7、struts2-json-plugin.jar   struts2与json的插件
      8、struts2-spring-plugin.jar    struts2与spring的插件


Hibernate3.5所需要的jar如下:
 
  hibernate核心安装包下的jar
     1、hibernate3.jar
     2、lib\required\*.jar
  hibernate注解安装包下的jar
  hibernate针对JPA的实现包
 

Spring安装包下的jar

   1、spring.jar
   2、aspectjrt.jar
   3、aspectjweaver.jar
   4、c3p0-0.9.1.2.jar
   5、cglib-nodep-2.1_3.jar  
   6、common-annotations.jar
   7、commons-logging.jar
   8、log4j-1.2.15.jar

 

   等等。具体情况因具体而定。如下图的jar

 

第二步:


在源文件夹下新建Spring配置文件beans.xml,在配置文件中配置c3p0数据源:

 

<!-- 数据库连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8" />
		<property name="user" value="root" />
		<property name="password" value="root" />
		<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
		<property name="initialPoolSize" value="1" />
		<!--连接池中保留的最小连接数。-->
		<property name="minPoolSize" value="1" />
		<!--连接池中保留的最大连接数。Default: 15 -->
		<property name="maxPoolSize" value="300" />
		<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
		<property name="maxIdleTime" value="60" />
		<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
		<property name="acquireIncrement" value="5" />
		<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
		<property name="idleConnectionTestPeriod" value="60" />
	</bean>


<!-- 连接工厂 -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="mappingResources">
			<list>
				<value>cn/z_xiaofei168/domain/User.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">false</prop>
			</props>
		</property>
	</bean>

 

 
第三步:

实体bean配置模板.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="cn.z_xiaofei168.domain.User" table="users">
		<id name="id">
			<generator class="native" />
		</id>
		<property name="name" />
		<property name="pass" />
		<property name="email" />
		<property name="rdate" />
	</class>
</hibernate-mapping>

 

 

   第四步:

  在web容器中实例化spring容器和配置struts2

 

<!--
		1、指定spring的配置文件,默认从web根目录寻找配置文件,
		我们可以通过spring提供的classpath:前缀指定从类路径下寻找
	-->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:beans.xml</param-value>
	</context-param>
	<!-- 对Spring容器进行实例化 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>



 	<!-- 2、配置struts2启动时用的Filter -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

  第五步:

struts2的配置文件模板struts.xml如下。常量struts.objectFactory=spring明确指出将由spring负责创建Action实例。

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<package name="z_xiaofei168" extends="struts-default" namespace="/csdn">
		<global-results>
			<result name="input">/index.jsp</result>
		</global-results>
		<!--
			beans.xml中
			id="userAction"中的userAction必须与struts.xml中的class="userAction"中相一致
		-->
		<action name="user_*" class="userAction" method="{1}">
			<result name="insert" type="chain">user_findAll</result>
			<result name="delete" type="chain">user_findAll</result>
			<result name="findById">/user/user_update.jsp</result>
			<result name="update" type="chain">user_findAll</result>
			<result name="findAll">/user/user_list.jsp</result>

		</action>
	</package>
</struts>

 

 

  第六步:

为了能从spring容器中寻找到Action bean,要求action配置的class属性值和spring中bean的名称相同。如下:

 

 

<package name="z_xiaofei" extends="json-default" namespace="/csdn">
		<global-results>
			<result name="input">/index.jsp</result>
		</global-results>
		<!--
			beans.xml中
			id="userAction"中的userAction必须与struts.xml中的class="userAction"中相一致
		-->
		<action name="user_*" class="userAction" method="{1}">
			...
		</action>
	</package>

 

 
第七步:

使用spring解决struts2乱码问题。

 

<!-- 使用spring解决struts2乱码问题 -->
	<filter>
		<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 第八步:

使用spring解决hibernate因session关闭导致的延迟加载例外问题。

<!-- 使用spring解决hibernate因session关闭导致的延迟加载例外问题 -->
	<filter>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
		<init-param>
			<!--
				指定org.springframework.orm.hibernate3.LocalSessionFactoryBean
				在spring配置文件中的名称,默认值为sessionFactory.
				如果LocalSessionFactoryBean在spring中的名称不是sessionFactory,
				该参数一定要指定,否则会出现找不到sessionFactory的例外
			-->
			<param-name>sessionFactoryBeanName</param-name>
			<param-value>sessionFactory</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

62
17
分享到:
评论
37 楼 wcg2008er 2011-11-30  
2、aspectjrt.jar
3、aspectjweaver.jar
4、c3p0-0.9.1.2.jar
5、cglib-nodep-2.1_3.jar  
6、common-annotations.jar
8、log4j-1.2.15.jar
请问你这些jar包是在哪个目录里面找的?
36 楼 linianf 2011-07-08  
请问楼主如何解决asm包冲突的问题的
35 楼 z_xiaofei168 2011-06-02  
lan861698789 写道
太简单了啊

往往简单是最难的。
34 楼 z_xiaofei168 2011-06-02  
钢镚儿 写道
贡献呀!以后忘记了可以在上面找了!哈哈

呵呵,恩恩,要放在自己的电脑里找不到了,想想自己的博客上什么都有,直接上去找就好了。
33 楼 lan861698789 2011-06-02  
太简单了啊
32 楼 钢镚儿 2011-06-02  
贡献呀!以后忘记了可以在上面找了!哈哈
31 楼 z_xiaofei168 2011-05-26  
shuailan 写道
kyfxbl 写道
kang844850704 写道
z_xiaofei168 写道
kang844850704 写道
不知道怎么说    写的很好  也很有用  可工作后发现我做过的项目从没一起用过这3个框架   基本没用过hebernate    哎 !

估计是每个公司有每个公司开发的规范的原因吧。当用到的时候不是就有用了吗?有时候学的东西你也不知道它什么时候有用。你说是吧??

确实。。。该死的华为  该死的BME  OSGI  MAVEN 


你说的这3个,和HIBERNATE有一毛钱关系吗?

趁机发泄一下吧,估计有个不堪回首的过去和悲惨的现实,的确不适应maven的包管理模式.


What???
30 楼 z_xiaofei168 2011-05-26  
yushl 写道
三大框架。。。。。。!!!!!!
怎么听到这个词的时候我有种鸡皮疙瘩一身的感觉?

神马情况?
29 楼 yushl 2011-05-26  
三大框架。。。。。。!!!!!!
怎么听到这个词的时候我有种鸡皮疙瘩一身的感觉?
28 楼 shuailan 2011-05-26  
kyfxbl 写道
kang844850704 写道
z_xiaofei168 写道
kang844850704 写道
不知道怎么说    写的很好  也很有用  可工作后发现我做过的项目从没一起用过这3个框架   基本没用过hebernate    哎 !

估计是每个公司有每个公司开发的规范的原因吧。当用到的时候不是就有用了吗?有时候学的东西你也不知道它什么时候有用。你说是吧??

确实。。。该死的华为  该死的BME  OSGI  MAVEN 


你说的这3个,和HIBERNATE有一毛钱关系吗?

趁机发泄一下吧,估计有个不堪回首的过去和悲惨的现实,的确不适应maven的包管理模式.
27 楼 z_xiaofei168 2011-05-24  
Technoboy 写道
我一直搞不明白,为什么这种东西总会这么。。。。

什么意思?
26 楼 z_xiaofei168 2011-05-24  
szcs10138456 写道
赞一个,很用心~!

呵呵
25 楼 z_xiaofei168 2011-05-24  
yin_bp 写道
我发表了一片mvc+pesistent+ioc/aop整合的文章,是不是有用呢,可以看一下:
http://www.iteye.com/wiki/bbossgroups/3092-mvc-bboss-config

嗯,挺好的
24 楼 Technoboy 2011-05-24  
我一直搞不明白,为什么这种东西总会这么。。。。
23 楼 szcs10138456 2011-05-23  
赞一个,很用心~!
22 楼 yin_bp 2011-05-22  
我发表了一片mvc+pesistent+ioc/aop整合的文章,是不是有用呢,可以看一下:
http://www.iteye.com/wiki/bbossgroups/3092-mvc-bboss-config
21 楼 z_xiaofei168 2011-05-20  
skzr.org 写道

恩,其实我看到你学的了,呵呵
20 楼 skzr.org 2011-05-20  
19 楼 z_xiaofei168 2011-05-20  
wustrive_2008 写道
很好,学习了,现在正需要!

那就好,我写这篇文章就是为了大家学习,共同进步的。
18 楼 wustrive_2008 2011-05-20  
很好,学习了,现在正需要!

相关推荐

    低清版 大型门户网站是这样炼成的.pdf

    6.4.2 spring 2.5集成mvc框架struts 2 411 6.4.3 ssh 2组合框架的基本开发步骤—eportal启程 414 6.5 小结 423 第2篇 实践篇 第7章 ssh 2热身——构建新闻发布系统 427 7.1 门户网站新闻资讯基本分类 427 7.2 ...

    JAVA程序开发大全---上半部分

    以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、Spring等主流框架的各种Java应用程序。...

    spring in action英文版

     4.4 用Spring整合Hibernate  4.4.1 Hibernate概览  4.4.2 管理Hibernate资源  4.4.3 用HibernateTemplate访问Hibernate  4.4.4 HibernateDaoSupport的子类  4.5 Spring和JDO  4.5.1 配置JDO ...

    Spring 2.0 开发参考手册

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

    Spring API

    2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...

    Spring中文帮助文档

    2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)容器 3.1. 简介 3.2. 基本原理 - 容器和bean 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    Spring攻略(第二版 中文高清版).part2

    2.5 使用Spring表达式语言 64 2.5.1 问题 64 2.5.2 解决方案 64 2.5.3 工作原理 65 2.6 设置Bean作用域 69 2.6.1 问题 69 2.6.2 解决方案 69 2.6.3 工作原理 70 2.7 自定义Bean初始化和析构 72 ...

    Spring攻略(第二版 中文高清版).part1

    2.5 使用Spring表达式语言 64 2.5.1 问题 64 2.5.2 解决方案 64 2.5.3 工作原理 65 2.6 设置Bean作用域 69 2.6.1 问题 69 2.6.2 解决方案 69 2.6.3 工作原理 70 2.7 自定义Bean初始化和析构 72 ...

Global site tag (gtag.js) - Google Analytics