《轻量级Java EE程序设计及实践》课件第9章 框架集成_第1页
《轻量级Java EE程序设计及实践》课件第9章 框架集成_第2页
《轻量级Java EE程序设计及实践》课件第9章 框架集成_第3页
《轻量级Java EE程序设计及实践》课件第9章 框架集成_第4页
《轻量级Java EE程序设计及实践》课件第9章 框架集成_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-1-掌握Struts2和Spring的集成原理掌握Struts2和Spring的集成步骤掌握Hibernate和Spring的集成原理掌握Hibernate和Spring的集成步骤掌握Struts2、Hibernate和Spring三者的集成方式目标-2-Spring集成Struts2Struts2与Spring的集成要用到Spring插件包struts2-spring-plugin-x-x-x.jar。Spring插件会覆盖Struts2的ObjectFactory接口,从而改变Struts2创建Action实例的方式。当创建一个Action实例的时候,该插件会用Struts2配置文件中对应Action的class属性去和Spring配置文件中Bean的id属性进行匹配,如果能找到,则使用Spring创建的对象;否则由Struts2框架自身创建,然后由Spring来装配。集成后,处理用户请求的Action并不是Struts2框架创建的,而是由Spring插件创建的。创建实例时,配置Action时指定的class属性值不再是类名,而是Spring配置文件中bean的id,Spring插件根据此id从Spring容器中获得相应的实例。-3-添加类库Struts2与Spring集成所需包-4-struts.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" "/dtds/struts-2.3.dtd"><struts> <packagename="reg"extends="struts-default"> <actionname="reg"class="reg"> <resultname="success">/pages/regsuccess.jsp</result> <resultname="input">/reg.jsp</result> </action> </package></struts>-5-applicationContext.xml省略

<!--Struts2Action配置--> <beanid="reg"class="com.dh.ch09.action.RegAction"

scope="prototype"/>省略-6-web.xml<!--用来定位Spring框架配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><!--配置Spring监听器--><listener> <listener-class> org.springframework.web.context.ContextLoaderListener</listener-class></listener><filter><display-name>struts2的配置</display-name><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>示例9.1-7-Spring集成HibernateSpring框架为集成各种ORM方案提供了全面的支持,其中针对Hibernate框架提供的支持主要体现在下述4个方面:使用Spring的配置文件来对Hibernate的SessionFactory进行配置使用Spring提供的HibernateTemplate类和HibernateDaoSupport类降低了单纯使用HibernateAPI的复杂程度,并简化了Dao类的编写使用Spring的声明性事务方便的配置Hibernate中的事务Spring提供了OpenSessionInViewFilter过滤器类,可以解决由于session关闭导致的延迟加载失败问题-8-配置SessionFactory<!--配置数据源--><beanid="dataSource"class="mons.dbcp.BasicDataSource" destroy-method="close"> <!--指定连接数据库的驱动--> <propertyname="driverClassName"value="com.mysql.jdbc.Driver"/> <!--指定连接数据库的URL--> <propertyname="url"value="jdbc:mysql://localhost:3306/test"/> <!--指定连接数据库的用户名--> <propertyname="username"value="root"/> <!--指定连接数据库的密码--> <propertyname="password"value="root"/>

其他属性</bean><!--配置SessionFactory--><beanid="sessionFactory“class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <propertyname="dataSource"ref="dataSource"/> <propertyname="hibernateProperties"> <props> <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <propkey="hibernate.show_sql">true</prop></props> </property> <propertyname="mappingResources"> <list><value>com/dh/ch09/pojo/User.hbm.xml</value></list> </property></bean>示例9.2-9-使用hibernateTemplateHibernateTemplate类为Hibernate应用提供了模板化的访问机制HibernateTemplate提供了多个方便的方法,可以省略获取Session对象、启动事务及提交和回滚事务等繁琐且重复的代码Objectexecute(HibernateCallbackcallback)ListexecuteFind(HibernateCallbackcallback)名称描述load()根据标识符属性值获取对应的持久化对象,如果未找到记录则抛出异常find()执行HQL语句获取持久化对象的集合get()根据标识符属性值获取对应的持久化对象,如果未找到记录则返回nulldelete()删除已经存在的持久化对象save()保存持久化对象对应的数据到数据库中saveOrUpdate()保存或更新持久化对象对应的数据到数据库中update()更新持久化对象对应的表中的数据refresh()刷新持久化对象persist()保存持久化对象到数据库中-10-使用HibernateDaoSupportpublicclassUserDaoImplextendsHibernateDaoSupportimplementsUserDao{publicvoidadd(Useruser){getHibernateTemplate().save(user);}publicList<User>findUsers(){//使用HibernateCallback回调接口,完成灵活的操作方式

List<User>list=(List<User>)getHibernateTemplate().execute(newHibernateCallback(){publicObjectdoInHibernate(Sessionsession)throwsHibernateException,SQLException{Queryquery=session.createQuery("fromUser");returnquery.list();}});returnlist;}}<beanid="userDao"class="com.dh.ch09.dao.UserDao"> <propertyname="sessionFactory"ref="sessionFactory"/></bean>示例9.3-11-事务处理<!--配置Hibernate的事务管理器--><beanid="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><propertyname="sessionFactory"ref="sessionFactory"/></bean><!--配置事务增强,指定事务管理器--><tx:adviceid="txAdvice"transaction-manager="txManager"><!--配置详细的事务定义--><tx:attributes><!--所有以get开头的方法时read-only的--><tx:methodname="get*"read-only="true"/><!--其他方法使用默认的事务设置--><tx:methodname="*"/></tx:attributes></tx:advice><aop:config><!--该切入点匹配com的子孙包中的service包中的以Service结尾的类中所有的方法--><aop:pointcut

expression="execution(*com..*.service.*Service.*(..))"id="allMethods"/><!--指定在allMethods切入点应用txAdvice切面--><aop:advisoradvice-ref="txAdvice"pointcut-ref="allMethods"/></aop:config>示例9.4-12-OpenSessioninView<!--配置OpenSessionInViewFilter--><filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class></filter><filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>*.action</url-pattern></filter-map

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论