spring2.5 学习笔记(9)

2019-08-29 23:15

spring2.5 学习笔记 第41页 共46页

第十一课:Spring整合-SSH

Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2

一、 第一步:加入jar包(需要的jar包列表)

jar包名称 antlr-2.7.6.jar aspectjrt aspectjweaver cglib-nodep-2.1_3.jar common-annotations.jar commons-collections-3.1.jar commons-fileupload-1.2.1.jar commons-io-1.3.2 commons-logging-1.1.1 dom4j-1.6.1.jar ejb3-persistence freemarker-2.3.13 hibernate3.jar hibernate-annotations hibernate-common-annotations javassist-3.9.0.GA.jar jta-1.1.jar junit4.5 mysql- ognl-2.6.11.jar slf4j-api-1.5.8.jar slf4j-nop-1.5.8.jar spring.jar struts2-core-2.1.6.jar xwork-2.1.2.jar commons-dbcp commons-pool.jar struts2-spring-plugin-2.1.6.jar 建议:

将这些所有的jar包保存到一个位置,使用的时候直接copy

所在位置 hibernate/lib/required spring/lib/aspectj .. spring/lib/cglib spring/lib/j2ee hibernate/lib/required struts/lib struts/lib 单独下载,删除1.0.4(struts/lib) hibernate/required hibernate-annotation/lib struts/lib hibernate hibernate-annotation/ hibernate-annotation/lib hiberante/lib/required .. struts/lib hibernate/lib/required hibernate/lib/required spring/dist struts/lib struts/lib spring/lib/jarkata-commons .. struts/lib 说明 解析HQL AOP AOP 代理,二进制增强 @Resource 集合框架 struts struts struts spring 解析xml @Entity struts hibernate hibernate transaction hibernate-log struts2 spring2.5 学习笔记 第42页 共46页

二、 第二步: 首先整合Spring + Hibernate

具体的方法,请见第十课

三、 第三步:再来整合Struts2

因为SSH时,是Struts2为主导,Struts2向Spring索要Action,Action是由Spring产生的。 因为Spring作为Struts2的一个插件加入到Struts2里的。

具体步骤: 1. 2. 3.

加入Struts2的配置文件:struts2.xml 修改web.xml加入 struts的filter struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* lter-class> 再加入spring的listener,这样的话,webapp一旦启动,spring容器就初始化了

因为webapp启动时Spring并不会自动启动,那当然就不能初始化bean了,因为需要在webapp启动就自动启动Spring容器,这样可以将bean交给Spring来管理。我们可以利用listener来完成

这就是需要使用Struts2 for spring的插件了,那当然就需要引入struts2 for spring plugin的jar包了

struts2-spring-plugin-2.1.8.1.jar

并加入Struts2-spring-plugin的配置文件,来告诉webapp启动来初始化spring容器

需要在web.xml加入监听器 am-value> org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath*:beans.xml

4. 5.

规划struts的action和jsp展现 建立好action和jsp spring2.5 学习笔记 第43页 共46页

修改配置,由spring替代struts产生Action对象 注意:现在SSH整合后,action将不再是Spring管理,而是Struts-spring-plugin来管理。或是说Struts2来管理了。 因此:Action上不需要注解任务的,Struts启动后,将Action其初始化后放心Struts2的一个容器里,而其它的还是Spring来管理。Struts2初始化时,会自动根据Action中的setXXX方法全部自动注入,注入的bean是从Spring容器中提取的。

在Action中不管你有没有注解,Struts2都会自动帮你注入,并且使用名称的方式注入,如果您想指定注入名称,则可以在成员属性前面进行注解。 而Action这个bean的ID就是在Struts2.xml的配置文件中配置Action的name属性值就是了。注意了。 Struts2:Action Spring管理:dao/servce 6. 修改action配置 注意了:Actionr配置的name不能与Action中的成员属性名称发生冲突,因为Struts2自动注入成员属性的bean,而且是根据name来注入的。 四、 struts的读常量: 1. 2. 3. 4. 5.

