《Webx及框架简介》PPT课件.ppt_第1页
《Webx及框架简介》PPT课件.ppt_第2页
《Webx及框架简介》PPT课件.ppt_第3页
《Webx及框架简介》PPT课件.ppt_第4页
《Webx及框架简介》PPT课件.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

Webx简介,第一课,WebX框架基础,WebXPackaging,Webx应用的打包方法,传统方式,Webx方式,War是WebApplicationArchive的缩写Car是ComponentArchive的缩写多个car可以组装成一个war,Car在开发中的应用,Car的目录结构和War基本相同,除了不需要文件:WEB-INF/web.xml不需要目录:WEB-INF/lib开发时,可以把car当作war来开发、调试部署时,可以把多个car组合成一个warWebX框架保证,无论下面哪种情况,对程序代码而言都是透明的:将car以war的形式单独运行或将多个car组合成一个war运行,Petstore.war的组成,home.carcssimagestemplatescontrollayoutscreenWEB-INFwebx.xmlclasses,user.carcssimagestemplatescontrollayoutscreenWEB-INFwebx.xmlclasses,Petstore.warhomecssimagestemplatescontrollayoutscreenusercssimagestemplatescontrollayoutscreenstoreadminWEB-INFhomewebx.xmluserwebx.xmlstoreadminlibclasses,WebX框架基础,URL的解析与生成,URL的解析,WebX的URL是怎样的呢?以下面的URL为例:http:/localhost:7001/petstore/user/account/edit.htmURLscheme(协议):http:Servername:localhostServerport:7001Contextpath:/petstoreComponentpath:/userServletpath:/account/edit.htmTarget:/account/edit.vm分析URL是由AnalyzeURLValve完成的(后面会讲到),因此以上URL分析的规则是完全可以被改变的。,URL的生成,和解析URL相反,我们还需要在页面上生成指向其它页面的URL。URL是由URIBrokerService来动态生成的。使用URIBrokerService有什么好处呢?集中管理全网站的URL均可在同一个配置文件中管理可靠动态生成,不容易出错规范例如在生成querystring时,会自动URLencoding透明应用程序、模板不需要知道最终生成的URL的样子,修改URL就变得很简单,URL配置文件举例,http:/toolkit.alibaba-,在模板中使用URIBroker的方法,$toolkitSite生成结果:http:/toolkit.alibaba-,在程序中使用URIBroker的方法,取得URIBrokerService:URIBrokerServiceuriBrokerService=(URIBrokerService)getWebxComponent().getService(URIBrokerService.SERVICE_NAME);取得指定名称的URIBroker:URIBrokeruriBroker=uriBrokerService.getURIBroker(petstoreLoginLink,rundata);渲染URL:Stringurl=uriBroker.render();,WebX框架基础,RunData,RunData的功能,封装了Request和Response对象保存requestscope的状态透明地处理常规表单和multipart/form-data格式的表单数据简化cookie的存取提供透明的buffering支持,RunData常用方法,取得HTTPrequest、response和sessionrundata.getRequest()rundata.getResponse()rundata.getSession()取得输出流(自动buffering)rundata.getResponse().getWriter()rundata.getResponse().getOutputStream()取得query参数(无论是一般form还是multipartform)rundata.getParameters().getString(id)rundata.getParameters().getInt(quantity)内部重定向rundata.setRedirectTarget(homepage.vm)外部重定向rundata.setRedirectLocation(,WebX框架基础,页面布局,Turbine风格的页面布局,Layout,Control,Control,Control,Screen,PetstoreSample,CopyrightNotice,NavigationMenu,MainContent,Turbine风格的目录结构,模板目录结构src/webroottemplatescontrolbottom.vmtabs.vmtop.vmtopNoLogo.vmlayoutdefault.vmscreenhomepage.vm,Java模块package结构src/javacomalibabasamplepetstorewebhomemodulescreenHomepage.javacontrolaction,开发turbine应用程序的基本单元是Module实际应用中,大部分的module都是TemplateModule。TemplateModule由两部分构成:模板和Java模块:,实际例子:Petstore登录页面,这个页面是怎么显示出来的呢?,实际例子:Petstore登录页面(过程),用户输入URL:http:/localhost:7001/petstore/user/login.htm分析URL取得target:/login.vm根据target查找screen模板:/screen/login.vm根据target查找screen模块的类:com.alibaba.sample.petstore.web.user.module.screen.Login(找不到该类)com.alibaba.sample.petstore.web.user.module.screen.Default(找不到该类)com.alibaba.turbine.module.screen.TemplateScreen(默认screen类)执行screen类,并渲染screen模板根据target查找layout模板:/layout/login.vm(找不到)/layout/default.vm(找到)渲染layout模板渲染在layout模板中引用的两个control:home:top.vm在home.car中查找/control/top.vmhome:bottom.vm在home.car中查找/control/bottom.vm,访问无模板的screen,假设有下面的URL(注意后缀):http:/localhost:7001/petstore/user/login.do那么WebX将不会查找login.vm这个模板,而是直接执行screen:com.alibaba.sample.petstore.web.user.module.screen.Login什么时候要使用这种URL呢?不使用模板的情形模板只是一种文本生成技术,除此之外,还有其它技术。在某些情形下,使用模板不一定是最好的方法。不需要返回可见的页面的情形例如一个被机器回调的URL。重定向到另一个页面的情形有时一个页面自身不显示内容,而是重定向(内部/外部)到另一个页面。例如:支付宝的商家工具。,WebX框架基础,页面驱动,页面驱动,什么是页面驱动?以页面(view)为主导先写页面,再写和页面配套的程序模块通过规则,查找页面所对应的程序模块页面驱动的好处?符合WEB项目开发的流程:在产品设计阶段就可以做出页面在开发阶段对页面进行细化。页面驱动的动力PullTools,PullTools,看看petstore中的一个页面模板:想想看:以上这些“红色”的变量是哪来的?,#set($group=$form.login.defaultInstance),WebX框架基础,TurbineModules,TurbineModules,Modules是基本编程模块:Screen用来处理页面显示逻辑的moduleControl和screen类似,但可以被别的screen或layout引用,甚至可以跨越car应用Action处理用户提交表单的module所有module都实现Module接口:publicinterfaceModulevoidexecute(RunDatarundata)throwsWebxException;,ScreenModule的写法,Screen的功能就是显示一个页面,最简单的screen可以这样写:publicclassSimpleScreenextendsAbstractModulepublicvoidexecute(RunDatarundata)throwsWebxExceptionPrintWriterout=rundata.getResponse().getWriter();out.println(hello,world);但这种写法并不常用,99%的screen使用了模板技术:publicclassMyTemplateScreenextendsTemplateScreenprotectedvoidexecute(RunDatarundata,TemplateContextcontext)throwsWebxExceptioncontext.put(hello,world);模板文件myTemplateScreen.vm可以这样写:Hello,$hello显示结果:hello,world,ControlModule的写法,Control和screen的写法完全类似:publicclassSimpleControlextendsAbstractModulepublicvoidexecute(RunDatarundata)throwsWebxExceptionPrintWriterout=rundata.getResponse().getWriter();out.println(hello,world);支持模板技术的control从TemplateControl类派生publicclassMyTemplateControlextendsTemplateControlprotectedvoidexecute(RunDatarundata,TemplateContextcontext)throwsWebxExceptioncontext.put(hello,world);模板文件myTemplateControl.vm可以这样写:Hello,$hello显示结果:hello,world,ActionModule的写法,Action是用来处理用户提交的表单的(以petstore用户登录为例)程序这样写:publicclassLoginActionextendsTemplateActionpublicvoiddoLogin(RunDatarundata,Tem

温馨提示

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

评论

0/150

提交评论