收藏 分享(赏)

集成Spring、hibernate、struts框架开发轻量级J2EE应用.ppt

上传人:暖洋洋 文档编号:1636202 上传时间:2018-08-14 格式:PPT 页数:53 大小:3.39MB
下载 相关 举报
集成Spring、hibernate、struts框架开发轻量级J2EE应用.ppt_第1页
第1页 / 共53页
集成Spring、hibernate、struts框架开发轻量级J2EE应用.ppt_第2页
第2页 / 共53页
集成Spring、hibernate、struts框架开发轻量级J2EE应用.ppt_第3页
第3页 / 共53页
集成Spring、hibernate、struts框架开发轻量级J2EE应用.ppt_第4页
第4页 / 共53页
集成Spring、hibernate、struts框架开发轻量级J2EE应用.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、构架强壮的J2EE应用 - 集成Spring、hibernate、struts框架开发轻量级J2EE应用,目录,升级Struts,实时获取配置信息的更新;,加入Hibernate,实现数据持久化;,应用Spring,让J2EE应用变得更强壮。,实时更新ActionBean;,Struts应用开发,Struts应用开发Struts是什么?,Web应用与MVC Struts是什么? 一个开源的MVC框架 一组JSP标签库 Struts版本 Struts 1 Struts 2 www.apache.org提供升级支持,Struts应用开发-MVC In Struts,Http Request,Htt

2、p Response,Controller,View,ActionServlet,ActionForm Bean,JSP Taglibs,JSP,Action Class,1、request,3、forward,2、fill with Request data,4、fill with business data,5、forward,7、get business data,6、use,8、response,Model,Struts应用开发解读Struts下载包,Struts应用开发Struts组件,Components 1、Struts Apps Blank、Cookbook、Examples、

3、MailReader、EL Example、Faces Example 1、Scripting MailReader等 2、Struts EL expression language 3、Struts Extras several popular but non-essential classes like ValidatorActionForm 4、Struts Faces supports the use of JavaServer Faces in Struts 5、Struts Scripting allows Struts Actions to be written in the s

4、cripting language(Bean Scripting Framework ) 6、Struts Taglib 7、Struts Tiles templating system,Struts应用开发Struts应用开发环境,开发环境: Windows XPEclipse3.2 + WTP1.5.2Struts 1.3.5Oracle9iEasyStruts(可选),Struts应用开发配置Struts应用,配置Struts应用步骤: 1、创建Web应用目录 2、将Struts应用所需的lib拷贝到WEB-INFlib目录下所需的lib均存在于struts-1.3.5lib目录中 3、

5、在WEB-INF目录中增加新的配置文件struts-config.xml、validation.xml 4、配置ActionServlet修改web.xml,增加ActionServlet “action”的配置内容,Struts应用开发开发Struts应用的关键步骤(1),演示实例说明: 用户注册 开发步骤: 1、开发Model - UserFormBean继承org.apache.struts.action.ActionForm 2、开发View - *.jsp引入标签库编写标签和FormnBean交互 注 name命名规范、和FormBean属性的一致性 ,Struts应用开发开发Str

6、uts应用的关键步骤(2),3、开发ActionBean - UserActionA. 继承org.apache.struts.action.ActionB. 提供public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception; 的实现C. 和FormBean进行交互UserFormBean userForm = (UserFormBean) form;D. 和JSP进行交互

7、request.setAttribute(“hello“, “Hello,这是从Controller传递过来的信息“);E. 实现导航farward = mapping.findForward(“success”); 4、配置FormBean ,Struts应用开发开发Struts应用的关键步骤(3),5、配置ActionBean A. Action Bean配置B. 导航规则,Struts应用开发浏览和演示用户注册实例,演示内容: 1、浏览Struts应用开发环境 2、浏览Struts配置内容 3、浏览用户注册实例开发内容FormBean、registerUserInput.jsp、succ

