JSF教程(4) 生命週期概述

2021-06-21 21:18:07 字數 1498 閱讀 3557

對於任何乙個應用而言其完成自身功能的各種步驟就是她的生命週期,一般是指從開始建立(這裡可以是元件、控制項等等任何應用可能要用到的物件)經過中間一系列的步驟到最終的結束(呈現內容)。其實以往接觸的

cs系統也有宣告週期,只不過不需要開發者去關注罷了。比如在使用

vb開發

cs架構的系統開發者不需要關注哪個控制項是什麼時候建立的,什麼時候顯示的,什麼時候在記憶體中被銷毀的等等這些事情。所有的應用都有其生命週期,在

web應用的生命週期中有下面幾個環節是最常見的,當然在

jsf中對於下面的幾個環節也是必不可少的。

處理請求:將request當中的各個資訊進行收集

轉化引數:將得到的引數進行轉化,轉化為可以儲存的格式,比如將頁面中得到的字串轉換成數值型別

更改或者儲存狀態:主要是為後面的請求做準備

渲染頁面:通過包含有效資料的html將頁面呈現出來

jsf的實現者將其生命週期封裝,如果使用者僅限於使用的話可以不用關心其內部原理(就像在cs系統中那樣),但是如果使用者想開發自己的元件那麼就必須對jsf的宣告週期進行深入得了解。jsf支援開發者開發自己的元件,這也是為了最大限度的讓開發者重用**,提高web程式的可維護性(關於jsf的其他優勢將在後續的部落格中詳細論述),下面就來詳細介紹乙個jsf的生命週期。

就像上面說的那樣,任何生命週期都又開始與結束(廢話),每次請求乙個頁面就是生命週期的開始,被請求的頁面呈現在使用者面前(這裡不考慮中途遇到的異常等問題)就標誌著生命週期的結束。用專業一些的話來說就是「jsf的宣告週期開始於客戶端的通過http請求某個頁面,結束於伺服器返回html**到客戶端。」

在jsf中整個生命週期可以分為兩大部分——execute和render,前者是在伺服器端執行一系列的**,後者是將結果反映到頁面上說渲染或者說重新整理頁面都可以(切記翻譯成中文且忘記中文意思就是學習計算機英語的最好方式)。

對於execute和render的理解

對於bs系統而言要做的事情就是將資料傳送給伺服器,然後伺服器經過一些的處理將處理後的資料展示出來。那麼對映到上面說的兩個階段就是,將資料傳給伺服器而後伺服器內部通過**進行對資料的各種處理就是execute階段。在這個階段中無論是通過get方式或者是通過post方式(其實還有其他的方式)提交的資料在伺服器端被處理(execute)。將處理後的資料通過html顯示在瀏覽器上可以簡單的理解為render過程(此處不考慮其他異常情況),我們都知道在瀏覽器上那花花綠綠的頁面其實都是乙個個簡單的字元,只不過這些字元是符合一定標準的(html),從而能被瀏覽器解析成呈現在我們面前的頁面。所以說整個render過程就是將要顯示的資料通過html的形式傳送給客戶端(瀏覽器)的過程。

大致了說了一下jsf的宣告週期,巨集觀的生命週期不僅僅對我們即將要詳細了解的jsf的生命週期有指導性的作用,還會幫助我們更深刻的理解http,理解bs。知識是需要在磨合的過程中才會被消化,吸收,排洩(寫部落格:d)的。

1 生命週期

not running 非執行狀態 not running inactive active background suspended inactive 前台非活動狀態 active 前台活動狀態 background 後台狀態 suspended 掛起狀態 not running inactive ...

JSF生命週期

1 恢復檢視 restore view 根據請求訪問的檢視id 頁面位址 重建jsf 元件dom樹。如果jsf頁面是第一次訪問,也即是試圖id在記憶體中沒沒有存根,那麼jsf會在記憶體中構建jsf元件的dom樹。但是元件並沒有值,只是乙個模子。jsf元件獲取請求中的屬於自己的值,包括local值,和...

jsf生命週期

1,restoreviewphase 過載檢視階段 如名所述,這一階段過載畫面的檢視結構。首先試圖從session,或cookie裡還原jsf元件數,不能過載檢視的話,jsf則認為該頁面為當前使用者第一次請求,直接跳轉到renderview 畫面重畫階段 對畫面進行重畫。這一階段主要把從瀏覽器過來的...