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

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

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

    Java學習

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

     

    深入了解JSF

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


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

    JSF的體系結構
    上 面提到了JSF體系框架中的模型-視圖-控制器 (MVC) 設計模式。我們具體來看看。典型的JSF應用:用戶請求JSF頁面,首先會統一把請求交由FacesServlet(Controller), FacesServlet里經過一系列的處理,調用業務模型(Model)處理,最后把JSP頁面內容(View)展現給用戶。

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

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



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



    JSF的生命周期(詳細):


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

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

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

    JSF中的組件
    JSF除了提供了一系列的標準組件之外,還提供了接口供開發者開發自己的組件。

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

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

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


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲网址在线观看| 亚洲国产另类久久久精品黑人| 亚洲精品成人网站在线播放| a级成人免费毛片完整版| 亚洲中文字幕日产乱码高清app | 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 国产免费网站看v片在线| 精品丝袜国产自在线拍亚洲| 久久99国产乱子伦精品免费| 亚洲视频免费播放| 91麻豆国产免费观看| 亚洲成a人片在线观看播放| 1000部国产成人免费视频| 亚洲AV无码一区二区三区人| 日韩毛片免费无码无毒视频观看| 亚洲一区二区三区高清不卡| 大陆一级毛片免费视频观看i| 亚洲欧美第一成人网站7777 | 久久WWW色情成人免费观看| 中文字幕 亚洲 有码 在线| 蜜桃精品免费久久久久影院| 亚洲福利中文字幕在线网址| 一级成人a免费视频| 久久亚洲国产午夜精品理论片 | 一级做a免费视频观看网站| 色噜噜AV亚洲色一区二区| 国产成人精品一区二区三区免费| 久久久久久亚洲Av无码精品专口| 青娱乐免费在线视频| 亚洲Av永久无码精品一区二区| 精品国产亚洲一区二区在线观看| 国产好大好硬好爽免费不卡| 国产成人精品日本亚洲专区6| 免费一级一片一毛片| 国产一精品一av一免费爽爽| 亚洲娇小性xxxx| 久久影院亚洲一区| 国产精品免费观看| 精品一区二区三区免费视频| 亚洲91精品麻豆国产系列在线| 免费国内精品久久久久影院|