版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、深入淺出JSF框架BOS分析設(shè)計(jì)部 葛朋旭 序言JSF作為JavaEE的標(biāo)準(zhǔn)Web框架開展歷程 1.0-1.1-1.2-2.0IBM, Oracle,開源社區(qū)有多種實(shí)現(xiàn)版本AOM、WAF的底層核心就是JSF框架JSF的標(biāo)準(zhǔn)標(biāo)準(zhǔn)JSF的框架原理JSF生命周期分析JSF的高級(jí)特性JSF的RIA技術(shù)整合JSF的新版本趨勢(shì)2提綱JSF標(biāo)準(zhǔn)標(biāo)準(zhǔn)框架設(shè)計(jì)原理生命周期跟蹤高級(jí)特性分析RIA技術(shù)整合新版本趨勢(shì)3JSF流行曲Application Development TechnologiesOne-TierTwo-TierMulti-TierTodays Application DevelopmentFra
2、meworksTapestry, Struts, Webwork, Hibernate, TopLink, ADF UIX,Spring,What is JSF?JavaServer Faces (JSF) is a user interface (UI) framework for JavaWeb applications. It is designed to significantly ease the burden ofwriting and maintaining applications that run on a Java application server and render
3、 their UIs back to a target client.4JSF流行曲JSF Developer TypePage authorApplication developerComponent writerTools providerJSF implementers5提綱JSF標(biāo)準(zhǔn)標(biāo)準(zhǔn)框架設(shè)計(jì)原理生命周期跟蹤高級(jí)特性分析RIA技術(shù)整合新版本趨勢(shì)6JSF標(biāo)準(zhǔn)標(biāo)準(zhǔn)- JSF有什么JSR-127 Standard specification JDK1.5Java Servlet 2.5JavaServerTM Pages 2.1JavaServerTM Pages Standard Tag
4、 Library 2.1Component ModelEvent DrivenNavigation ModelApplication Lifecycle架構(gòu)跟協(xié)議、Makeup的無關(guān)性7提綱JSF標(biāo)準(zhǔn)標(biāo)準(zhǔn)框架設(shè)計(jì)原理生命周期跟蹤高級(jí)特性分析RIA技術(shù)整合新版本趨勢(shì)8JSF ArchitectureMVC9JSF ArchitectureMVCModel 210JSF ArchitectureMVCModel 2Struts model211JSF ArchitectureMVCModel 2Struts model2JSF model212JSF ArchitectureModel 2 Pat
5、tern【MVC】ModelManaged Bean/Backing beans JavaScript ModelViewUIComponentDHTML/DOM/CSS(XML)based, WML-basedControllerFacesServletJavaScript Controlller13Component-Based UI FrameworkUIComponentRendererRenderKitRenderer-specific component subclassJSP tag/ Facelets14JSF UIComponent1.115JSF UIComponent1.
6、11.2UINamingContainer16JSF 框架分析-1Saving and Restoring StateStateManagerResponseStateManagerjavax.faces.ViewStateComponent Family and Component TypeConverters,Validators, Events, and ListenersFacets17JSF 框架分析-2Renderersdecodeencode18JSF 框架分析-2RenderersRenderer Types19JSF 框架分析-2RenderersRenderer Types
7、RenderKitsHTMLSVG, WML, Ajax, XULMicrosofts DHTML/HTML Components (HTC)Mozillas XUL/XML Binding Language (XBL)Custom Action Tag Handlers20提綱JSF標(biāo)準(zhǔn)標(biāo)準(zhǔn)框架設(shè)計(jì)原理生命周期跟蹤高級(jí)特性分析RIA技術(shù)整合新版本趨勢(shì)21JSF Development Building an Application Using JSF創(chuàng)立ManagedBean編寫View頁(yè)面配置faces-config.xml22JSF Request Process接收到一個(gè)jsf Req
8、uest時(shí),JSF implementation啟動(dòng),相應(yīng)的processes/services必須在portal/servlet環(huán)境可用,為此JSF實(shí)現(xiàn)調(diào)用不同的工廠類完成各方面的職責(zé)。Web Application Start-Up一個(gè) JSF Web application 啟動(dòng), 4個(gè)工廠被實(shí)例化ApplicationFactory創(chuàng)立Application實(shí)例,Lifecycle instance to create and restore JSF views。LifecycleFactoryreturning a Lifecycle instance for a lifecycle
9、 identifierRenderKitFactoryreturning a RenderKit for the JSF Web applicationFacesContextFactorycreate an instance of FacesContext that is used to represent contextual information associated with the incoming request and eventually with the response23JSF LifecycleRequest-Processing Lifecycle1 Restore
10、 View2 Apply Request Values3 Process Validations4 Update Model Values5 Invoke Application6 Render Response24Lifecycle Web Start-up啟動(dòng)階段25Lifecycle Web Start-up啟動(dòng)階段facesServlet內(nèi)部創(chuàng)立FacesContextFactoryLifecycleFactory每個(gè)JSF Web程序 一個(gè)ApplicationFactory每個(gè)JSF implementation,有一個(gè)缺省 RenderKit26Lifecycle - Resto
11、re View PhaseRestore View PhaseViewHandler.restoreView()restoring a view from the server and client state如果 ViewHandler.restoreView() 返回null調(diào)用FacesContext的renderResponse()否則 調(diào)用 ViewHandler.createView()創(chuàng)立UIViewRoot,并綁定到FaceConext27Lifecycle - Render Response Phase步驟1調(diào)用ViewHandler.renderView() 執(zhí)行JSP文檔
12、從UIViewRoot中獲取到viewId值,傳遞給方法ExternalContext.dispatch()dispatch方法再forward 相應(yīng) viewId的值給Web容器28Lifecycle - Render Response Phase步驟2JSF-specific不負(fù)責(zé)forwarded request被FaceServlet忽略的request將傳給JSP容器JSP容器將按順序,根據(jù)上下文的相對(duì)路徑,執(zhí)行跟viewId匹配的JSP頁(yè)面29Lifecycle - Render Response Phase步驟3在處理、執(zhí)行JSF的JSP頁(yè)面前,JSP引擎檢測(cè)所用的content
13、 typetext/html和character encodingUTF-8 標(biāo)簽優(yōu)先展示作為所有JSF組件的容器創(chuàng)立、保存一個(gè) ResponseWriter實(shí)例在 FacesContext中ResponseWriter將輸出客戶端的標(biāo)簽缺省的 RenderKit HTMLRenderKit 要求content type 必須為text/htmlJSF component 被創(chuàng)立,并綁定到組件層次樹上如:對(duì)應(yīng)HtmlForm30Lifecycle - Render Response Phase步驟4JSF JSP tag 調(diào)用Application.createComponent()方法該方法
14、以一個(gè)字符表示component type 如:javax.faces.HtmlFormcomponent type被映射到faces-config.xml中定義的一個(gè)類一個(gè)HtmlForm 組件將被創(chuàng)立并綁定到 UIViewRoot通過component family和renderer type來定位一個(gè)具體的Renderertag調(diào)用組件的 encodeBegin()方法相應(yīng)調(diào)用HtmlForm renderer的encodeBegin() 方法方法輸出代碼31Lifecycle - Render Response Phase步驟5在中所有嵌套的組件都會(huì)被創(chuàng)立并render并添加到中。 t
15、ag被執(zhí)行將調(diào)用Renderer的 encodeEnd() 調(diào)用ViewHandler 的writeState()傳遞 a token 給 ResponseWriterjsf1.2之前的做法encodeEnd()方法輸出最后輸出JSF1.2component hierarchy 先創(chuàng)立,再輸出展示32Lifecycle Postback RequestPostback Scenario用戶在接收到初始請(qǐng)求頁(yè)面后,輸入、提交數(shù)據(jù)。How JSF handles postback6個(gè)生命周期被調(diào)用或者FacesContext.renderResponse()來跳過某個(gè)跟initial reques
16、t的不同之處在于第一、最后一個(gè)階段33Lifecycle JSF handles postback1 Restore View Phase跟Init Request相同調(diào)用ViewHandler的restoreView方法,保存此前請(qǐng)求的任何狀態(tài)變量。差異性restoreView()不再返回null,而是返回跟viewId相關(guān)的當(dāng)前組件樹狀態(tài)。如果STATE_SAVING_METHOD設(shè)置為client-side保存,回復(fù)的組件樹將傳遞給FacesContext34Lifecycle JSF handles postback2 Apply Request Values Phase每個(gè)input
17、組件從請(qǐng)求參數(shù)中建立submitted value每個(gè)command組件查詢事件,并傳遞到Invoke Application phase. 注意submitted value 只存在組件上,不會(huì)提交到底層的Model上。到Apply Request 階段完成時(shí),Renderers不再需要觀察request parameters,所有的值都提交到每個(gè)組件上了。35Lifecycle JSF handles postback3 Process Validation PhaseUIViewRoot上的processValidators()被調(diào)用,conversion、validation將被執(zhí)行注
18、意該過程遞歸調(diào)用每個(gè)組件上的processValidators方法每個(gè)HtmlInputText的驗(yàn)證時(shí),Type Conversion首先只發(fā)生在組件的submitted value.String Typed Object新的對(duì)象作為組件的local value,同時(shí)Submitted value被去除新的強(qiáng)類型對(duì)象被validated如果發(fā)生錯(cuò)誤,接下來的步驟,將監(jiān)聽ValueChangeEvent事件,其被傳遞到最后一個(gè)Apply Request Values phase如果轉(zhuǎn)換、驗(yàn)證階段發(fā)生異常,相應(yīng)的JSF 消息將通過組件的clientID綁定到FacesContext,然后調(diào)用re
19、nderResponse()方法,直接調(diào)整到Render Response phase.36Lifecycle JSF handles postback4 Update Model Phase所有的轉(zhuǎn)換、驗(yàn)證OK的值,被提交到底層的ModelJSF 遍歷組件樹,調(diào)用每個(gè)組件的processUpdates方法為了判定那里存儲(chǔ)了新的值,processUpdates方法通過value binding.定義組件的value屬性如:#credentials.username)Value binding 指向Managed bean的一個(gè)屬性,如username組件的local value提交到model
20、中,然后local value去除注意任何Model的消息、錯(cuò)誤,通過組件的clientId綁定到FacesContext上,renderResponse方法被調(diào)用,直接轉(zhuǎn)到Render Response Phase.37Lifecycle JSF handles postback5 Invoke Application Phase不需要遍歷層次樹結(jié)構(gòu),該階段只處理上一個(gè)階段列入隊(duì)列中的事件。處理完畢,或者進(jìn)入最后階段Render Response,或者重定向到另外一個(gè)頁(yè)面38Lifecycle JSF handles postback5 Invoke Application Phase在Ac
21、tionEvent發(fā)生時(shí),有兩個(gè)方法被執(zhí)行。UIViewRoot上的processApplication()方法將隊(duì)列中的事件,播送到目標(biāo)的事件組件上。ActionListener上的processAction()方法所有注冊(cè)的ActionListeners都被調(diào)用,然前方法綁定被執(zhí)行,最后組件調(diào)用缺省ActionListener的processAction來執(zhí)行綁定方法,處理導(dǎo)航。注意Action方法綁定最后執(zhí)行被調(diào)用39Lifecycle JSF handles postback6 Postback with Navigation缺省ActionListenter處理ActionEvent
22、,時(shí),調(diào)用綁定的action方法,并且獲取outcome,一個(gè)字符標(biāo)示如果outcome為null,將繼續(xù)處理下一個(gè)隊(duì)列事件,處理完畢進(jìn)入下一個(gè)階段Render Response.如果outcome不是null, ActionListener將傳遞FacesContext, fromAction, outcome到NavigationHandler。40Lifecycle JSF handles postback6 Postback with Navigation導(dǎo)航規(guī)則在faces-config.xml中存儲(chǔ),在start-up時(shí)讀取,并存在Appliction對(duì)象中。NavigationH
23、andler檢測(cè)導(dǎo)航規(guī)則,通過fromViewId,fromAction,outcome匹配。導(dǎo)航處理1:Redirecting導(dǎo)航處理2:通過handleNavigation(),創(chuàng)立新的UIViewRoot,讓缺省的ActionListener,調(diào)用renderResponse()來初始Render Response phase.41提綱JSF標(biāo)準(zhǔn)標(biāo)準(zhǔn)框架設(shè)計(jì)原理生命周期跟蹤高級(jí)特性分析RIA技術(shù)整合新版本趨勢(shì)42高級(jí)特性JSF的底層技術(shù)事件驅(qū)動(dòng)編程自定義驗(yàn)證器、轉(zhuǎn)化器自定義組件43高級(jí)特性JSF的底層技術(shù)ServletJSPJSTL/ELFacelets44高級(jí)特性JSF的底層技術(shù)-Se
24、rvlet45高級(jí)特性Faces Servletjavax.faces.webapp.FacesServlet 實(shí)例Ajax4jsfEas wafoperamasks-faces_2.2M146高級(jí)特性Faces Servlet 分析實(shí)例FacesContextFactoryLifecycleServletConfig方法init()service()destroy()47高級(jí)特性JSF的底層技術(shù)ServletJSPJSTL/ELFacelets48高級(jí)特性JSF的視圖(View)技術(shù) JSP1.0、1.1風(fēng)格,編譯效率差、缺少模板化Facelets使用XHTML標(biāo)準(zhǔn) 實(shí)現(xiàn)模板(Templat
25、e)功能 方便地創(chuàng)立自定義標(biāo)簽和EL函數(shù) Portal49高級(jí)特性JSF的UI界面JSP風(fēng)格50高級(jí)特性JSF的UI界面JSP風(fēng)格XHTML風(fēng)格51高級(jí)特性JSF的底層技術(shù)ServletJSPJSTL/ELFacelets52高級(jí)特性 JSTLJSTLJSP 標(biāo)準(zhǔn)標(biāo)記庫(kù)(JSP Standard Tag Library) ,實(shí)現(xiàn) Web 應(yīng)用程序中常見的通用功能的定制標(biāo)記庫(kù)集 JSP 1.2 定制標(biāo)記庫(kù)集 包括迭代和條件判斷 數(shù)據(jù)管理格式化 XML 操作數(shù)據(jù)庫(kù)訪問 折射出了的作用防止在 JSP 頁(yè)面中使用腳本編制元素 從表示層刪除源代碼來簡(jiǎn)化軟件維護(hù) 53高級(jí)特性 JSTL/ELJSTL1.0
26、 (J2EE 1.3/JSP 1.2 )core、format、xml 、sql驗(yàn)證器ScriptFreeTLV 、 PermittedTaglibsTLVJSTL1.1(J2EE 1.4/JSP 2.0 )支持EL靈活使用EL表達(dá)式,提供了一個(gè)用EL表示的強(qiáng)大的屬性集,使得 JSP動(dòng)態(tài)表示層技術(shù)開發(fā)可以完全脫離Java腳本代碼 JSTL1.2 (J2EE5/JSP2.1)54高級(jí)特性 JSTL/EL表達(dá)式語(yǔ)言(EL) 以 EcmaScript和 XPath為根底JSP 2.0新特性 (Expression Language )擅長(zhǎng)尋找對(duì)象及其特性,然后對(duì)它們執(zhí)行簡(jiǎn)單操作用 . 和 訪問對(duì)象的
27、屬性 55高級(jí)特性 JSTL/EL表達(dá)式語(yǔ)言(EL) 以 EcmaScript和 XPath為根底JSP 2.0新特性 (Expression Language )擅長(zhǎng)尋找對(duì)象及其特性,然后對(duì)它們執(zhí)行簡(jiǎn)單操作訪問隱式對(duì)象56高級(jí)特性 JSTL/EL表達(dá)式語(yǔ)言(EL) 以 EcmaScript和 XPath為根底JSP 2.0新特性 (Expression Language )擅長(zhǎng)尋找對(duì)象及其特性,然后對(duì)它們執(zhí)行簡(jiǎn)單操作訪問隱式對(duì)象運(yùn)算符57高級(jí)特性 JSTL/EL表達(dá)式語(yǔ)言(EL) 以 EcmaScript和 XPath為根底JSP 2.0新特性 (Expression Language )擅
28、長(zhǎng)尋找對(duì)象及其特性,然后對(duì)它們執(zhí)行簡(jiǎn)單操作訪問隱式對(duì)象運(yùn)算符、優(yōu)先級(jí)58高級(jí)特性JSF的底層技術(shù)ServletJSPJSTLFacelets59高級(jí)特性-Facelets問題JSF 和 Java 效勞器頁(yè)面技術(shù)之間的不匹配JSP 非常重視生成動(dòng)態(tài)內(nèi)容輸出,而 JSF 需要 JSP 來協(xié)調(diào)組件模型的構(gòu)建Facelets Facelets 是更加全面的解決方案 專為 JSF 組件模型度身定制的模板化語(yǔ)言 分析JSP 是種生成 servlet 的模板化語(yǔ)言。JSP 的主體與 servlet 的 doGet() 和 doPost() 方法等價(jià)(也就是說,成為 jspService() 方法)。JSF
29、定制標(biāo)記(例如 f:view 和 h:form)只是調(diào)用 JSF 組件來呈現(xiàn)它們自己的當(dāng)前狀態(tài)。JSF 組件模型的生命周期獨(dú)立于 JSP 生成的 servlet 的生命周期,這種獨(dú)立性就是混淆的來源 60高級(jí)特性-FaceletsFaceletsFacelets 這個(gè)模板化語(yǔ)言,從構(gòu)建之初,就考慮了 JSF 的組件生命周期。使用 Facelets,生成的模板會(huì)構(gòu)建組件樹,而不是 servlet。這就允許更好的重用,因?yàn)榭梢园呀M件組合成另一個(gè)組件 特性模板化(像 Tiles) 復(fù)合組件 定制的邏輯標(biāo)記 表達(dá)式語(yǔ)言 對(duì)設(shè)計(jì)師友好的頁(yè)面開發(fā) 創(chuàng)立組件庫(kù) 61高級(jí)特性-Facelets開發(fā)要求Face
30、lets 本身就可以使用 JSF 定制組件 在 Facelet 標(biāo)記庫(kù)文件中聲明 JSF 組件 在 Facelets 模板化語(yǔ)言中可以直接使用 JSF 組件,不用任何額外的開發(fā) Facelets 模板框架 允許使用熟悉的 JSTL 樣式的標(biāo)記和 JSTL/JSF/JSP 樣式的表達(dá)式語(yǔ)言 Facelets 允許定義能夠直接包含進(jìn)頁(yè)面或者容易地添加到 Facelet 標(biāo)記庫(kù)的組件集 62高級(jí)特性-Facelets步驟1導(dǎo)入jsf-facelets.jar 在operamasks-faces_2.2M1的operamasks-third-party.jar包括了相應(yīng)的lib 63高級(jí)特性-Face
31、lets步驟2把 Facelet 初始化參數(shù)添加到 web.xml 文件中 如operamasks-faces_2.2M1的web.xml 64高級(jí)特性-Facelets步驟3在faces-config.xml配置FaceletViewHandler 如:operamasks-faces_2.2M1的faces-config.xml 65高級(jí)特性-Facelets步驟4使用 xmlns:ui=如: 模型定義66高級(jí)特性-Facelets開發(fā)組件創(chuàng)立 Facelets 標(biāo)記庫(kù) 67高級(jí)特性-Facelets開發(fā)組件創(chuàng)立 Facelets 標(biāo)記庫(kù) 在 web.xml 中聲明標(biāo)記庫(kù) 68高級(jí)特性-F
32、acelets開發(fā)組件創(chuàng)立 Facelets 標(biāo)記庫(kù) 在 web.xml 中聲明標(biāo)記庫(kù) 用命名空間導(dǎo)入標(biāo)記文件 69高級(jí)特性JSF的底層技術(shù)事件處理模型自定義驗(yàn)證器、轉(zhuǎn)化器自定義組件70高級(jí)特性- JSF事件處理模型動(dòng)作事件簡(jiǎn)單導(dǎo)航根據(jù)(action method)的結(jié)果來決定要導(dǎo)向的網(wǎng)頁(yè) JSF會(huì)為其自動(dòng)產(chǎn)生一個(gè)“預(yù)設(shè)的ActionListener來處理事件,并根據(jù)其傳回值來決定導(dǎo)向的頁(yè)面 。71高級(jí)特性- JSF事件處理模型動(dòng)作事件優(yōu)先處理指定的ActionListener,【可有多個(gè)】再處理默認(rèn)的ActionListener最后是Action使用標(biāo)簽向元件注冊(cè)事件 72高級(jí)特性- JSF
33、事件處理模型動(dòng)作事件即時(shí)事件Immediate Events 指JSF視圖元件在取得請(qǐng)求中該取得的值之后,即立即處理指定的事件,而不再進(jìn)行后續(xù)的轉(zhuǎn)換器處理、驗(yàn)證器處理、更新模型值等流程 。原因HTTP無狀態(tài)的特性對(duì)于input與command元件,通過immediate屬性當(dāng)點(diǎn)擊按鈕后,JSF套用請(qǐng)求值之后會(huì)立即處理指定的actionListener,而不再進(jìn)行驗(yàn)證、更新模型值 。73高級(jí)特性- JSF事件處理模型動(dòng)作事件即時(shí)事件值改變事件Value Change Event 方法1在控件上設(shè)定valueChangeListener屬性方法2實(shí)現(xiàn)javax.faces.event.ValueC
34、hangeListener 74高級(jí)特性- JSF事件處理模型動(dòng)作事件即時(shí)事件值改變事件階段事件JSF的生命周期的6個(gè)階段各階段的前后會(huì)引發(fā)javax.faces.event.PhaseEvent 可以實(shí)現(xiàn)javax.faces.event.PhaseListener,并向 javax.faces.lifecycle.Lifecycle注冊(cè)這個(gè)Listener75高級(jí)特性- JSF事件處理模型-階段事件PhaseListener三個(gè)必須實(shí)現(xiàn)的方法getPhaseId() 傳回一個(gè)PhaseId beforePhase()afterPhase()實(shí)例76高級(jí)特性JSF的底層技術(shù)事件處理模型自定義
35、驗(yàn)證器、轉(zhuǎn)化器自定義組件77高級(jí)特性-自定義轉(zhuǎn)化器、驗(yàn)證器轉(zhuǎn)化器將HTTP請(qǐng)求提交的字符格式數(shù)據(jù),轉(zhuǎn)化為組件所需的格式對(duì)象。步驟實(shí)現(xiàn) Converter 接口( javax.faxes.convert.Converter)或者不實(shí)現(xiàn) Converter 接口, 直接在Bean中取得轉(zhuǎn)換器的方法 實(shí)現(xiàn) public Object getAsObject (FacesContext context, UIComponent component, String str) 方法 實(shí)現(xiàn) public String getAsString (FacesContext context, UIComponen
36、t component, Object obj) 方法 在 faces-config.xml 中注冊(cè)自定義轉(zhuǎn)換器 使用用 設(shè)置組件的converter 屬性直接在Bean中調(diào)用78高級(jí)特性-自定義轉(zhuǎn)化器、驗(yàn)證器轉(zhuǎn)化器實(shí)例將一個(gè)字符串值轉(zhuǎn)換為一個(gè) PhoneNumber 對(duì)象 79高級(jí)特性-自定義轉(zhuǎn)化器、驗(yàn)證器驗(yàn)證器驗(yàn)證客戶端提交的值,是否滿足業(yè)務(wù)要求,如果驗(yàn)證OK,更新到模型中。步驟實(shí)現(xiàn)接口Validator javax.faces.validator.Validator 編寫驗(yàn)證標(biāo)簽ValidatorTag 注冊(cè)驗(yàn)證器,注冊(cè)標(biāo)簽使用80高級(jí)特性-自定義轉(zhuǎn)化器、驗(yàn)證器驗(yàn)證器-實(shí)例81高級(jí)特性J
37、SF的底層技術(shù)事件處理模型自定義驗(yàn)證器、轉(zhuǎn)化器自定義組件82高級(jí)特性-自定義組件JSF組件開發(fā)需要了解很多根底知識(shí)JSF 組件由兩局部 組件和渲染器 組件類定義UI組件的狀態(tài)和行為 渲染器定義如何從請(qǐng)求讀取組件、如何顯示組件通常通過HTML渲染 參考手冊(cè)83提綱JSF標(biāo)準(zhǔn)標(biāo)準(zhǔn)框架設(shè)計(jì)原理生命周期跟蹤高級(jí)特性分析RIA技術(shù)整合新版本趨勢(shì)84RIA技術(shù)整合AjaxMozilla XULMicrosoft HTCOpenLaszloFlash/FlexApplet/JavaFX85RIA技術(shù)整合_Ajax特性Ajax 核心表單自動(dòng)完成 DWR實(shí)時(shí)驗(yàn)證 Rico傳送客戶端視圖狀態(tài)直接Web遠(yuǎn)程調(diào)用Aj
38、ax組件命令式/聲明式Ajax4JSF / Seaming Remoting86RIA技術(shù)整合_AjaxCore Ajax JavaScript, XMLHttpRequest,DOMXMLHttpRequest87RIA技術(shù)整合_Ajax開發(fā)模式傳統(tǒng)模式88RIA技術(shù)整合_Ajax開發(fā)模式傳統(tǒng)模式Ajax模式89RIA技術(shù)整合_Ajax開發(fā)模式傳統(tǒng)模式Ajax模式實(shí)例90RIA技術(shù)整合_AjaxJSF的Ajax整合步驟Creating a UI prototypeCreating events and listeners(Optional)Creating a behavioral supe
39、rclass(Optional)Creating a client-specific RendererPartialRendering (PPR) Delta DOM Rendering (D2R)Creating a renderer-specific subclass(Optional)Registering a UIComponent and RendererCreating a JSP tag handler and TLD(Facelets不需要)Creating a RenderKit and ResponseWriter(支持多種RIA技術(shù)、客戶端瀏覽技術(shù))Extending t
40、he JSF implementation(Optional)Registering a RenderKit and JSF extensionRegistering resources with Weblets91RIA技術(shù)整合_AjaxAjax的事件處理JSF的生命周期,對(duì)Servlet模型屏蔽了應(yīng)用代碼,從而促進(jìn)了面向組件的設(shè)計(jì)。針對(duì)Ajax的抽象性,通過Seam Remoting/Ajax4Jsf處理。Seam Remoting,Ajax4Jsf通過Ajax交互,將JSF組件熔合到瀏覽器所需的管道處理。事件觸發(fā)時(shí),消息異步發(fā)送到效勞器的組件收到響應(yīng)后,對(duì)頁(yè)面增量更新。都效勞于JSF的A
41、jax化。92Ajax整合 Seam Remoting VS Ajax4JSF相同點(diǎn)都使用Ajax來引入交互模型都可配備生命周期,且在瀏覽器需要時(shí),恢復(fù)組件狀態(tài)都采用JSF組件模型Seam Remoting特性提供JavaScript API使用定制的、非JSF生命周期,實(shí)現(xiàn)瀏覽器跟效勞器組件通信。Seam容器和其組件,可在此請(qǐng)求期間被恢復(fù)。Ajax4JSF特性完全隱藏JavaScript而更加抽象,所有邏輯都封裝在UI組件內(nèi)。通過完整的JSF生命周期接受Ajax請(qǐng)求。93RIA技術(shù)整合AjaxMozilla XULMicrosoft HTCOpenLaszloFlash/FlexApplet
42、/JavaFX94RIA技術(shù)整合_Mozilla XULXULXML User Interface Language,Mozilla組織的開源工程XBLExtensible Binding Language,被XUL用來定義組件的語(yǔ)言,作為HTML/XUL之間的橋梁特征速度快、可與JavaScript一起工作,基于XML,支持FireFox的內(nèi)部工作【SQLITE存儲(chǔ)引擎】。完全依賴Mozilla系列技術(shù)。95RIA技術(shù)整合_Mozilla XUL實(shí)例1 Simple XUL Event96RIA技術(shù)整合_Mozilla XUL實(shí)例2 XUL With XBLmyxbl.xml、testxbl.css、testxbl.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 咨詢服務(wù)承攬合同范本
- 二零二五年度重點(diǎn)工程土方開挖及運(yùn)輸服務(wù)合同2篇
- 二零二五年校園食堂餐飲服務(wù)承包合同3篇
- 二零二五年度醫(yī)用耗材集中采購(gòu)及配送服務(wù)合同3篇
- 2024秋九年級(jí)數(shù)學(xué)上冊(cè)第二十四章圓24.2點(diǎn)和圓直線和圓的位置關(guān)系24.2.2第1課時(shí)直線和圓的位置關(guān)系教案新版新人教版
- 2024秋高中數(shù)學(xué)第二章圓錐曲線與方程2.2.2.1橢圓的簡(jiǎn)單幾何性質(zhì)課堂達(dá)標(biāo)含解析新人教A版選修2-1
- 二零二五年度餐飲服務(wù)行業(yè)廚師招聘與管理合同
- 2025年度設(shè)備改造與技術(shù)支持項(xiàng)目合同范本3篇
- 二零二五年度高端住宅區(qū)安保服務(wù)補(bǔ)充合同
- 二零二五年度高端裝備制造股權(quán)收購(gòu)與產(chǎn)業(yè)升級(jí)協(xié)議
- 分期還款協(xié)議書
- 小區(qū)住戶手冊(cè)范本
- ??低?視頻監(jiān)控原理培訓(xùn)教材課件
- 《鄭伯克段于鄢》-完整版課件
- 土壤肥料全套課件
- 畢業(yè)生延期畢業(yè)申請(qǐng)表
- 學(xué)校6S管理制度
- 肽的健康作用及應(yīng)用課件
- T.C--M-ONE效果器使用手冊(cè)
- 8小時(shí)等效A聲級(jí)計(jì)算工具
- 人教版七年級(jí)下冊(cè)數(shù)學(xué)計(jì)算題300道
評(píng)論
0/150
提交評(píng)論