亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于JSF框架技術(shù)的Web應用系統(tǒng)開發(fā)

        2012-12-19 08:54:48河南人民廣播電臺映像網(wǎng)黃星辰
        河南科技 2012年23期
        關(guān)鍵詞:用戶界面程序員應用程序

        河南人民廣播電臺 映像網(wǎng) 黃星辰

        一、Web應用程序開發(fā)階段

        1.利用Servlet階段,使用request和response對象接收和反饋客戶端的請求。它是開發(fā)Web應用程序的基石,在Web應用程序中,Servlet 是一個基本的Web 組件,開發(fā)Web 應用的許多技術(shù),如JSP及一些Web層的框架都是建立在其基礎之上。Servlet的缺點是在Java 代碼中兼有業(yè)務和邏輯,不利于程序設計和界面開發(fā)。

        2.JSP技術(shù)階段,JSP是在標記語言中以<%@…%>的形式嵌入Java代碼,使得頁面會話可以調(diào)用后臺Bean來處理事件,但是仍然沒有將表示層和業(yè)務層分割開來,往往是互相嵌套,這就要求美工人員要懂技術(shù),技術(shù)人員要懂美工,不利于程序的維護。隨后JSP引入了標簽庫,來分離業(yè)務邏輯,經(jīng)過SUN公司的標準化之后,就形成了JSTL(Java Standard TabLibrary)。JSTL 對于頁面顯示以及顯示邏輯的弱耦合已經(jīng)實現(xiàn),方便了Web 的開發(fā)。但隨著Web應用程序規(guī)模的不斷擴大,如今現(xiàn)有的JSTL技術(shù)已越來越無法滿足開發(fā)者的需求,復雜的業(yè)務流程和頁面之間的交互都需要程序員自己編寫代碼實現(xiàn),加大了開發(fā)難度。

        3.框架開發(fā)階段,所謂框架就是可重用的,半完成的應用程序,可以用來產(chǎn)生專門的定制程序。為了適應新的開發(fā)環(huán)境,一個中間件廠商開發(fā)出了像Struts、Spring、Hibernate以及后來出現(xiàn)的JSF 等框架。這些框架為Web 應用程序開發(fā)提供了模板,開發(fā)人員只要配置好相應的參數(shù)就可以完成對Web應用程序的開發(fā)。更重要的是,這些框架在不長的時間內(nèi)相互融合,現(xiàn)在的Web應用程序開發(fā)都用到了一種或多種框架。

        基于JCP制定的Web應用框架標準而開發(fā)的JSF框架技術(shù),采用了模型—視圖—控制器(MVC)的設計模式,憑借良好定義的請求處理生命周期和豐富的組件層次結(jié)構(gòu),大大提高了基于Java的Web用戶界面開發(fā)的簡易性。MVC框架模型如圖1所示。

        圖1 M VC 框架模型

        JSF技術(shù)提供了一個表現(xiàn)和行為徹底隔離的能力,使得先前只有在客戶端UI 體系(DOM)下完成的細粒度隔離移到了服務器端,客戶端只需解釋標準的HTML語法,從而達到了完全瘦客戶端的目標。JSF另一個主要特點在于,JSF利用熟悉的UI組件和Web 級概念,并不把開發(fā)者局限在某種特定的腳本技術(shù)或標記語言。JSF提供了一個JSP標簽庫,實現(xiàn)與JSP的綁定,但開發(fā)者完全可以用另外的表現(xiàn)技術(shù),因為它直接依賴于JavaServletAPI。以用戶界面組件為主的JSF與以頁面為中心的Struts框架不盡相同,它對應用程序的各個部分劃分得比較清晰。利用JSF實現(xiàn)的MVC結(jié)構(gòu)如圖2所示。

        圖2 利用JSF 實現(xiàn)的M VC 結(jié)構(gòu)

        由圖1,圖2可知,JSF的控制器部分,由FacesServlet、動作處理方法、動作監(jiān)聽器方法和Faces 配置文件組成。JSF 的視圖部分基于用戶界面組件,組件構(gòu)成組件樹,用戶界面組件具有快速應用程序開發(fā)工具的特征,優(yōu)于Struts。此外,JSF具有事件粒度細化的新特性,每個用戶界面組件可以觸發(fā)事件,不像Struts 只有在提交頁面時才能觸發(fā)一個事件,JSF中事件的粒度細化為組件級別,而不是表單級別。JSF的核心部件如圖3所示。

        圖3 JSF 核心部件

        圖3中用戶界面組成組件樹,構(gòu)成JSF視圖。用戶在與視圖上的組件相互交映時觸發(fā)了事件,事件通過事件監(jiān)聽器處理,在處理事件的過程中訪問應用程序的模型對象,最后,導航系統(tǒng)根據(jù)這個邏輯結(jié)果來選擇下一個應該呈現(xiàn)的視圖,呈現(xiàn)視圖的任務可以由組件自身直接完成,也可委派給專門的呈現(xiàn)器來完成。但有時碰到的特殊情況,僅用上面的步驟是無法完成的。如在要求輸入字符串的文本框中輸入數(shù)字或日期,或者輸入的是字符串,卻是無效數(shù)據(jù)等,于是在JSF中引入了轉(zhuǎn)換和驗證機制,來協(xié)助用戶組件更好的完成任務。在數(shù)據(jù)類型轉(zhuǎn)換、驗證及處理事件的過程中一旦發(fā)生錯誤,便產(chǎn)生相應的消息,并顯示給用戶,提示用戶下一步的策略。

        JSF的事件監(jiān)聽器Listener是建立在JavaBean的事件處理機制上的,與JavaBean 的事件模型一樣,JSF 框架中有強類型的事件類和監(jiān)聽器接口,應用程序可以通過類Listener 和Event 來處理UI組件生成的事件。當用戶與用戶界面組件交互時會觸發(fā)某種類型的事件,事件監(jiān)聽器根據(jù)組件上的EL表達式的值來確定待處理的事件。

        當一個對象A 依賴于B,則對象B 對A 有控制權(quán),如若B 發(fā)生變化,對象A 也一定隨之發(fā)生變化。而控制反轉(zhuǎn)IOC 就是讓這種對象間的依賴關(guān)系發(fā)生轉(zhuǎn)移。它要求“程序不應依賴實現(xiàn),而是依賴接口”。也有人把IOC 稱為依賴注入。為了達到控制反轉(zhuǎn)的目的,容器或者框架需要引入一個裝配者對象,在JSF中就是托管Bean的任務。對象依賴關(guān)系如圖4所示。

        圖4 對象依賴關(guān)系

        Backing Bean 不再依賴業(yè)務服務的具體實現(xiàn)對象,而是被托管Bean所依賴,此時托管Bean還依賴于具體的業(yè)務實現(xiàn)。將Backing Bean和具體的業(yè)務服務實現(xiàn)配置在faces文件中供托管Bean使用,無須對托管Bean代碼做更改,Backing Bean具體的業(yè)務服務的實現(xiàn)無須再改動其代碼了,而是更改相應的配置文件,大大降低了程序的耦合度。依賴注入分為接口注入、設值注入和構(gòu)造子注入3種類型。實際應用中,后兩種出現(xiàn)較多。

        二、JSF 框架技術(shù)的優(yōu)勢

        1.UI 組件。JSF 的UI 組件是真正意義上的UI 組件,能極大地簡化程序員的工作,如,在頁面上放置一個文本輸入框,這個輸入框立即具備了數(shù)據(jù)填充、界面更新、事件偵聽、動作觸發(fā)、有效性檢查和類型轉(zhuǎn)換的功能。更為重要的是,程序員只需根據(jù)業(yè)務邏輯編寫核心業(yè)務代碼,JSF會保證代碼在合適的時候被執(zhí)行,完全不用考慮代碼與代碼之間該如何來配合。

        2.事件驅(qū)動模式。事件是面向?qū)ο蠓椒ǖ闹匾M成部分,對象之間通過事件進行溝通和交流,使得一個或多個對象能夠?qū)α硪粋€對象的行為作出響應,共同合作去完成一項業(yè)務邏輯。通常,編寫Web 程序時,程序員要為對象之間的溝通設計機制,編寫代碼。雖然溝通的內(nèi)容屬于業(yè)務邏輯,但溝通的機制顯然與業(yè)務沒有太大關(guān)系,程序員因此為業(yè)務邏輯之外的功能浪費了時間。JSF改變了這種狀況。JSF的事件和偵聽模式與大家熟悉的Javabean 的事件模式類似,有Java 基礎的程序員并不需要學習任何新的東西。JSF的UI組件可以產(chǎn)生事件,如,當頁面上一個文本輸入框的內(nèi)容被修改時,會發(fā)出一個“值改變事件”。另一個對象如果對“值改變事件”感興趣,只需注冊為該對象的偵聽者,并編寫處理例程,即可命令JSF在事件發(fā)生時自動調(diào)用處理例程。JSF做了所有該做的事,留給程序員的只有業(yè)務邏輯代碼的編寫。

        3.用戶界面到業(yè)務邏輯的直接映射。如,表單提交是Web編程最常見的任務,也是最復雜的任務之一。當用戶在網(wǎng)頁上點擊“確定”按鈕時,瀏覽器將生成一個HTTP請求,發(fā)往服務器端的某個Servlet,執(zhí)行該Servlet 的service 方法。在service 方法中,HTTP請求需要經(jīng)歷解碼、類型轉(zhuǎn)換、有效性驗證、狀態(tài)保存、數(shù)據(jù)更新等環(huán)節(jié),處理這些環(huán)節(jié)的所有細節(jié),對程序員來說是沉重的負擔。在JSF下,這些工作的很大一部分都由框架承擔了,在程序員看來,這個過程是透明的,用戶界面端的HTTP請求可以直接映射到后端的一個事件處理例程,JSF起到了承前啟后的作用。

        4.程序員和網(wǎng)頁設計人員的分工。在JSP中,程序員和網(wǎng)頁設計人員的工作有時是互相交織、無法區(qū)分的。這是因為JSP頁面中摻入了網(wǎng)頁設計人員所不熟悉的一些JSP標簽,甚至是晦澀的Java代碼。要求網(wǎng)頁設計人員理解這些標簽和代碼是不現(xiàn)實的,不符合分工合作的原則。在JSF中,框架為網(wǎng)頁設計人員提供了一套標準的UI組件,在工具的支持下,可以通過拖放簡單地添加到網(wǎng)頁上,然后設置某些顯示屬性來滿足視覺要求。網(wǎng)頁設計人員不需要知道UI組件背后的復雜代碼,而程序員也不需要再處理任何與視覺相關(guān)的細節(jié),程序員所做的只是給UI組件綁定類的屬性或方法。雖然程序員和網(wǎng)頁設計人員需要修改同一份文件,但他們各司其職,各得其所,互不干擾。程序員和網(wǎng)頁設計人員工作的明確劃分,是JSF在易用性方面邁出的一大步。

        5.請求處理生命周期的多階段劃分。雖然都是建立在Servlet基礎之上,但JSF的生命周期要比JSP復雜得多。JSP的生命周期非常簡單,頁面被執(zhí)行時,HTML標記立即被生成了,生命周期隨即結(jié)束。而一個完整的JSF請求—處理生命周期被精心規(guī)劃為6個階段,典型的JSF請求需要經(jīng)歷所有階段,某些特殊的請求也可以跳過一些階段。階段的細分,顯然引入了更多的處理,但JSF框架會管理這一切,所以,程序員在獲得更多控制能力的同時,工作量并沒有增加。

        6.全面的用戶自定義支持。JSF為程序員提供了很多默認的組件和類,通常情況下,JSF 的這些默認組件和類足以滿足Web開發(fā)的需要。但是,考慮到在某些應用場合,框架的默認行為也許不符合業(yè)務的要求,JSF特別允許程序員編寫自己的組件和類,來滿足客戶的特殊需求。例如,程序員可以編寫自己的UI組件,甚至可以創(chuàng)建自己的EL解釋器,來支持非標準的EL表達語言。

        三、結(jié)論

        JSF 技術(shù)是基于MVC 模式的開發(fā)框架,它提供了豐富的用戶組件UI,較完美地將JSP,Servlet,JavaBeans 結(jié)合起來,提高了開發(fā)效率。并且JSF實現(xiàn)了一個開放的架構(gòu),允許開發(fā)人員創(chuàng)建自己的組件,或者在現(xiàn)有的組件上繼承,開發(fā)功能更強大的組件,體現(xiàn)了JSF的靈活性和可延展性。相信隨著JSF技術(shù)的不斷完善,基于JSF 框架的Web 應用將會越來越多,JSF 的運用范圍也會更加廣泛。

        猜你喜歡
        用戶界面程序員應用程序
        自然用戶界面在智能家居系統(tǒng)中的應用路徑創(chuàng)新研究:生成式人工智能技術(shù)的調(diào)節(jié)作用
        包裝工程(2023年16期)2023-08-25 11:40:58
        為了讓媽媽看懂地圖,一位“野生程序員”做了個小程序
        消費電子(2022年7期)2022-10-31 06:17:10
        基于CiteSpace的國外用戶界面體驗圖譜量化分析
        怎樣成為一名優(yōu)秀程序員
        幼兒100(2020年29期)2020-10-21 06:17:58
        刪除Win10中自帶的應用程序
        電腦報(2019年12期)2019-09-10 05:08:20
        程序員之子
        意林(2017年24期)2018-01-02 22:49:14
        UI用戶界面色彩設計研究
        流行色(2017年12期)2017-10-26 03:08:44
        加班
        三月三(2016年6期)2016-06-21 10:25:33
        基于B/S的跨平臺用戶界面可配置算法研究
        關(guān)閉應用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        亚洲另类自拍丝袜第五页| 国产三a级三级日产三级野外| 国产果冻豆传媒麻婆精东| 天美传媒精品1区2区3区| 国产精品白浆视频一区| 久久精品国产亚洲av专区| 国产情侣一区二区| 在线亚洲+欧美+日本专区| 久久国产亚洲AV无码麻豆| 免费高清日本一区二区| 精品激情成人影院在线播放| 看av免费毛片手机播放| 国产精品久久久久尤物| 丰满人妻一区二区三区52| 国产日产欧产精品精品蜜芽| 99久久国产福利自产拍| 国产h视频在线观看网站免费| 国产丝袜美腿一区二区三区| 国产综合色在线精品| 熟妇人妻中文av无码| 久久精品女人天堂AV一个| 人妻精品人妻一区二区三区四区| 四虎影视成人永久免费观看视频| 欧美亚洲日韩国产区| 一区二区三区在线蜜桃| 日本熟妇另类一区二区三区| 麻豆果冻传媒在线观看| 免费国产一级特黄aa大片在线 | 女人天堂国产精品资源麻豆| 亚洲综合网站久久久| 中文乱码人妻系列一区二区| 区一区一日本高清视频在线观看 | 熟妇人妻无乱码中文字幕av| 国产麻豆精品一区| 亚洲成a人片在线观看导航| 国产精女同一区二区三区久| 超碰97人人射妻| 风流少妇又紧又爽又丰满| 日本一区二区三区一级免费| 日本无遮挡真人祼交视频| 国产成人av免费观看|