爪哇一角

          共同探討STRUTS#HIBERNATE#SPRING#EJB等技術
          posts - 3, comments - 6, trackbacks - 0, articles - 99
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Struts,JSF,MVC等實現原理

          Posted on 2010-06-10 15:37 非洲小白臉 閱讀(358) 評論(0)  編輯  收藏 所屬分類: 框架文章
          JSF六個底層原理:
          --重建組件樹:jsf應用里的jsp頁面被表示成一個組件樹。在這個階段里,通過重建這棵樹開始LifeCycle處理過程。每個組件樹都有一個在整個應用程序范圍里唯一的標識符,此標識符是所請求URI的路徑信息部分
          --應用請求值:在這個階段,使用請求里的當前值來更新每個組件的本地值,這些值可能來自請求參數,請求的包頭及cookie。在這個階段的處理中,組件可以往事件隊列里加入某些事件,這些事件可在隨后的處理階段處理
          --處理驗證:當每個組件的本地值被更新后,在此階段中LifeCycle對象會驗證這些值的合法性。要求驗證的組件必須提供驗證邏輯的實現。作 為選擇,開發人員可以為一個組件注冊0個或者多個驗證器。如果發現外部驗證器,那么還會應用這些外部驗證器里的驗證邏輯來驗證本地值。
          --更新模型值:只有當組件樹中所有的組件的本地值都通過驗證后,才有可能到達該階段。在這個階段中,LifeCycle更新呢應用的模型數據。組件在這個節點也可以排列事件。
          --調用應用:在這個階段,JSF實現處理所有應用層次的時間。
          --呈現響應:在這個階段,JSF實現將相應發揮客戶端。

          JSF的生命周期:
          恢復視圖--應用請求值--處理驗證--呈現響應--調用應用程序--更新模型值

          JSF的工作方式:
          JSF應用是通過處理由頁面中組件處罰的事件來工作的。這些事件是由用戶的動作引起的。(JSF是事件驅動的)
          --創建FacesContext
          --把控制權交給LifeCycle
          --分六個階段處理FacesContext

          ajax原理:
          -----一個異步無刷新的技術,主要是通過在客戶端瀏覽器內置的XMLHttpRequest對象,發送和接收請求。
          XMLHttpRequest對象先把請求發送給瀏覽器中內置的ajax引擎,通過引擎轉發給對應的服務器,并且引擎還要負責接收服務器的返回, 和服務器進行交互,即時獲取服務器的狀態。還要負責把服務器的返回發送給客戶端。客戶端通過XMLHttpRequest對象對返回結果進行解析


          Http原理:
          ----最常見的網絡傳輸協議。速度快,無狀態。
          ----不管客戶端用什么頻率去請求服務器的資源,服務器只會去響應,而不會去保存客戶端的任何狀態


          Struts原理:
          ----web服務器啟動的時候讀取web.xml文檔,創建ActionServlet對象。
          ----當客戶端請求發起是,ActionServlet攔截請求,截取特定的請求,獲取請求的名稱。
          ----然后讀取Struts讀取配置文件,根據請求的名稱讀取相關信息,保存在moduleConfig對象中
          ----找到其中的ActionMapping和path屬性,來進行請求是否匹配的判斷
          ----如果發現有對應的path,則將請求轉到對應的Action,并且創建ActionForm對象,獲取從請求中傳遞來的參數,將參數保存在ActionForm中,調用Action的execute方法
          ----ActionServlet接收Action處理完業務邏輯返回的結果---ActionForward對象
          ----然后在配置文件找到對應的forward路徑,將顯示轉發或者重定向到找到的路徑。

          Servlet MVC原理:
          ----服務器啟動的時候讀取web.xml,創建servlet對象。
          ----當客戶端發起請求的時候,servlet負責攔截指定的請求,根據請求的方式是get還是post調用對象的doGet或者doPost方法。
          ----doGet,doPost中通過request或者response控制頁面的轉發或者重定向
          主站蜘蛛池模板: 四会市| 松滋市| 辽中县| 米林县| 皋兰县| 清镇市| 奉化市| 宜兰县| 和平区| 金湖县| 登封市| 宁陕县| 武汉市| 萍乡市| 新安县| 湄潭县| 宜州市| 札达县| 普安县| 上高县| 宝应县| 娄烦县| 应用必备| 河北省| 贵州省| 绥滨县| 屯昌县| 洪雅县| 社旗县| 海城市| 贵州省| 安远县| 当雄县| 商丘市| 屏山县| 米脂县| 宁陕县| 台湾省| 满洲里市| 承德市| 北安市|