閑人野居
          好好學習,天天向上
          posts - 57,  comments - 137,  trackbacks - 0
              經(jīng)過一段時間的學習,對jsf的認識也逐漸清晰。總結了一下jsf和structs的區(qū)別,首先在于分離了請求的處理。使用事件處理機制來代替原有的request分發(fā)。其次在頁面的展示上,采用組件的概念,而不是到處散落的html標記。再有,jsf對于請求的生命周期重新進行了劃分,對于每個階段都可以派遣事件,這使得整個請求的處理比較的清晰。最后,jsf對于頁面的流轉使用Navigation系統(tǒng)來處理,這一點感覺和structs還是比較類似的,只是換了一個概念。
              從jsf的規(guī)范來看,jsf整個架構還是比較清晰,各個層次分的也挺明顯。從總體上看,規(guī)范主要劃分了application,context,lifecycle,render,component,validator,event,el幾個部分,當然少不了主要的入口Servlet。有一點不太明白,大多數(shù)的類都是抽象類而不是接口,可能是為了規(guī)定層次吧,不允許多層次繼承。下面簡單以下介紹各個包的功能:
             application:從定義上就可以看出來,這是應用級的。中間包括了Application主類,這是主要的程序入口,規(guī)范中最具有重量級的類,也是用來連接各個模塊的。jsf規(guī)范使用工廠的模式,來創(chuàng)建相應的實現(xiàn)類.當然如果需要Application的實現(xiàn),需要從ApplicationFactory中取得。除了Application類,其中還包括了ViewHandler,這個主要負責View的Renderer調配工作。而許多jsf實現(xiàn)框架,如果想定義自己的行為,一般上都會使用自身的ViewHandler,如facelets。NavigationHandler的工作,不用說已經(jīng)很明顯,就是用來負責頁面之間的導航。包中,還包括了view狀態(tài)管理類--StateManager,主要用于恢復view,以及保存view。目前一般使用Session來保存相應的view,當然也可以使用客戶端來保存。其實,對于view狀態(tài)的保存,非議還是挺多的,而且問題也比較多。
            context:包括了主要的上下文環(huán)境類,如FacesContext和ExternalContext,前者是jsf的主要Context類,包括對message的管理,Application的取得,以及ResponseWrite的引用。后者主要類似于作為外部環(huán)境的引用類,如ServletContext和PortletContext.ResponseWriter,主要的服務端Writer,用于輸出相應的html,xml內容,所有的Renderer都需要引用此類
            lifecycle:這是jsf最大的特色,劃分了請求的相應的處理階段。規(guī)范中,只有兩個類Lifecycle和LifecycleFactory。Lifecycle管理整個jsf請求的生命周期。通過指定的順序執(zhí)行相應的階段。
            webapp:定義了主要的Servlet,F(xiàn)acesServlet,主要的請求分發(fā)類,用于轉換相應得faces為實際的資源。在規(guī)范中,Servlet并不是主要的初始化類,jsf 的初始化工作主要由具體的實現(xiàn)完成。在RI實現(xiàn)中,基本上由ConfigureListener完成初始化工作。而Servlet的任務只是簡單的傳遞請求參數(shù)而已,以及調用相應的Lifecycle而已。
            這里主要講了jsf 的整體架構包,下一篇主要分析一下jsf相關組件的包。

           
           



          posted on 2007-04-21 20:06 布衣郎 閱讀(1870) 評論(1)  編輯  收藏 所屬分類: web view技術

          FeedBack:
          # re: 了解jsf的架構 一
          2007-05-17 16:47 | 熊未來
          謝謝. weilai2@163.com  回復  更多評論
            

          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(12)

          隨筆分類(59)

          隨筆檔案(57)

          blog

          java

          uml

          搜索

          •  

          積分與排名

          • 積分 - 357698
          • 排名 - 155

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大关县| 稻城县| 延庆县| 南乐县| 贺州市| 梅河口市| 鄂托克旗| 渝中区| 龙游县| 马鞍山市| 高台县| 广河县| 鹿泉市| 涿鹿县| 神池县| 新平| 共和县| 德江县| 屯昌县| 星子县| 吉林市| 桑日县| 灵璧县| 阳原县| 南充市| 横峰县| 伊宁县| 临清市| 西乌珠穆沁旗| 南平市| 板桥市| 庆安县| 建始县| 云林县| 牡丹江市| 景德镇市| 喜德县| 盐边县| 平南县| 绵竹市| 儋州市|