8、ess.jsp、failure.jsp、ActionBean、struts-config.xml 4、演示用户注册实例,目录,升级Struts,实时获取配置信息的更新;,加入Hibernate,实现数据持久化;,应用Spring,让J2EE应用变得更强壮。,实时更新ActionBean;,Struts应用开发,Struts升级实时获取配置信息问题描述,在应用开发、调试过程中,随着开发进程的向前推进,需要在配置文件( struts-config.xml )中不停的增加 FormBean 、 ActionBean 的配置信息,然而每一次修改之后, Struts 框架不能及时地获取增加的信息,除非重

9、新起动这个 Web 应用。,Struts升级实时获取配置信息问题分析,1、原理避免性能方面的问题采取的策略引发了问题 2、具体原因 I/O 操作是一种非常耗时的操作; 配置信息保存在XML中; 所有的配置信息在 Web 应用启动的时候一次性的读入 ; 新增加的配置信息无法识别,Struts升级实时获取配置信息解决方案,调整配置信息获取策略: 1、首选策略仍然是Struts提供的配置信息获取策略(一次性读取,保存在Java对象中); 2、在首选策略没有成功的情况下,从struts-config.xml中查找符合要求的配置信息,并且同时保存在首选策略中(在保存配置信息的Java对象中增加必要的内容

10、,包括相应的FormBean和ActionBean);,Struts升级实时获取配置信息具体实现,获取配置信息的代码是org.apache.struts.taglib.html.FormTag的lookup方法中。mapping = (ActionMapping) moduleConfig.findActionConfig(mappingName); 修改后的获取配置信息的代码段如下:actionMapping = (ActionMapping) moduleConfig.findActionConfig(mappingName); / 如果 Java 对象中没有对应的配置信息,访问配置文件,

11、查找是否有应用启动 / 后新加入的配置信息 if (mapping = null) / 获取配置文件中的实际路径 String configFilePath = pageContext.getServletContext().getRealPath(“/”) + “/WEB-INF/struts-config.xml”; / 使用辅助类访问配置文件获取对应的 ActionBean 的配置信息 actionMapping = ActionFactory.getActionConfig(mappingName, configFilePath); / 使用辅助类访问配置文件获取该 ActionBea

12、n 对应的 FormBean 的配置信息 FormBeanConfig formBeanConfig = ActionFactory.getFormBeanConfig( actionMapping, configFilePath); / 将符合要求的 ActionBean 配置信息保存到 Java 对象中 If (actionMapping!= null) moduleConfig.addActionConfig(actionMapping); / 将符合要求的 FormBean 配置信息保存到 Java 对象中 If (formBeanConfig!= null) moduleConfig

13、.addFormBeanConfig(formBeanConfig); ,Struts升级实时获取配置信息其他,1、上面的解决方案均针对开发环境适用,运行环境下从性能考虑还是使用Struts默认的策略比较好; 2、上面的解决方案仅针对FormBean、ActionBean的配置信息获取,其他的如Forward的并没有考虑在内; 3、上面的解决方案仅针对单配置文件(Struts-config.xml)的情况,现在Struts允许使用多个配置文件,因此还需要在此基础上进行功能扩展,满足更高的要求。,目录,升级Struts,实时获取配置信息的更新;,加入Hibernate,实现数据持久化;,应用Sp

14、ring,让J2EE应用变得更强壮。,实时更新ActionBean;,Struts应用开发,Struts升级实时更新ActionBean问题描述,基于Sturts的应用开发、调试过程中, ActionBean 经常需要修改,然而每一次修改之后, ActionBean 就无法正常调用,需要重新起动这个 Web 应用才能够生效。,Struts升级实时更新ActionBean问题分析,1、原理Struts中使用Servlet Context来缓存RequestProcessor对象 2、具体原因 RequestProcessor对象保存在Servlet Context中; 修改Action后,Act

15、ionServlet被重新load,Servlet Context被更新; RequestProcessor对象无法正常获取。,Struts升级实时更新ActionBean解决方案,将RequestProcessor对象的保存环境由Servlet Context环境切换到新创建某个对象的static变量中,当ActionServlet 被重新时,ProcessorFactory 对象的static变量不会发生变化。,Struts升级实时更新ActionBean实现(1),新创建ProcessorFactory 对象,用它的static属性proccessors保存RequestProcesso

