- 浏览: 174169 次
- 性别:
- 来自: 宁波
文章分类
- 全部博客 (113)
- EJB3.0 (1)
- Spring+Hibernate+Struts2 (7)
- 杂谈 (27)
- ExtJs2.2 (1)
- 设计模式 (1)
- JBoss Seam (0)
- 以前在学校里学习的笔记 (3)
- 我的智能手机研究文章 (2)
- DIV+CSS美化页面 (6)
- javascript (7)
- POI操作 (2)
- 数据库 (8)
- Tomcat服务器 (2)
- 测试 (3)
- 水区 (5)
- c++ (1)
- 工作流 (0)
- osg (0)
- JS技术 (2)
- ubuntu linux (3)
- svg (1)
- android (17)
- PHP (1)
- webservise (1)
- java (1)
- mongdb (0)
最新评论
-
flytosea:
如果LIB包建立在外面的话,maven不能把jar一起打包
maven 不建立仓库直接加入直接的jar -
javaAlpha:
楼主 总结的太全了。
CSS兼容IE6,IE7,FF的技巧
一、Spring+Struts2整合:
1、spring配置在web.xml文件中的上下文监听器:
2、struts2配置在web.xml文件中的过滤器:
3、设置struts.xml文件,就可以使用spring的IOC来管理struts的Action:
默认的的就是spring,可以不写
4、第三步设置后,以后在struts.xml 文件中配置一个action时,它的class就不是一个类了,而是在applicationContext.xml文件中定义过的类的ID,在struts.xml文件中就只需要引用定义好的类的id 就可以了。
然后特别要注意的一个问题:action是一个请求就是一个action对象,而在spring中则不是的,它是自动分配类的实例的,是使用的单 态模式来生产类的实例的,不符合action,因此在applicationContext.xml文件中定义每个action时,都要在类后加上:
scope=“prototype” 属性
scope="prototype" 属性三、 三者组合开发:
一般在组合开发时,没有什么难的,只要把上面两步做好就可以是三个组合开发了。
对于进行组合开发时,一般使用的系统架构:
1、 先从最底层开发,先开发POJO类,和Hibernate映射文件。它相当于系统的数据库层。
2、 再开发DAO层,它是对于数据进行持久化的一层,专门处理各种数据增、删、改、查的功能。并且使用DAO工厂模式,以保证和上层没有任何的联系,并且可以方便于类与接口的扩展。
3、 第三是开发manager层,它相当于软件的业务逻辑层,即专门处理各种业务逻辑。实现系统的业务处理功能。并且它隔离事务,使与下层的数据持久和上层的数据操作没有任何的联系。
4、 Action层,也即软件的表示层,处理action的接收与回复。各action由spring管理。
二、Spring+Hibernate整合:
Spring整合Hibernate,是做了一个很大的调整的,因为spring可以把管理Hibernate的工作都做了,以前的hibernate.cfg.xml文件都去掉了,而将这些内容都交给了spring来管理了。
1、 applicationContext.xml文件中应该配置如下内容:
2、可以使用spring中的HibernateDAOSupport与HibernateTemplate类来进行数据持久化操作:
A、HibernateDAOSupport类中定义了对session、sessionFactory的操作方法与getHibernateTemplate方法来获得一个HibernateTemplate实例;
B、HibernateTemplate类中定义了对数据持久化的各种封装的方法,我们可以用它来对数据进行操作。
因此在使用时,我们可以继承HibernateDAOSupport类,然后实例化HibernateTemplate类来进行数据持久化。
三、 组合开发中的一些问题:
1、 在组合开发中,常见的一个问题就是session的管理,当我们使用HibernateTemplate操作数据库时,可以不对session进行显示的操作,spring可以自动处理session的打开与关闭。
我们可以在web.xml文件中显示的配置一个session管理的过滤器,它专门帮助我们关闭session:
注:它一定要在struts2的过滤器之前。因为web.xml文件的过滤器执行是有顺序的。而session一定在前面进行。
注:它一定要在struts2的过滤器之前。因为web.xml文件的过滤器执行是有顺序的。而session一定在前面进行。它会在所有的action处理完了,页面显示完了,就会自动关闭session。
六、 spring事务处理
1、事务的处理也交给了spring来管理,要在applicationContext.xml文件中上配置事务管理类:
它是通过sessionFactory来管理,因此在传进来一个sessionFactory来接管事务处理。
2、 声明式事务处理:
在spring中对事务进行管理时,可以显示地进行事务处理的定义:
//给事务添加的属性
//propagation表示的是事务的传播特性,使用required时,是当检测到add开头的方法时,就看此时有没有开启的事务,如果有则将方法放进事务中去,如果没有,则新建一个事务。然后将方法放进去。
//如果检测到其它的方法,则给其只读数据库的属性。即当本方法在读时,其它的方法不能再去写了。保证一个事务的完整性。
//propagation表示的是事务的传播特性,使用required时,是当检测到add开头的方法时,就看此时有没有开启的事务,如果有则将方法放进事务中去,如果没有,则新建一个事务。然后将方法放进去。
//如果检测到其它的方法,则给其只读数据库的属性。即当本方法在读时,其它的方法不能再去写了。保证一个事务的完整性。
对于事务的其它传播属性,则可以参考其它文档进行相关的了解。
上一个配置是针对于所有包中类的事务处理方法的设置。下面一段是<aop:config/> 的定义,它确保由 ‘txAdvice’ bean定义的事务通知在应用中合适的点被执行。首先我们定义了 一个切面,它匹配 HibernateDAO 接口定义的所有操作,我们把该切面叫做 ‘allManagerMethod’。然后我们用一个通知器(advisor)把这个切面与 ‘txAdvice’ 绑定在一起,表示当 ‘allManagerMethod’ 执行时,’txAdvice’ 定义的通知事务逻辑将被执行。这就是AOP切面工程:
//调用上面配置的事务属性,可以将它给本aop pointcut。
<aop:advisor advice-ref=”txAdvice” pointcut-ref=”allManagerMethod”/>
//如果还有其它的定义,则可以再加上pointcut、advisor来定义本切面点的事务逻辑。
</aop:config>
<aop:config>
<aop:pointcut id=”allManagerMethod”
expression=”execution(* com.hejianjiao.hibernate.HibernateDAO.*(..))”/>
//调用上面配置的事务属性,可以将它给本aop pointcut。
<aop:advisor advice-ref=”txAdvice” pointcut-ref=”allManagerMethod”/>
//如果还有其它的定义,则可以再加上pointcut、advisor来定义本切面点的事务逻辑。
</aop:config>//expression中的内容是要执行本切面的一个接口,中的所有方法:如:一个接口中定义了操作数据的方 法:com.hejianjiao.hibernate.HibernateDAO,则下面execution括号中的内容就为:* com.hejianjiao.hibernate.HibernateDAO.*(..)。而如果在com.hejianjiao.hibernate 包中还有其它的类也有操作方法,我们要一起定义的话,就可以写为:* com.hejianjiao.*.*(..),其中(..)表示的是方法,前面的第一个*是操作的接口或者类。
上面的配置将为由 ‘HibernateDAO’ 定义的bean创建一个代理对象,这个代理对象被装配了事务通知,所以当它的相应方法被调用时,一个事务将被启动、挂起、被标记为只读,或者其它(根据该方法所配置的事务语义)。
1、spring配置在web.xml文件中的上下文监听器:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframwork.web.content.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframwork.web.content.ContextLoaderListener</listener-class></listener>
2、struts2配置在web.xml文件中的过滤器:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-patter>/*</url-patter> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-patter>/*</url-patter> </filter-mapping>
3、设置struts.xml文件,就可以使用spring的IOC来管理struts的Action:
默认的的就是spring,可以不写
<content name=“struts.objectFactory” value=“spring” > <content name="struts.objectFactory" value="spring" >
4、第三步设置后,以后在struts.xml 文件中配置一个action时,它的class就不是一个类了,而是在applicationContext.xml文件中定义过的类的ID,在struts.xml文件中就只需要引用定义好的类的id 就可以了。
然后特别要注意的一个问题:action是一个请求就是一个action对象,而在spring中则不是的,它是自动分配类的实例的,是使用的单 态模式来生产类的实例的,不符合action,因此在applicationContext.xml文件中定义每个action时,都要在类后加上:
scope=“prototype” 属性
scope="prototype" 属性三、 三者组合开发:
一般在组合开发时,没有什么难的,只要把上面两步做好就可以是三个组合开发了。
对于进行组合开发时,一般使用的系统架构:
1、 先从最底层开发,先开发POJO类,和Hibernate映射文件。它相当于系统的数据库层。
2、 再开发DAO层,它是对于数据进行持久化的一层,专门处理各种数据增、删、改、查的功能。并且使用DAO工厂模式,以保证和上层没有任何的联系,并且可以方便于类与接口的扩展。
3、 第三是开发manager层,它相当于软件的业务逻辑层,即专门处理各种业务逻辑。实现系统的业务处理功能。并且它隔离事务,使与下层的数据持久和上层的数据操作没有任何的联系。
4、 Action层,也即软件的表示层,处理action的接收与回复。各action由spring管理。
二、Spring+Hibernate整合:
Spring整合Hibernate,是做了一个很大的调整的,因为spring可以把管理Hibernate的工作都做了,以前的hibernate.cfg.xml文件都去掉了,而将这些内容都交给了spring来管理了。
1、 applicationContext.xml文件中应该配置如下内容:
//配置数据连接类 <bean id=“dataSource” lass=“org.apache.commons.dbcp.BasicDataSource”> <property name=“driverClassName” value=“org.gjt.mm.mysql.Driver”> </property> <property name=“url” value=“jdbc:mysql://localhost:3306/test”></property> <property name=“username” value=“root”></property> <property name=“password” value=“root”></property> </bean> //配置session工厂类 <bean id=“sessionFactory” class=“org.springframework.orm.hibernate3.LocalSessionFactoryBean”> <property name=“dataSource”> <ref bean=“dataSource” /> </property> <property name=“hibernateProperties”> <props> <prop key=“hibernate.dialect”> org.hibernate.dialect.MySQLDialect </prop> <prop key=“hibernate.show_sql”>true</prop> </props> </property> <property name=“mappingResources”> <value>com/hejianjiao/vo/Person.hbm.xml</value> </property> </bean> //配置数据连接类 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/test"> </property> <property name="username" value="root"></property> </bean> //配置session工厂类 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="mappingResources"> <value>com/hejianjiao/vo/Person.hbm.xml</value> </property> </bean>
2、可以使用spring中的HibernateDAOSupport与HibernateTemplate类来进行数据持久化操作:
A、HibernateDAOSupport类中定义了对session、sessionFactory的操作方法与getHibernateTemplate方法来获得一个HibernateTemplate实例;
B、HibernateTemplate类中定义了对数据持久化的各种封装的方法,我们可以用它来对数据进行操作。
因此在使用时,我们可以继承HibernateDAOSupport类,然后实例化HibernateTemplate类来进行数据持久化。
三、 组合开发中的一些问题:
1、 在组合开发中,常见的一个问题就是session的管理,当我们使用HibernateTemplate操作数据库时,可以不对session进行显示的操作,spring可以自动处理session的打开与关闭。
我们可以在web.xml文件中显示的配置一个session管理的过滤器,它专门帮助我们关闭session:
<filter> <filter-name>lazyLoadingFilter</filter-name> <filter-class> org.springframwork.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> </filter> <filter-mapping> <filter-name>lazyLoadingFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
注:它一定要在struts2的过滤器之前。因为web.xml文件的过滤器执行是有顺序的。而session一定在前面进行。
<filter> <filter-name>lazyLoadingFilter</filter-name> <filter-class> org.springframwork.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> </filter> <filter-mapping> <filter-name>lazyLoadingFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
注:它一定要在struts2的过滤器之前。因为web.xml文件的过滤器执行是有顺序的。而session一定在前面进行。它会在所有的action处理完了,页面显示完了,就会自动关闭session。
六、 spring事务处理
1、事务的处理也交给了spring来管理,要在applicationContext.xml文件中上配置事务管理类:
//实施事务管理的bean <bean id=”transactionManager” class=”org.springframwork.orm.hibernate3.HibernateTransactionManager”> <property name=”sessionFactory”> <ref bean=”sessionFactory” /> </property> </bean> //实施事务管理的bean <bean id=”transactionManager” class=”org.springframwork.orm.hibernate3.HibernateTransactionManager”> <property name=”sessionFactory”> <ref bean=”sessionFactory” /> </property> </bean>
它是通过sessionFactory来管理,因此在传进来一个sessionFactory来接管事务处理。
2、 声明式事务处理:
在spring中对事务进行管理时,可以显示地进行事务处理的定义:
//给事务添加的属性
<tx:advice id=”txAdvice” transaction-manager=”transactionManager”> <tx:attributes >
//propagation表示的是事务的传播特性,使用required时,是当检测到add开头的方法时,就看此时有没有开启的事务,如果有则将方法放进事务中去,如果没有,则新建一个事务。然后将方法放进去。
<tx:method name=”add*” propagation=”REQUIRED”> <tx:method name=”delete*” propagation=”REQUIRED”> <tx:method name=”update*” propagation=”REQUIRED”>
//如果检测到其它的方法,则给其只读数据库的属性。即当本方法在读时,其它的方法不能再去写了。保证一个事务的完整性。
<tx:method name=”*” read-only=”true”> </tx:attributes> </tx:advice> //给事务添加的属性 <tx:advice id=”txAdvice” transaction-manager=”transactionManager”> <tx:attributes >
//propagation表示的是事务的传播特性,使用required时,是当检测到add开头的方法时,就看此时有没有开启的事务,如果有则将方法放进事务中去,如果没有,则新建一个事务。然后将方法放进去。
<tx:method name=”add*” propagation=”REQUIRED”> <tx:method name=”delete*” propagation=”REQUIRED”> <tx:method name=”update*” propagation=”REQUIRED”>
//如果检测到其它的方法,则给其只读数据库的属性。即当本方法在读时,其它的方法不能再去写了。保证一个事务的完整性。
<tx:method name=”*” read-only=”true”> </tx:attributes> </tx:advice>
对于事务的其它传播属性,则可以参考其它文档进行相关的了解。
上一个配置是针对于所有包中类的事务处理方法的设置。下面一段是<aop:config/> 的定义,它确保由 ‘txAdvice’ bean定义的事务通知在应用中合适的点被执行。首先我们定义了 一个切面,它匹配 HibernateDAO 接口定义的所有操作,我们把该切面叫做 ‘allManagerMethod’。然后我们用一个通知器(advisor)把这个切面与 ‘txAdvice’ 绑定在一起,表示当 ‘allManagerMethod’ 执行时,’txAdvice’ 定义的通知事务逻辑将被执行。这就是AOP切面工程:
<aop:config> <aop:pointcut id=”allManagerMethod” expression=”execution(* com.hejianjiao.hibernate.HibernateDAO.*(..))”/>
//调用上面配置的事务属性,可以将它给本aop pointcut。
<aop:advisor advice-ref=”txAdvice” pointcut-ref=”allManagerMethod”/>
//如果还有其它的定义,则可以再加上pointcut、advisor来定义本切面点的事务逻辑。
</aop:config>
<aop:config>
<aop:pointcut id=”allManagerMethod”
expression=”execution(* com.hejianjiao.hibernate.HibernateDAO.*(..))”/>
//调用上面配置的事务属性,可以将它给本aop pointcut。
<aop:advisor advice-ref=”txAdvice” pointcut-ref=”allManagerMethod”/>
//如果还有其它的定义,则可以再加上pointcut、advisor来定义本切面点的事务逻辑。
</aop:config>//expression中的内容是要执行本切面的一个接口,中的所有方法:如:一个接口中定义了操作数据的方 法:com.hejianjiao.hibernate.HibernateDAO,则下面execution括号中的内容就为:* com.hejianjiao.hibernate.HibernateDAO.*(..)。而如果在com.hejianjiao.hibernate 包中还有其它的类也有操作方法,我们要一起定义的话,就可以写为:* com.hejianjiao.*.*(..),其中(..)表示的是方法,前面的第一个*是操作的接口或者类。
上面的配置将为由 ‘HibernateDAO’ 定义的bean创建一个代理对象,这个代理对象被装配了事务通知,所以当它的相应方法被调用时,一个事务将被启动、挂起、被标记为只读,或者其它(根据该方法所配置的事务语义)。
发表评论
-
解决HIbernate3运行出现No CurrentSessionContext configured!错误
2010-05-06 12:20 955解决HIbernate3运行出现No CurrentSessi ... -
Hibernate 参数设置一览表(强烈推荐)
2009-10-15 10:54 782Hibernate 参数设置一览表 属性名 用途 hi ... -
struts2笔记
2009-07-14 14:34 1995struts2的优点: 1.基于Action的框架 2.拥有由 ... -
log4j.properities的配置
2009-07-01 19:56 932log4j.properities的配置: #设置根记录器的 ... -
hibernate
2009-06-27 09:38 765Data Accessor Object(DAO)= Data ... -
struts2.1.6 s:datetimepicker标签不能使用的问题解决
2009-06-12 10:49 2074在以前的struts2版本中s:datetimepicker只 ...
相关推荐
这个整合项目中的文档,如"Spring2.5+Hibernate3.2+Struts2.0+jotm2.0集成配置.doc"、"spring 2.0 + hibernate3.2 + struts 2.0 开放配置.pdf"和"Spring2.5.3+Hibernate3.2+Struts2.0.11整合.pdf"应该详细介绍了这些...
"spring3+hibernate4+struts2+maven全注解整合"的主题意味着将这四个组件通过注解的方式进行集成,以构建一个高效且易于维护的Web应用。 Spring是企业级Java应用程序的核心框架,它提供了依赖注入(DI)和面向切面...
标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...
12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...
根据标题、描述和部分内容,知识点覆盖范围主要集中在Java Web开发领域,并且包括了JSP、Servlet、Ajax以及SSH框架(Struts 2、Spring、Hibernate)的技术整合和实战案例分析。 JSP(Java Server Pages)是一种动态...
这是spring、struts2、hibernate三大框架的整合过程详细文档,有兴趣的可以看看,spring structs2
通过SSH(Struts、Spring、Hibernate)的整合,可以构建出一个完整的MVC架构,使得业务逻辑、控制逻辑和视图分离,每个部分都可以独立开发和测试。而MySQL作为后端数据库,为数据存储提供了可靠的保障。这种技术组合...
具体包括但不限于Struts 2 + Spring框架的整合、Ant和XDoclet的使用、Struts 2 + Spring 2.5 + Hibernate 3.3的联合使用等。此外,还包括了一些特定主题的讲解,如模型映射、业务逻辑设计、异常处理、线程管理等内容...
在“Struts2+Spring+Hibernate3.2+整合文档及事例程序.zip”这个压缩包中,包含了这些框架的集成教程和示例代码,旨在帮助开发者理解并熟练掌握SSH框架的联合使用。 首先,我们来看“properties文件即i18n国际化...
1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...
整合过程包括配置各个框架的XML配置文件,如Struts的struts.xml、Spring的applicationContext.xml和Hibernate的hibernate.cfg.xml,以及创建对应的Action、Service、DAO层。 整合SSH的优点在于: 1. **模块化**:...
Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们各自负责Web应用程序的不同方面。Struts 是一个用于构建 MVC(模型-视图-控制器)架构的框架,Spring 提供了一个全面的依赖注入(DI)和面向...
Struts2+Spring+Hibernate+EasyUI 是一个经典的Java Web开发框架组合,广泛应用于企业级应用的构建。这个管理系统利用这些技术的特性,提供了一种高效、稳定且易于维护的解决方案。 **Struts2** 是一个强大的MVC...
在"Struts2+Spring+Hibernate"的整合中,Spring作为核心容器,负责管理所有组件,包括Struts2的Action和Hibernate的SessionFactory。通过Spring的AOP,可以实现事务的统一管理。而Struts2作为前端控制器,处理HTTP...
12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...
这是一个基于Java技术栈,采用Spring、Struts、Hibernate、jbpm和DWR等多种框架整合开发的OA(Office Automation)办公系统源码项目。这个系统的构建旨在实现企业的日常办公自动化,提高工作效率,简化工作流程,...
此例子包括struts2国际化、struts2验证、struts2拦截器、struts2整合spring、struts2+spring+hibernate整合而完成的登录例子。 下载后请先看readme文档。
Struts、Spring和Hibernate是Java开发中非常流行的三大框架,它们各自解决不同的问题,并通过合理的整合,能够构建出高效、可维护的企业级Web应用。现在,我们来详细讲解这三个框架的核心概念、工作原理以及整合方式...
【标题】:“全套源码-论坛系统(Struts 2+Hibernate+Spring实现)”揭示了一个基于Java技术栈开发的论坛系统,它整合了三个重要的框架:Struts 2、Hibernate和Spring。这个项目旨在提供一个完整的解决方案,帮助...