




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
WebWork培訓(xùn)作者:moxie(安子)學(xué)員要求:掌握J(rèn)ava、Jsp、JavaServlet,并有一定的Web編程經(jīng)驗(yàn)課程目的:理解WebWork的核心原理,掌握WebWork開發(fā)的相關(guān)知識(shí),并能使用WebWork進(jìn)行實(shí)際開發(fā)1webwork培訓(xùn)目錄WebWork入門WebWork原理WebWork標(biāo)簽庫(kù)和ELWebWork實(shí)例2webwork培訓(xùn)WebWork原理MVC模式MVC最初是在Smalltalk-80中被用來(lái)構(gòu)建用戶界面Model實(shí)現(xiàn)了應(yīng)用領(lǐng)域的業(yè)務(wù)模型View用來(lái)展現(xiàn)模型中的數(shù)據(jù)和內(nèi)部狀態(tài)Control也稱為Dialog,它協(xié)調(diào)Model與View,把用戶請(qǐng)求翻譯成系統(tǒng)識(shí)別的事件3webwork培訓(xùn)J2eeWebFramework之現(xiàn)狀WebWork:最靈活、簡(jiǎn)單的Web框架SpringWebFramework:最全面的Web框架Struts:資源最豐富的Web框架Tapestry:組件化最完美的Web框架JSF:最接近的Web框架Portal:最適合集成的Web框架4webwork培訓(xùn)WebWork概述XWork1WebWork1WebWork2
Web
Non-web5webwork培訓(xùn)Action請(qǐng)求的動(dòng)作都對(duì)應(yīng)于一個(gè)相應(yīng)的Action一個(gè)Action是一個(gè)獨(dú)立的工作單元和控制命令它必需要實(shí)現(xiàn)XWork里的Action接口publicinterfaceActionextendsSerializable{
publicstaticfinalStringSUCCESS="success";publicstaticfinalStringNONE="none";publicstaticfinalStringERROR="error";publicstaticfinalStringINPUT="input";publicstaticfinalStringLOGIN="login";
publicStringexecute()throwsException;}6webwork培訓(xùn)例子-用戶注冊(cè)register.jspxwork.xmlregisterSuccess.jspregister.action7webwork培訓(xùn)ActionSupport提供Action常用功能的一個(gè)基類錯(cuò)誤消息的支持
actionandfieldspecificerrors
fielderrorsareautomaticallysupportedbyviews國(guó)際化支持
1resourcebundleperaction pervasiveUIsupportforretrievingmessages8webwork培訓(xùn)ActionContext一次Action調(diào)用都會(huì)創(chuàng)建一個(gè)ActionContext調(diào)用:ActionContextcontext=ActionContext.getContext()在WebWork中,它通過(guò)包裝提供了對(duì)Servlet的訪問(wèn):HttpSession——context.getSession()
HttpServletRequestparameters——context.getParameters()ServletActionContext,繼承ActionContext。可以直接訪問(wèn)servlet相關(guān)的API:PageContext,HttpServletRequest,HttpServletResponse,ServletConfig,ServletContext9webwork培訓(xùn)二、WebWork原理XWork的層次:ActionProxyActionInvocationActionActionProxy:管理Action的生命周期,它是設(shè)置和執(zhí)行Action的起始點(diǎn)。ActionInvocation:在ActionProxy層之下,它表示了Action的執(zhí)行狀態(tài)。它持有Action實(shí)例和所有的Interceptor10webwork培訓(xùn)WebWork原理11webwork培訓(xùn)Interceptors"PracticalAOP"verysimple,noexternaldependenciesallowsyoutointerceptactioninvocationsHelpdecoupleandcomponentizeyourcodeInterceptorsareorganizedinto'stacks'listsofinterceptorsappliedinsequence.appliedtoanyactionorpackageofactionsWebWorkismostlyimplementedasaseriesofXWorkinterceptors12webwork培訓(xùn)例子-TimerInterceptorpublicclassTimerInterceptorimplementsInterceptor{ ...
publicStringintercept(ActionInvocationdispatcher)...{ longstartTime=System.currentTimeMillis();
Stringresult=dispatcher.invoke();
longexTime=System.currentTimeMillis()-startTime; (dispatcher.getProxy().getActionName()+"ranin"+exTime+"ms."); returnresult;
}}xwork.xml<interceptors> <interceptorname="timer" class="erceptor.TimerInterceptor"/></interceptors>13webwork培訓(xùn)Interceptor的執(zhí)行順序Interceptor截獲Action的執(zhí)行,并在它的之前或之后調(diào)用相應(yīng)的方<interceptor-stackname="xaStack"> <interceptor-refname="thisWillRunFirstInterceptor"/> <interceptor-refname="thisWillRunNextInterceptor"/> <interceptor-refname="thisWillRunLastInterceptor"/></interceptor-stack>thisWillRunFirstInterceptor thisWillRunNextInterceptor thisWillRunLastInterceptor MyAction1 MyResult(result) thisWillRunLastInterceptor thisWillRunNextInterceptorthisWillRunFirstInterceptor14webwork培訓(xùn)ValueStack由OGNL框架實(shí)現(xiàn)可以把它簡(jiǎn)單的看作一個(gè)ListStackObject:放入stack中的對(duì)象,一般是action。StackContext(map):stack上下文,它包含一些列對(duì)象,包括request/session/attr/applicationmap等。EL:存取對(duì)象的任意屬性,調(diào)用對(duì)象的方法,遍歷整個(gè)對(duì)象結(jié)構(gòu)圖。15webwork培訓(xùn)ResultTypeResult 它是Action執(zhí)行之后返回的一個(gè)字符串常量 它表示Action執(zhí)行完成的狀態(tài)。ResultType
它是一個(gè)類 它在Action執(zhí)行,并返回result之后調(diào)用 它用來(lái)決定WebWork使用什么方式展現(xiàn)界面<result-typename="dispatcher"class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult"default="true"/><resultname="success"type="dispatcher">/register/registerSuccess.jsp</result>16webwork培訓(xùn)三、WebWork標(biāo)簽庫(kù)和EL<ww:propertyvalue=“”/>取值輸出<ww:iteratorvalue=“”status=“”/>迭代標(biāo)簽,可以輸出Collection,Iterator,Enumeration,Map,array,XMLNode,orXMLNodeList status:用來(lái)取得迭代器的狀態(tài):getCount(),getIndex(),isFirst(),isLast(),isEven(),isOdd()<ww:iftest=“”></ww:if> <ww:elseiftest=“”></ww:eleseif> <ww:else></ww:else>17webwork培訓(xùn)ExpressionLanguageOGNLExpressionResultgetEmployee().getName()employee.toStringgetEmployee().toString()employee.relations[0]FirstelementoftheRelationscollectionnamein{null,"Rick"}TrueisnameisnullorRickemployee.relations.{name}CallsgetName()oneachrelationsinthecollectionreturninganewcollection例子-員工登記18webwork培訓(xùn)四、實(shí)例驗(yàn)證多模塊處理一個(gè)Action類多方法文件上傳防止重復(fù)提交進(jìn)度條顯示19webwork培訓(xùn)驗(yàn)證XWork驗(yàn)證框架驗(yàn)證Action的屬性減弱驗(yàn)證與Action之間的耦合 驗(yàn)證信息存儲(chǔ)在獨(dú)立的xml文件中 驗(yàn)證出錯(cuò)信息放置在Action中可插拔的驗(yàn)證類驗(yàn)證機(jī)制有Interceptor實(shí)現(xiàn)20webwork培訓(xùn)已提供的驗(yàn)證類ValidatorResultRequiredFieldfield!=nullRequiredStringfield!=null&string.length()>0IntRangeIntegerisinagivenrangeDateRangeDateisinagivenrangeEmailValidemailfieldURLValidURLfieldExpression/FieldExpressionAnyOGNLexpressionevaluatestotrueeg.!="dog"AllowsyoutocreateverypowerfulvalidationsusingjustXMLandyourexistingmodel21webwork培訓(xùn)例子-注冊(cè)驗(yàn)證register.jspxwork.xmlregisterSuccess.jspregister.actionRegisterAction-validation.xmlregister.jsp驗(yàn)證出錯(cuò)22webwork培訓(xùn)多模塊Include:使用多個(gè)XWork配置文件Package:package之間可以繼承Namespace:用來(lái)區(qū)分不同package中的action23webwork培訓(xùn)一個(gè)Action類多方法方法要求:無(wú)參數(shù),返回一個(gè)字符串類型,拋出Exception,例如:publicStringdoDefault()throwsExcetpion{ returnINPUT;}定義方式 1、直接訪問(wèn),actionName!methodName.action。例如:register!doDefault.action 2、在XWork中定義,使用method屬性。例如:<actionname="registerDefault"class="com.skyon.demo.register.RegisterAction"
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療設(shè)備付款合同范例
- 與演員合同范本
- 別墅電梯采購(gòu)合同范本
- 乙方出資建房合同范本
- 出售工地用車合同范本
- 勞務(wù)派遣施工合同范本
- 醫(yī)療營(yíng)銷合同范本
- 北京園林公司合同范本
- 代理推廣合作合同范本
- 醫(yī)院棉被訂購(gòu)合同范例
- DB12-T 3034-2023 建筑消防設(shè)施檢測(cè)服務(wù)規(guī)范
- 銷售人員崗位職責(zé)培訓(xùn)
- 小學(xué)生日常行為規(guī)范實(shí)施方案
- 2024-2025學(xué)年九年級(jí)化學(xué)人教版上冊(cè)檢測(cè)試卷(1-4單元)
- 2024年遼寧省鞍山岫巖滿族自治縣事業(yè)單位招聘(150人)歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- DBJ46-070-2024 海南省民用建筑外門窗工程技術(shù)標(biāo)準(zhǔn)
- 金屬冶煉安全生產(chǎn)實(shí)務(wù)注冊(cè)安全工程師考試(初級(jí))試題與參考答案
- 2024年高職高考語(yǔ)文必背古詩(shī)
- 護(hù)理質(zhì)控護(hù)士競(jìng)聘
- 醫(yī)學(xué)課件炎癥性腸病4
- 2024年4月自考00263外國(guó)法制史試題及答案
評(píng)論
0/150
提交評(píng)論