16、r对象: public class ProcessorFactory public static HashMap processors = new HashMap(); public static void addProcessor(String key, RequestProcessor processor) processors.put(key, processor); public static Object getProcessor(String key) return processors.get(key); ,Struts升级实时更新ActionBean实现(2),ActionSe

17、rvlet中的修改: 1、getProcessorForModule 方法private RequestProcessor getProcessorForModule(ModuleConfig config) String key = Globals.REQUEST_PROCESSOR_KEY + config.getPrefix(); RequestProcessor processor = null; / 通过 ProcessorFactory 提供的接口获取符合条件的 RequestProcessor 对象 processor = (RequestProcessor) Processor

18、Factory.getProcessor(key); return processor; 2、getRequestProcessor 方法protected synchronized RequestProcessor getRequestProcessor(ModuleConfig config) throws ServletException / 其他代码processor.init(this, config); String key = Globals.REQUEST_PROCESSOR_KEY + config.getPrefix(); / 调用 ProcessorFactory 类的

19、addProcessor 方法将生成的RequestProcessor 对象保存到 static 变量中 ProcessorFactory.addProcessor(key, processor); 。 ,Struts升级实时更新ActionBean其他,1、上面的解决方案均针对开发环境适用,运行环境下无需进行调整;,目录,升级Struts,实时获取配置信息的更新;,加入Hibernate,实现数据持久化;,应用Spring,让J2EE应用变得更强壮。,实时更新ActionBean;,Struts应用开发,Hibernate应用开发Hibernate是什么?,1、对象持久化与ORMJDBC、O

20、RM、JDO、EJB2、EJB3 2、Hibernate是什么?A. 一个开源ORM框架;a) 基本对象;b) 对象继承;c) 对象关系:一对多、多对多、多对一等;B. HQL(Hibernate Query Language);C. 一套辅助工具a) Schema 生成器: 从hbm.xml DDL;b) 代码生成:从hbm.xml Java;c) 映射文件生成器:从Java hbm.xml。 3、Hibernate 2 和 3 4、JBoss.org提供升级支持,Hibernate应用开发Hibernate架构,总体架构,轻量体系运行架构,全面体系运行架构,Hibernate应用开发解读H

21、ibernate下载包,Hibernate应用开发在Struts应用中配置Hibernate,1、拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下; 所有的支持包在hibernate-2.1lib目录下 Hibernate应用包指hibernate-2.1目录下的hibernate2.jar 从其他渠道获取访问数据库所需的JDBC驱动包 2、创建Hibernate配置文件 在WEB-INFclasses目录下创建hibernate.cfg.xml,Hibernate应用开发step by step(1),1、创建数据表 REGISTEDUSERSCREAT