struts-default.xml struts-plugin.xml struts.xml struts.properties web.xml

第十二课:DTO、VO

一、 DTO

Data Transfer Object 负责运送数据的(传输数据)

二、 VO

Value Object 值对象

可用于,from里与数据库不一致时。就可以使用了。然后再构建实体类

注意:实体对象是反映到数据库中,而值对象只是在使用数据时才用到。

spring2.5 学习笔记 第44页 共46页

第十二课:SSH整合存在的问题

一、 Jsp中访问Session时,Session已经关闭

由于hibernate的load的方法是返回一个代理,而这个代理只有在实际使用时,才会发出SQL语句(才会访问数据库),当对象在JSP中使用时,load方法的事务已经关闭,也就是说session已经关闭,这时jsp才开始使用这个代理对象,才开始正直访问数据库发出SQL语句,发现session已经关闭,所以访问不了。

解决法办:就是让session在JSP使用后,才关闭,

具体:添加一个过滤器,在访问前经过过滤器,这时开启事务opsession。然后等方法结束时(JSP已经处理完数据了),还是要经过滤过器,才时我们才关闭session,这样就OK了。

Spring已经帮我处理好了:我们只需要配置这个过滤器就可以了,需要在web.xml中配置这个过滤器: org.springframework.orm.hibernate3.support.OpenSessionInViewFilter openSessionInView org.springframework.orm.hibernate3.support.OpenSessionInViewFilter openSessionInView /* 注意:这相filter必需放在Struts2的filter前面。否则出现问题。 在OpenSessionViewFilter在初始化时,需要提供一个SessionFactory的bean,默认是搜索bean名称为sessionFactory,如果你在配置sessionFactory不是这个名称,那么你需要在配置这个filter时,需要提供一个参数及值。如下: org.springframework.orm.hibernate3.support.OpenSessionInViewFilter sessionFactoryBeanName sf r-class> openSessionInView openSessionInView /* 这样在JSP中访问session就没有问题了。 二、 如果不配置事务,openSessionView出现异常

如果在web.xml文件中配置了。openSessionInView选项,而在beans.xml没有配置事务。这样在对数据库进行写操作时,会提示错误,原因:

因为:如果spring没有配置事务,则openSessionInview会默认设置,事务为只读事务。不能进行写操作。 配置事务了。openSessionInView认为是读写。

spring2.5 学习笔记 第45页 共46页

三、 中文乱码问题:

1、 如果是Struts2.1.6或是之前的,则使用Strunts2的i18n设置是无效,因为我们需要通过过虑器来进行,我们可以自己定义一个过虑器,但Spring已经帮我定义好了这个过虑器了。我们直接取来使用就可以了。

需要为这个filter的encoding属性指定一个参数值(就是中文编码) encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding GBK encodingFilter /* 注意:这个filter需要放在web.xml的Struts2的filter前面。但是与openSessionInView没有前后关系。

2、 如果是Struts2.1.8这个Bug已经修正,我们只需要在Struts.xml文件中配置一个属性就可以了:如下:

LazyInitializationException OpenSessionInViewFilter 需要严格顺序问题

需要加到struts2的filter前面 知识点名称 IOC XML IOC Annotation IOC 注入方式(两种) 简单属性 集合注入 自动装配 生命周期 AOP概念 AOP配置 事务管理AOP(xml annotation) hibernateTemplate 架构 OpenSessionInView CharacterEncodingFilter TestContext SpringJDBCTemplate 介绍 工作重要程度 *** *** *** * * * * * *** *** *** *** *** * 面试重要程度 * * * *** ** *** ** 方法建议 练 练 练+背 查 查 查 练+背 练+理解+说 用到现学


spring2.5 学习笔记(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:憨山老人年谱自叙实录文白对照

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: