頁面的生命週期

2021-05-23 18:21:43 字數 1392 閱讀 2425

1 頁面的生命週期的九個階段

1頁面初始化:頁面被呼叫來初始化所有傳入頁面請求的生命週期所需的設定init()

2載入檢視狀態:恢復以前頁面儲存的狀態,即viewstate屬性,通過重寫loadviewstate方法實現

3載入回送資料:頁面載入所有在request中快取的傳入的資料,相應的更新頁面和控制項屬性.(沒有相關聯的事件)

4載入使用者**:對應load事件

5傳送回傳改變通知:根據當前回傳和前一次回傳之間的狀態改變進行事件改變

6處理回送事件:執行與導致回傳的客戶端事件相關聯的.aspx**.類似於onclick事件.

7預呈現:在輸出被呈現前執行任務更新處理.對應onprerender事件

8頁面呈現:建立呈現在客戶端的html頁面.通過重寫render方法實現

9頁面解除安裝:在釋放page物件前執行任何最後的清理工作(如關閉檔案和資料庫連線)通過重寫onunload方法.

2 頁面的檢視狀態

當頁面被請求來時,他所包含的類和伺服器控制項負責執行請求,然後將html返回到客戶端.由於http協議的原因,客戶與伺服器之前的通訊是無狀態,無連線的.然而現實世界中的應用程式需要在對同一頁面的連續請求中保持一些狀態.這時asp.net提供一種內建的機制,以一種透明的方式儲存和恢復頁面的狀態.通過這種方式.儘管底層協議是無狀態的,客戶端仍是乙個連續的處理過程.當然這是一種假象.

這種具有連續性的假象是由asp.net頁面的檢視-狀態特性造成的.是在頁面的設計和工作方式基礎上的一種假設.簡而言之,在將內容呈現到html之前,頁面將其本身以及需要儲存的組成頁面的控制項的所有狀態資訊進行編碼,並儲存到乙個隱藏域中,當頁面被回傳時,狀態資訊被從隱藏域中反序列化,然後用於初始化在頁面布局中宣告的伺服器的例項.

檢視狀態與頁面的例項相關,因為它嵌入到html中.這樣,控制項使用它們上一次在檢視狀態被建立時(即上一次頁面被呈現給客戶的值)的相同的值進行初始化.此外,頁面生命週期中的乙個步驟就是儲存的狀態與任何客戶端行為導致的更新進行合併.當頁面在回傳後執行時,頁面將發現它處於乙個有狀態的,已被更新的上下文中,就像在乙個連續的點到點連線上工作一樣.

在此基礎上進行乙個假設:頁面總是將狀態傳遞給自己,並來回攜帶狀態.

頁面的檢視狀態呈現為乙個隱藏域,叫做_viewstate,並使用base64編碼的文字填充.

3 頁面的回傳事件

回傳事件包含三個過程 1狀態恢復 2處理伺服器端事件  3呈現頁面

狀態恢復包含了兩大部分:1載入檢視狀態,2載入回傳資料.

回專事件的目標是執行伺服器端**來響應客戶端輸入.

執行完伺服器端**後, 頁面開始其呈現狀態,首先觸發prerender事件,然後將viewstate物件內容(即頁面上活躍的各個控制項的當前狀態)序列化為乙個base64字串.然後生成html**,base64字串成為_viewstute隱藏域的值.此後開始下一次迴圈.

頁面的生命週期

網頁的生命週期 頁面處理發生事件的序列,編寫的 在正確的時間被執行 基類 page 提供了很多事件來實現 init事件 狀態恢復時觸發,為處理請求做好準備 load事件 網頁呈現前出發,用於初始化控制項,處理post請求時對控制項層次結構的改變 基本方案 首次請求 ispostback 初始化控制項...

JSP頁面的生命週期

jsp頁面的生命週期 當使用者向伺服器發出乙個請求時,首先判斷是否是第一次請求,如果是,則將該jsp檔案轉換成乙個servlet 生成位元組碼檔案,並執行jspinit 進行初始化,如果不是,則直接生成位元組碼檔案 最後解析執行,執行jspservice 來處理客戶端的請求 對每乙個請求,jsp引擎...

JSP頁面的生命週期

有三個步驟 1.解析jsp檔案 2.將jsp檔案轉化為servlet 3.編譯servlet 這裡,首先判斷是不是第一次請求,如果是的話,也就是說jsp還沒有被編譯過,jsp引擎就把相應的jsp檔案編譯成servlet,生成位元組碼檔案,並呼叫jspinit 如果不是第一次請求,說明已經有了位元組碼...