<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學(xué)習(xí)

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對(duì)文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會(huì)盡力幫助解決。一起進(jìn)步

     

    深入了解JSF

    序言
    在JAVA社 區(qū)里,WEB應(yīng)用的開發(fā)一直存在開發(fā)難的問題。從開始的最簡單的CGI程序,到JSP,SERVLET。雖然說JSP/SERVLET的出現(xiàn)大大減輕了開 發(fā)的難度,但稍微復(fù)雜點(diǎn)的WEB應(yīng)用,就會(huì)產(chǎn)生大量重復(fù)代碼,后來為了解決這些問題,先后出現(xiàn)了諸如Struts, Spring等優(yōu)秀的框架,并得到了很大推廣。在這些基礎(chǔ)上,Java社區(qū)進(jìn)程(Java Community Process:JCP),包括Sun Microsystems、Oracle、Borland、BEA、IBM以及一群業(yè)內(nèi)知名的Java和Web專家,開始制作JSF規(guī)范請求,最初的 Java規(guī)范請求(JSR127)起始于2001年中期,并于2004年3月,正式公開發(fā)布了JavaServer Faces規(guī)范和參考實(shí)現(xiàn)。


    什么是 JSF?
    JavaServer Faces (JSF) 是一種用于構(gòu)建 Web 應(yīng)用程序的標(biāo)準(zhǔn) Java 框架。它的目的是簡化WEB應(yīng)用程序的開發(fā)。它基于組件技術(shù),并提供了以此為中心來開發(fā) Java Web 用戶界面的方法,從而簡化開發(fā)。JSF框架體系完美地集成了具有良好構(gòu)建的模型-視圖-控制器 (MVC) 設(shè)計(jì)模式,確保了應(yīng)用程序具有良好的可維護(hù)性。另外,因?yàn)镴SF 是由 Java Community Process (JCP) 開發(fā)的一種 Java 標(biāo)準(zhǔn),所以完全可以得到各大開發(fā)工具供應(yīng)商的支持,為 JavaServer Faces 提供易于使用的、高效的可視化開發(fā)環(huán)境。

    JSF的體系結(jié)構(gòu)
    上 面提到了JSF體系框架中的模型-視圖-控制器 (MVC) 設(shè)計(jì)模式。我們具體來看看。典型的JSF應(yīng)用:用戶請求JSF頁面,首先會(huì)統(tǒng)一把請求交由FacesServlet(Controller), FacesServlet里經(jīng)過一系列的處理,調(diào)用業(yè)務(wù)模型(Model)處理,最后把JSP頁面內(nèi)容(View)展現(xiàn)給用戶。

    JSF的生命周期:
    JSF把整個(gè)用戶請求明確地分成了6個(gè)階段,每個(gè)階段完成不同的任務(wù)。一個(gè)典型JSF請求分成以下6個(gè)階段:
    1. Restore View Phase:重載視圖階段

    2. Apply Request Values Phase:應(yīng)用請求值階段
    3. 這個(gè)階段主要做2件事:第一,把用戶提交的數(shù)據(jù)設(shè)置到組件中去;第二,把用戶事件(比如按下按鈕等)加到事件隊(duì)列。
    4. Process Validations Phase:數(shù)據(jù)檢查階段
    5. 這個(gè)階段主要做數(shù)據(jù)的合法性檢查,如果用戶輸入了非法數(shù)據(jù),則在畫面上顯示相應(yīng)的錯(cuò)誤消息。
    6. Update Model Values Phase:更新模型值階段
    7. 把組件里的值設(shè)置到Model中去。
    8. Invoke Application Phase:用戶業(yè)務(wù)邏輯階段
    9. 主要處理用戶按鈕事件等,調(diào)用業(yè)務(wù)邏輯處理(action)。
    10. Render Response:重畫畫面階段
    11. 畫面描畫和展現(xiàn)。



    為了便于理解,用下面2個(gè)圖加以說明:
    JSF的生命周期 概要圖



    JSF的生命周期(詳細(xì)):


    備注1:重載視圖組件樹(Component Tree)
    備注2:如果設(shè)置了按鈕等的immediate屬性設(shè)置為true,且被提交的數(shù)據(jù)格式正確無誤的情況下,則把用戶提交的數(shù)據(jù)設(shè)置到組件(Components)中去,如果有Converter等,則調(diào)用Converter做變換。
    另外:processValidators階段(immediate為false),如果有Converter等,且被提交的數(shù)據(jù)格式正確無誤,則調(diào)用Converter做變換。
    備注3:把組件里的值設(shè)置到BackingBean。
    備注4:Action Event處理。

    從上圖可以看出,組件在JSF里起著中心關(guān)鍵的作用。基本上所有的處理都是圍繞著組件為中心。

    但 對(duì)于一般開發(fā)人員,他們可以不用關(guān)心組件的實(shí)現(xiàn),只專注于業(yè)務(wù)邏輯(Model)方面的處理就行了。從用戶請求到業(yè)務(wù)邏輯(Action Event)處理,JSF框架幾乎為我們作了所有的其他工作。我們除了在JSP里寫幾個(gè)關(guān)聯(lián)標(biāo)簽之外(如:<h:outputText value="#{mybean.userName}" />把用戶名關(guān)聯(lián)到Mybean中username屬性;<h:commandButton action="#{mybean.onLogin}" />把該按鈕事件關(guān)聯(lián)到Mybean中的onLogin方法),可以完全不用管這個(gè)請求是怎么調(diào)用我們的業(yè)務(wù)邏輯處理的。

    JSF中的組件
    JSF除了提供了一系列的標(biāo)準(zhǔn)組件之外,還提供了接口供開發(fā)者開發(fā)自己的組件。

    JSF 組件的實(shí)現(xiàn)也非常靈活,一個(gè)JSF組件一般由(標(biāo)簽:Tag,組件:Component, 描畫器:Renderer)三部分組成。它同樣體現(xiàn)了MVC的設(shè)計(jì)思想,作到了數(shù)據(jù)和顯示的分離。同一套組件,可以由不同的描畫器(Renderer)描 畫,從而展現(xiàn)給用戶不同的界面。

    總結(jié):
    JSF在不犧牲開發(fā)能力和靈活性的前提下提供高效的以組件為中心的開發(fā),使得以JSF開發(fā)的WEB應(yīng)用具有高度的可擴(kuò)展性,解決了Java Web 開發(fā)中的許多歷史問題,大大降低了開發(fā)難度。同時(shí)由于它的開放性和標(biāo)準(zhǔn)性,將得到越來越多的開發(fā)商和開發(fā)人員的青睞。

    posted on 2008-10-10 08:51 找個(gè)美女做老婆 閱讀(329) 評(píng)論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 暖暖日本免费中文字幕| 亚洲第一成年网站视频 | 久久精品国产亚洲一区二区| 在线精品自拍亚洲第一区| 精品国产免费观看一区| 亚洲AV噜噜一区二区三区| 国产精品深夜福利免费观看| 国产免费一区二区三区不卡| 久久亚洲高清综合| 久久99久久成人免费播放| 亚洲中文字幕无码爆乳AV| 中文字幕免费视频精品一| 亚洲国产另类久久久精品黑人| 三年片免费观看大全国语| 久久久亚洲精品国产| 114级毛片免费观看| 亚洲国产成a人v在线观看| 免费的一级片网站| 国产亚洲情侣久久精品| 不卡一卡二卡三亚洲| 99re这里有免费视频精品| 亚洲一区中文字幕在线电影网 | 亚洲第一福利网站在线观看| 久久99精品免费一区二区| 亚洲高清无在码在线电影不卡| 最近最新MV在线观看免费高清| 亚洲6080yy久久无码产自国产| 亚洲精品无码成人片在线观看| 拍拍拍无挡免费视频网站| 亚洲人成在线精品| 免费少妇a级毛片人成网| 永久免费av无码入口国语片| 亚洲国产成人久久| 亚洲AV中文无码乱人伦在线视色| 毛片在线全部免费观看| 亚洲日韩一区二区一无码| 亚洲综合精品香蕉久久网| 免费看成人AA片无码视频羞羞网| 免费国产a理论片| 亚洲黄色在线网站| 亚洲日韩VA无码中文字幕|