22、E TABLE REGISTEDUSERS (USERID NUMBER NOT NULL,LOGINNAME VARCHAR2(200) NOT NULL,PASSWORD1 VARCHAR2(100) NOT NULL );ALTER TABLE REGISTEDUSERS ADD (PRIMARY KEY(USERID);,Hibernate应用开发step by step(2),2、创建持久化类 User package com.primeton.hibernatedemo; public class User private int userId;private String log

23、inName;private String password; / 对应getter 和 setter方法 ,Hibernate应用开发step by step(3),3、创建配置文件 - User.hbm.xmlREGUSTEDUSERS_SEQ,Hibernate应用开发step by step(4),3、在Hibernate配置文件中增加映射内容4、编写DAO接口和实现,UserDAO,insertUser(User user) : void,UserDAOHibernateImpl,insertUser(User user) : void,public class UserDAOHib

24、ernateImpl implements UserDAO public void insertUser(User user) throws Exception SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session s = sessionFactory.openSession();Transaction tx = session.beginTransaction(); session.save(user);mit();s.close(); ,Hibernate应

25、用开发step by step(5),5、在Struts的ActionBean中访问DAO接口 User newUser = createUser(userForm); UserDAO dao = new UserDAOHibernateImpl(); try dao.insertUser(newUser);forward = mapping.findForward(“success“); catch (Exception e) forward = mapping.findForward(“failure“);throw e; ,Hibernate应用开发浏览和演示用户注册实例,演示内容: 1

26、、浏览Hibernate应用开发环境 2、浏览Hibernate配置内容 3、浏览用户注册实例开发内容为Struts应用中”用户注册”功能增加持久化功能。 4、演示用户注册实例,目录,升级Struts,实时获取配置信息的更新;,加入Hibernate,实现数据持久化;,应用Spring,让J2EE应用变得更强壮。,实时更新ActionBean;,Struts应用开发,Spring应用开发Spring是什么?,1、Spring是一个轻量级J2EE应用开发框架带的包装器使许多不同的服务和框架更易于使用,而且能够接受任何JavaBean 2、组成部分 Core(IoC Container); AOP

27、(Spring AOP,AspectJ Integration); DAO(JDBC Transaction Management); Web MVC(Spring Web MVC、Struts、WebWork等) ORM(Hibernate、JPA、JDO等); JavaEE(EJB、JMS、JCA等); Spring Web,Spring应用开发解读Spring下载包,Spring应用开发Spring使用场景(1),完整的Spring应用,Spring应用开发Spring使用场景(2),集成Struts和Hibernate后的Spring,Spring应用开发集成Struts(1),三种选

28、择: 1、使用 Spring 的 ActionSupport 原理:继承ActionSupport,使用 getWebApplicationContext访问Spring环境 实现: public class UserAction extends ActionSupportApplicationContext ctx = getWebApplicationContext(); BookService bookService = (BookService) ctx.getBean(“bookService“); ,Spring应用开发集成Struts(2),2、覆盖 RequestProcess

29、or原理:使用org.springframework.web.struts.DelegatingRequestProcessor 类来覆盖 Struts 的RequestProcessor 处理程序 实现: A. 在struts-config.xml文件中增加B. 在spring配置文件applicationContext.xml中注册Action声明(可以为Action注入属性)C. 在Action中增加属性public class UserActio extends Action private BookService bookService;/ 其他方法,Spring应用开发集成Stru

30、ts(3),3、将动作管理委托给 Spring原理:在 struts-config 动作映射中注册一个代理 实现: A. 修改struts-config.xml中Action声明的type属性B. struts-config.xml中增加spring的ContextLoaderPlugIn插件设置C. 在spring配置文件applicationContext.xml中注册Action声明(可以为Action注入属性)D. 在Action中增加属性public class UserActio extends Action private BookService bookService;/ 其他

31、方法,Spring应用开发集成Hibernate(1),1、在application context中创建 SessionFactory oracle.jdbc.driver.OracleDriverjdbc:oracle:thin:localhost:1521:orcl8eoseoscom/primeton/hibernatedemo/User.hbm.xmlnet.sf.hibernate.dialect.Oracle9Dialecttrue ,Spring应用开发集成Hibernate(2),2、在application context中声明事务处理,Spring应用开发集成Hibern

32、ate(3),3、实现DAO,public class UserDAOHibernateImpl extends HibernateDaoSupportimplements UserDAO public void insertUser(User user) throws Exception getHibernateTemplate().save(user); ,A. 修改UserDAO的实现类,B. application context中创建 DAO,Spring应用开发集成Hibernate(4),4、 为DAO对象应用事务,PROPAGATION_REQUIRED,application

33、Context.xml增加的内容,Spring应用开发集成Hibernate(5),5、 application context中创建Struts Action中使用的DAO对象,private UserDAO userDao;public void setUserDao(UserDAO userDao) this.userDao = userDao; public UserDAO getUserDao() return userDao; ,Action中增加如下内容,applicationContext.xml增加的内容,Spring应用开发集成Hibernate(6),6、在WEB应用中的实例化ApplicationContext,contextConfigLocation/WEB-INF/applicationContext.xmlorg.springframework.web.context.ContextLoaderListener,在Web.xml文件中增加如下内容,Spring应用开发浏览和演示用户注册实例,演示内容: 1、浏览Spring应用开发环境 2、浏览Spring和Struts集成配置内容 3、浏览Spring和Hibernate集成配置内容 4、演示用户注册实例,Q&A,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报