您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 集成Spring、hibernate、struts框架开发轻量级J2EE应用
构架强壮的J2EE应用--集成Spring、hibernate、struts框架开发轻量级J2EE应用2006年12月6日肖菁xiaojing@primeton.com目录升级Struts实时获取配置信息的更新;加入Hibernate,实现数据持久化;应用Spring,让J2EE应用变得更强壮。实时更新ActionBean;Struts应用开发Struts应用开发—Struts是什么?•Web应用与MVC•Struts是什么?–一个开源的MVC框架–一组JSP标签库•Struts版本–Struts1–Struts2•、request3、forward2、fillwithRequestdata4、fillwithbusinessdata5、forward7、getbusinessdata6、use8、responseModelStruts应用开发—解读Struts下载包Struts应用开发—Struts组件•Components1、StrutsAppsBlank、Cookbook、Examples、MailReader、ELExample、FacesExample1、ScriptingMailReader等2、StrutsELexpressionlanguage3、StrutsExtrasseveralpopularbutnon-essentialclasseslikeValidatorActionForm4、StrutsFacessupportstheuseofJavaServerFacesinStruts5、StrutsScriptingallowsStrutsActionstobewritteninthescriptinglanguage(BeanScriptingFramework)6、StrutsTaglib7、StrutsTilestemplatingsystemStruts应用开发—Struts应用开发环境开发环境:WindowsXPEclipse3.2+WTP1.5.2Struts1.3.5Oracle9iEasyStruts(可选)Struts应用开发—配置Struts应用配置Struts应用步骤:1、创建Web应用目录2、将Struts应用所需的lib拷贝到WEB-INF\lib目录下所需的lib均存在于struts-1.3.5\lib目录中3、在WEB-INF目录中增加新的配置文件struts-config.xml、validation.xml4、配置ActionServlet修改web.xml,增加ActionServlet“action”的配置内容Struts应用开发—开发Struts应用的关键步骤(1)演示实例说明:用户注册开发步骤:1、开发Model--UserFormBean继承org.apache.struts.action.ActionForm2、开发View--*.jsp引入标签库%@tagliburi==bean%%@tagliburi==html%%@tagliburi==logic%%@tagliburi==nest%编写标签和FormnBean交互[注]name命名规范、和FormBean属性的一致性html:texttype=textname=loginName/Struts应用开发—开发Struts应用的关键步骤(2)3、开发ActionBean--UserActionA.继承org.apache.struts.action.ActionB.提供publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException;的实现C.和FormBean进行交互UserFormBeanuserForm=(UserFormBean)form;D.和JSP进行交互request.setAttribute(hello,Hello,这是从Controller传递过来的信息);E.实现导航farward=mapping.findForward(“success”);4、配置FormBeanform-beanname=registedUserFormtype=com.primeton.strutsdemo.UserFormBean/Struts应用开发—开发Struts应用的关键步骤(3)5、配置ActionBeanA.ActionBean配置actionpath=/userRegistertype=com.primeton.strutsdemo.UserActionname=registedUserFormscope=request“validate=false/actionB.导航规则action…forwardname=successpath=/success.jsp/forwardname=failurepath=/failure.jsp//actionStruts应用开发—浏览和演示用户注册实例演示内容:1、浏览Struts应用开发环境2、浏览Struts配置内容3、浏览用户注册实例开发内容FormBean、registerUserInput.jsp、success.jsp、failure.jsp、ActionBean、struts-config.xml4、演示用户注册实例目录升级Struts实时获取配置信息的更新;加入Hibernate,实现数据持久化;应用Spring,让J2EE应用变得更强壮。实时更新ActionBean;Struts应用开发Struts升级—实时获取配置信息—问题描述在应用开发、调试过程中,随着开发进程的向前推进,需要在配置文件(struts-config.xml)中不停的增加FormBean、ActionBean的配置信息,然而每一次修改之后,Struts框架不能及时地获取增加的信息,除非重新起动这个Web应用。Struts升级—实时获取配置信息—问题分析1、原理避免性能方面的问题采取的策略引发了问题2、具体原因–I/O操作是一种非常耗时的操作;–配置信息保存在XML中;–所有的配置信息在Web应用启动的时候一次性的读入;–新增加的配置信息无法识别Struts升级—实时获取配置信息—解决方案调整配置信息获取策略:1、首选策略仍然是Struts提供的配置信息获取策略(一次性读取,保存在Java对象中);2、在首选策略没有成功的情况下,从struts-config.xml中查找符合要求的配置信息,并且同时保存在首选策略中(在保存配置信息的Java对象中增加必要的内容,包括相应的FormBean和ActionBean);Struts升级—实时获取配置信息—具体实现获取配置信息的代码是org.apache.struts.taglib.html.FormTag的lookup方法中。mapping=(ActionMapping)moduleConfig.findActionConfig(mappingName);修改后的获取配置信息的代码段如下:actionMapping=(ActionMapping)moduleConfig.findActionConfig(mappingName);//如果Java对象中没有对应的配置信息,访问配置文件,查找是否有应用启动//后新加入的配置信息if(mapping==null){//获取配置文件中的实际路径StringconfigFilePath=pageContext.getServletContext().getRealPath(“/”)+“/WEB-INF/struts-config.xml”;//使用辅助类访问配置文件获取对应的ActionBean的配置信息actionMapping=ActionFactory.getActionConfig(mappingName,configFilePath);//使用辅助类访问配置文件获取该ActionBean对应的FormBean的配置信息FormBeanConfigformBeanConfig=ActionFactory.getFormBeanConfig(actionMapping,configFilePath);//将符合要求的ActionBean配置信息保存到Java对象中If(actionMapping!=null)moduleConfig.addActionConfig(actionMapping);//将符合要求的FormBean配置信息保存到Java对象中If(formBeanConfig!=null)moduleConfig.addFormBeanConfig(formBeanConfig);}Struts升级—实时获取配置信息—其他1、上面的解决方案均针对开发环境适用,运行环境下从性能考虑还是使用Struts默认的策略比较好;2、上面的解决方案仅针对FormBean、ActionBean的配置信息获取,其他的如Forward的并没有考虑在内;3、上面的解决方案仅针对单配置文件(Struts-config.xml)的情况,现在Struts允许使用多个配置文件,因此还需要在此基础上进行功能扩展,满足更高的要求。目录升级Struts实时获取配置信息的更新;加入Hibernate,实现数据持久化;应用Spring,让J2EE应用变得更强壮。实时更新ActionBean;Struts应用开发Struts升级—实时更新ActionBean—问题描述基于Sturts的应用开发、调试过程中,ActionBean经常需要修改,然而每一次修改之后,ActionBean就无法正常调用,需要重新起动这个Web应用才能够生效。Struts升级—实时更新ActionBean—问题分析1、原理Struts中使用ServletContext来缓存RequestProcessor对象2、具体原因–RequestProcessor对象保存在ServletContext中;–修改Action后,ActionServlet被重新load,ServletContext被更新;–RequestProcessor对象无法正常获取。Struts升级—实时更新ActionBean—解决方案将RequestProcessor对象的保存环境由ServletContext环境切换到新创建某个对象的static变量中,当ActionServlet被重新时,ProcessorFactory对象的static变量不会发生变化。Struts升级—实时更新ActionBean—实现(1)新创建ProcessorFactory对象,用它的static属性proccessors保存RequestProcessor对象:publicclassProcessorFactory{publicstaticHashMapprocessors=newHashMap();publicstaticvoidaddProcessor(Stringkey,RequestProcessorprocessor){processors
本文标题:集成Spring、hibernate、struts框架开发轻量级J2EE应用
链接地址:https://www.777doc.com/doc-5195383 .html