`
wxlgzxx_1988
  • 浏览: 67805 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts1.x Spring2.x Hibernate3.x DWR2.x整合笔记

 
阅读更多

Struts1.x Spring2.x Hibernate3.x DWR2.x整合笔记

整合 Struts Spring

1. web.xml 中进行 Struts Spring 的配置

1.web.xml 中配置 Spring Context(必需设置)

<!--源代码目录下面应该有这些文件, 注意,这里用到了通配可匹配多个文件-->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext*.xml</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

2.web.xml 中设置的 Struts (自动设置)

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>

org.apache.struts.action.ActionServlet

</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<!-- 可能会有其它的可选启动参数 -->

<load-on-startup>0</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

3.web.xml 中配置字符集过滤器(必需设置)

<filter>

<filter-name>charsetfilter</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>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>charsetfilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

2. Struts 配置文件中进行和 Spring 的集成

4.struts-config.xml 中设置 Spring 插件支持(可选设置)

<plug-in

className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation"

value="classpath:applicationContext*.xml" />

</plug-in>

5.struts-config.xml 中设置 action type 属性(必需设置)

type="org.springframework.web.struts.DelegatingActionProxy"

3. Spring 配置文件中进行和 Struts 的集成

6.Sping 配置文件中进行 action 的设置(必需设置)

<!-- name等同于action中的path, class等同于actiontype -->

<bean name="/login" class="cn.qdqn.web.action.LoginAction">

<!-- 通常在此会写上biz相关接口的注入 <property...> -->

</bean>

4. 其它推荐配置

7. log4j.properties 文件生成,注意路径必需在 src/目录下(推荐设置)

log4j.rootLogger=WARN, Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%-5p: %c#%M %x: %m%n

整合 Spring Hibernate

本文采用的是 hibernate 配置文件和 spring 配置文件分离式配置

5. Hibernate 配置文件

8.hibernate.cfg.xml (自动生成)

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.-->

<hibernate-configuration>

<session-factory>

<property name="myeclipse.connection.profile">2005</property>

<property name="connection.url">

jdbc:sqlserver://localhost:1433;databaseName=hibernate_db

</property>

<property name="connection.username">sa</property>

<property name="connection.password"></property>

<property name="connection.driver_class">

com.microsoft.sqlserver.jdbc.SQLServerDriver

</property>

<property name="dialect">

org.hibernate.dialect.SQLServerDialect

</property>

<property name="show_sql">true</property>

<mapping resource="cn/qdqn/entity/Country.hbm.xml" />

<mapping resource="cn/qdqn/entity/City.hbm.xml" />

<mapping resource="cn/qdqn/entity/County.hbm.xml" />

</session-factory>

</hibernate-configuration>

6. Spring配置文件

Spring中需要进行DAO依赖的注入及事务的aop管理,在这里,我们使用2.0的风格

9.spring的数据库相关配置文件头部声明(必需设置)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

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

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-2.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<! 具体配置略--

</beans>

10.spring的数据库相关配置文件会话工厂代码(自动生成)

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="configLocation"

value="classpath:hibernate.cfg.xml">

</property>

</bean>

11.spring的数据库相关配置文件DAO依赖注入(自动生成)

<!-- 自动生成DAO类的依赖注入 -->

<bean id="CountryDAO" class="cn.qdqn.entity.CountryDAO">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

在自动生成的DAO中,spring是不管理事务的,所以我们必需自己配置事务管理,通常,我们在biz对象中对DAO进行依赖,对biz对象进行aop的事务管理

12.spring的数据库相关配置文件AOP事务管理2.0风格(必需设置)

<!-- 建立事务管理器 -->

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory">

<ref local="sessionFactory" />

</property>

</bean>

<!-- 定义事务通知 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<!-- 对查找方法进行只读事务通知要求查找方法以find开头可按需要修改 -->

<tx:method name="find*" propagation="SUPPORTS"

read-only="true" />

<!-- 对其它方法如增 改进行事务支持 -->

<tx:method name="*" propagation="REQUIRED" />

</tx:attributes>

</tx:advice>

<!-- 切面定义 -->

<aop:config>

<!-- cn.qdqn.biz包及子包中的任意方法进行切面 -->

<aop:pointcut id="bizMethods"

expression="execution(* cn.qdqn.biz..*.*(..))" />

<aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" />

</aop:config>

7. OpenSessionInViewFilter使用方法

Jsp页面上,如果想使用one-many 等对象关联关系进行数据访问,通常会遇到session已经被关闭的错误,我们需要在web.xml的配置文件中设置OpenSessionInView特性。

<!-- web.xml OpenSessionInView -->

<filter>

<filter-name>OpenSessionInView</filter-name>

<filter-class>

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

</filter-class>

<init-param>

<param-name>sessionFactoryBeanName</param-name>

<!-- 注意下面的值必需和spring配置文件中的工厂id一样 -->

<param-value>sessionFactory</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>OpenSessionInView</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

8. Web.xml中设置dwr支持

dwr.jar放入依赖包路径中

14.web.xmlDWR的配置

<!-- web.xml DWR的配置需要dwr.jar包的支持 -->

<servlet>

<servlet-name>dwr-invoker</servlet-name>

<servlet-class>

org.directwebremoting.servlet.DwrServlet

</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>true</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>dwr-invoker</servlet-name>

<url-pattern>/dwr/*</url-pattern>

</servlet-mapping>

9. Dwr独立管理Bean

15.WEB-INF/dwr.xml配置文件示例(必需设置)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE dwr PUBLIC

"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"

"http://getahead.org/dwr/dwr20.dtd">

<dwr>

<allow>

<create creator="new" javascript="CountryHandle">

<param name="class" value="cn.qdqn.biz.CountryHandle" />

</create>

</allow>

</dwr>

10.Dwr调用Spring管理的Bean

16.spring配置文件对dwr对象做注入(必需设置)

<!-- dwr对象注入 -->

<bean id="CountryHandle" class="cn.qdqn.dwr.CountryHandle">

<property name="daoServiceLocator" ref="DaoServiceLocator"></property>

</bean>

17.WEB-INF/dwr.xml配置文件中关于spring bean的调用(必需设置)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE dwr PUBLIC

"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"

"http://getahead.org/dwr/dwr20.dtd">

<dwr>

<allow>

<create creator="spring" javascript="CountryHandle">

<param name="beanName" value="CountryHandle" />

</create>

</allow>

</dwr>

整合中常见的问题及解决方法

11.使用Myeclipse整合时在工程中加入各框架的顺序

以下顺序可供参考

1. 新建web project

2. 加入Struts能力

3. 加入Spring能力

4. 加入Hibernate能力

5. 手工配置DWR

12.对数据库表进行hibernate自动生成代码时出错

原因可能为

1. 没有加入Hibernate支持

解法:对工程加入Hibernate支持

2. 由于asm包的冲突引发的

解法:参见问题 运行时报CGLIB出错

13.依赖注入时无法对基于类的属性进行set方式注入

原因是CGLIB包冲突参见问题运行时报CGLIB出错

14.运行时报CGLIB出错

原因是SpringHibernate都使用了asmcglib两个库。

解决办法

.. 确保在加入包时不使用默认的引用库,而使用把包Copy到工程中的方法,通常在WEB-INF/lib下。

.. WEB-INF/lib文件夹下把

.. asm.jar

.. asm-attrs.jar

.. cglib-2.1.3.jar

三个包删除

.. 对工程进行刷新操作(选中工程名按F5)

2注意此方法以Myeclipse6.0为例,其它版本可能有所不同

Struts1.x Spring2.x Hibernate3.x DWR2.x 整合工具文档 10

15.Spring在加入时应该选哪几个包

如果Springhibernate之前加可以选如下几个包

.. Spring 2.0 AOP Libraries

.. Spring 2.0 Core Libraries

.. Spring 2.0 Web Libraries

如果Spring后加的话还要把持久化和Hibernate相关支持包选中(不推荐后加)

16.Hibernate在加入时应该选哪几个包

如果Hibernate后加的话把所有出现的包都选中即可,如果按问题Spring在加入时应该选哪几个包的方法做这里应该出现三个:

.. Hibernate 3.1 Core libraries

.. Hibernate 3.1 Advanced support libraries

.. Spring 2.0 Persistence Core Libraries


分享到:
评论

相关推荐

    Struts2 + Spring + Hibernate + DWR 项目布署笔记

    1. 配置Web应用的web.xml文件,包括Struts2的前端控制器DispatcherServlet、Spring的ContextLoaderListener以及DWR的相关配置。 2. 在Spring的配置文件中定义Bean,包括DAO、Service和Action类,并进行必要的依赖...

    2_corejava_tiger.rar

    我有全手套的java相关技术的笔记,超级好。如: 1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

    Unix学习笔试,超级好,1_unix.rar

    我有全手套的java相关技术的笔记,超级好。如:1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

    dwr笔记整理(三)

    标题 "dwr笔记整理(三)" 暗示了这篇笔记主要关注Direct Web Remoting (DWR) 技术的第三部分。DWR是一种Java技术,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行实时通信,实现AJAX功能。这篇笔记...

    xml学习笔试,超级好

    我有全手套的java相关技术的笔记,超级好。如: 1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

    Java框架技术学习笔记.pdf

    本笔记主要探讨了Struts、Hibernate、Spring这三大主流框架以及Ajax技术在实际应用中的整合和使用。 1. SSH框架集成 SSH(Struts、Spring、Hibernate)是Java企业级开发中常见的三位一体框架组合。Struts作为MVC...

    dwr案例+文档+jar

    首先,"DWR使用笔记.doc"可能是用户在实践过程中整理的个人笔记,通常会涵盖DWR的基本概念、配置步骤、API使用等内容。通过阅读这份笔记,我们可以了解DWR如何在实际项目中被利用,以及可能遇到的问题及其解决方案。...

    Java框架学习笔记.pdf

    在Java框架学习笔记中,涉及的知识点十分丰富,涵盖了Struts、Hibernate、Spring、Ajax等Java开发中非常核心的技术框架。下面我将分别对这些知识点进行详细解释。 1. Struts框架 Struts是一种用于开发Java EE应用...

    SSH框架+Ajax(运用dwr框架)综合小实例

    标题中的“SSH框架+Ajax(运用dwr框架)综合小实例”指的是在Web开发中,使用Struts2、Spring和Hibernate三大主流Java EE框架(SSH)结合Ajax技术,并通过Direct Web Remoting (DWR) 框架进行前端与后端交互的一个实战...

    dwr学习实录

    8. **DWR与其他技术的集成**:了解DWR与Spring、Struts、Hibernate等常见框架的集成,以及如何在AJAX应用中配合使用DWR。 9. **调试与错误处理**:学习DWR提供的调试工具和日志记录,以便在开发过程中有效地定位和...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).doc

    3. **Hibernate**: ORM 工具,简化数据库操作。 4. **Spring**: 提供依赖注入、面向切面编程等功能。 5. **Ajax**: 异步通信技术。 6. **ExtJS、DWR**: 前端框架和技术。 ### Java 之父 James Gosling 1. **1990 ...

    Java框架技术学习笔记

    - **SSH组合**:Struts、Spring 和 Hibernate 组合起来称为 SSH 框架,它们分别负责处理Web应用的不同层次,Struts 作为 MVC 架构中的控制器,Spring 用于业务逻辑管理,Hibernate 则用于持久化层。 - **DWR**:...

    Ajax总结和java框架学习笔记

    ### Ajax技术概述与Java框架学习笔记 #### 一、Ajax技术简介 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,...

    Java框架学习笔记

    - **SSH框架组合**:SSH是Struts + Spring + Hibernate的简称,这三个框架在Java Web应用开发中非常常见,它们各自解决了不同的问题,并且能够很好地协同工作。 - **Struts**:负责MVC架构中的控制器部分,它提供...

    我的java学习笔记

    这是我在学习java是做的笔记!发在网上和大家分享和学习;文档里包含Spring / Hibernate / Struts /DWR/Oracle/MySql/JSP就打内置对象和两个分页的类等等;

    java知识点汇总学习路线与笔记

    #### 十一、Struts1.X & Struts2.X - **多层架构理论**:MVC、DAO等模式。 - **DomainModel(领域模型)**:用于表示应用程序中的核心业务概念。 - **Pattern(RBAC权限设计)**:模式在软件设计中非常重要,RBAC是...

Global site tag (gtag.js) - Google Analytics