代码改变世界

客户每次请求Web页面过程

2006-04-17 12:01  努力学习的小熊  阅读(856)  评论(0编辑  收藏  举报

客户每次请求页面时——通过最初请求或者回送——所发生的事情。


    图中显示了有5个主要事件:初始化、加载、预提交、提交、处理

我们可以为每个步骤添加代码。

1.初始化:

ASP.NET处理器第一次接到页面请求时,首先会触发Init事件。这个事件可以构建页面架构,并准备即将提交的页面控件。OnInit()方法是处理这个事件的默认方法。

Init事件之后,是两个较小的进程。第一,如果存在试图状态,就加载页面。也就是说,ASP.NET处理器会查找隐藏在<input name="__VIEWSTATE">标记中的页面内容所包含的、并被包括在页面请求中的数据。如果找到了这种数据,就对数据进行读取并编码,准备在(重新)生成页面时使用。第二,处理回送数据。在用户触发一个服务器端事件时,Web窗体会触发一个回送,这个回送含有服务器用以进行处理的信息。

2.页面加载:

加载页面时,触发的主要事件就是Load事件。处理Load事件的默认方法是OnLoad事件处理程序;然而,VS.NET通常要在InitializeComponent()方法中添加一行代码,指出Load事件由Page_Load()方法处理的。

        private void InitializeComponent()

        {   

            this.Load += new System.EventHandler(this.Page_Load);

        }

可以向Page_Load()方法添加代码,以控制页面加载时所发生的事件。

3.事件处理:

在这个过程中,ASP.NET处理器要应付一系列被触发并经过处理的事件。如果页面正在被回送,还会包括用户触发的事件。

PreRender事件也是在这个阶段被处理的。处理PreRender事件的默认方法是OnPreRender(),这里要编写代码,完成提交页面的方式的最终改变(这个变化可以保存在回送中,它和下一个步骤中Render()事件处理程序所引起的变化不同)。然后,把这个页面状态保存到即将返回给页面的试图状态中。

4.提交:

在这个过程中,通过生成浏览器必需显示的HTML,获取用以提交将被发送到浏览器的页面代码。通过向Render()事件处理程序添加代码,可以生成更多的最终改变,这些改变能够影响页面的提交方式,因为Render()事件处理程序可以处理Render事件(注意命名约定中的变化:事件处理程序一定不能被命名为OnRender())。

5.处理无用的对象:

最后这个阶段含有用于执行清理操作的代码,清理工作是通过处理不再使用的对象(比如那些已经完成的数据链接)完成的。