客户每次请求Web页面过程
客戶每次請求頁面時——通過最初請求或者回送——所發(fā)生的事情。
??? 圖中顯示了有5個主要事件:初始化、加載、預(yù)提交、提交、處理
我們可以為每個步驟添加代碼。
1.初始化:
ASP.NET處理器第一次接到頁面請求時,首先會觸發(fā)Init事件。這個事件可以構(gòu)建頁面架構(gòu),并準(zhǔn)備即將提交的頁面控件。OnInit()方法是處理這個事件的默認(rèn)方法。
Init事件之后,是兩個較小的進(jìn)程。第一,如果存在試圖狀態(tài),就加載頁面。也就是說,ASP.NET處理器會查找隱藏在<input name="__VIEWSTATE">標(biāo)記中的頁面內(nèi)容所包含的、并被包括在頁面請求中的數(shù)據(jù)。如果找到了這種數(shù)據(jù),就對數(shù)據(jù)進(jìn)行讀取并編碼,準(zhǔn)備在(重新)生成頁面時使用。第二,處理回送數(shù)據(jù)。在用戶觸發(fā)一個服務(wù)器端事件時,Web窗體會觸發(fā)一個回送,這個回送含有服務(wù)器用以進(jìn)行處理的信息。
2.頁面加載:
加載頁面時,觸發(fā)的主要事件就是Load事件。處理Load事件的默認(rèn)方法是OnLoad事件處理程序;然而,VS.NET通常要在InitializeComponent()方法中添加一行代碼,指出Load事件由Page_Load()方法處理的。
??????? private void InitializeComponent()
??????? {???
??????????? this.Load += new System.EventHandler(this.Page_Load);
??????? }
可以向Page_Load()方法添加代碼,以控制頁面加載時所發(fā)生的事件。
3.事件處理:
在這個過程中,ASP.NET處理器要應(yīng)付一系列被觸發(fā)并經(jīng)過處理的事件。如果頁面正在被回送,還會包括用戶觸發(fā)的事件。
PreRender事件也是在這個階段被處理的。處理PreRender事件的默認(rèn)方法是OnPreRender(),這里要編寫代碼,完成提交頁面的方式的最終改變(這個變化可以保存在回送中,它和下一個步驟中Render()事件處理程序所引起的變化不同)。然后,把這個頁面狀態(tài)保存到即將返回給頁面的試圖狀態(tài)中。
4.提交:
在這個過程中,通過生成瀏覽器必需顯示的HTML,獲取用以提交將被發(fā)送到瀏覽器的頁面代碼。通過向Render()事件處理程序添加代碼,可以生成更多的最終改變,這些改變能夠影響頁面的提交方式,因為Render()事件處理程序可以處理Render事件(注意命名約定中的變化:事件處理程序一定不能被命名為OnRender())。
5.處理無用的對象:
最后這個階段含有用于執(zhí)行清理操作的代碼,清理工作是通過處理不再使用的對象(比如那些已經(jīng)完成的數(shù)據(jù)鏈接)完成的。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Bear-Study-Hard/archive/2006/04/17/376997.html
總結(jié)
以上是生活随笔為你收集整理的客户每次请求Web页面过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于社区气质
- 下一篇: 看到碟摊上有D版的《阿猫阿狗2》