Net页面生命周期

上传人:206****923 文档编号:41713121 上传时间:2018-05-30 格式:DOCX 页数:7 大小:803.50KB
返回 下载 相关 举报
Net页面生命周期_第1页
第1页 / 共7页
Net页面生命周期_第2页
第2页 / 共7页
Net页面生命周期_第3页
第3页 / 共7页
Net页面生命周期_第4页
第4页 / 共7页
Net页面生命周期_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Net页面生命周期》由会员分享,可在线阅读,更多相关《Net页面生命周期(7页珍藏版)》请在金锄头文库上搜索。

1、Asp.Net 页面生命周期页面生命周期一什么是一什么是 Asp.Net 页面生命周期页面生命周期当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个 request 请求,服务器就会判断发送过来的请求页面, 完全识别 HTTP 页面处理程序类后,ASP.NET 运行时将调用处理程序的 ProcessRequest 方法来处理请求,来创建页面对象。通常情况下,无需更改此方法的实现,因为它是由 Page 类提供的。接下来被创建页面对象的ProcessRequest 方法使页面经历了各个阶段:初始化、加载视图状态信息和回发数据、加载页面的用户代码以及执行回发服务器端事

2、件。之后,页面进入显示模式:收集更新的视图状态,生成 HTML 代码并随后将代码发送到输出控制台。最后,卸载页面,并认为请求处理完毕。其中页面对象 ProcessRequest 方法 完成的这一系列事件的处理过程就是 Asp.Net 页面生命周期。二了解二了解 Asp.Net 页面生命周期的好处页面生命周期的好处了解个掌握 ASP.NET 页面生命周期是非常必要的,这有助于我们更加灵活的控制页面,以我们需要的方式编程开发。ASP.NET 页运行时,此页会经历一个又一个的事件链,每个事件链中执行不同的行为,这所有的行为共同组成我们所需要的页面。了解了生命周期也更有助于我们对程序调试中发生问题的地

3、方的定位。三详解三详解 Asp.Net 页面生命周期页面生命周期(一)先看看在开始一个页面生命周期之前,请求的页面经历了那些过程。如图所示:(一)先看看在开始一个页面生命周期之前,请求的页面经历了那些过程。如图所示:通信处理过程:当服务器运行正常的情况下,客户端(浏览器)向服务器端发送请求时,服务器端负责监听的套接字(socket),监听到有连接请求后,会为该客户端建立一个用于通信的套接字与客户端进行通信。当用户在浏览器向服务器发送请求时,浏览器会按照双方都约定好的网络传输层 http 协议,将请求转换成符合 Http 协议的请求报文。然后通过设备按照 TCP 协议发送到服务器。在服务器端接收

4、到请求报文后。会按照 Http 协议对报文进行解析。若请求的内容为静态的数据,服务器端直接将被请求的数据,按照 Http 协议生成响应报文后返回给浏览器。浏览器然后解析收到的报文。将页面显示到浏览器窗口。(注:最开始仅是显示一个 html 框架。经过多次请求。将 CSS 样式,图片逐一的加载进来形成一个完整的页面。这个过程,有多次的交互通信。当通信结束后会把用来通信的套接字销毁,因为 http 协议是一种无状态的通信。这样减轻了服务器的压力)当浏览器向客户端发送的请求为动态的。那么服务器(IIS)发现处理不了这种后缀名的文件时,会通过映射表到。响应实现了接口的可扩展程序 _isapi.dll,

5、 然后 _isapi.dll,又将请求转交给网站程序处理.网站程序调用httpRuntime 类的 processRequest 方法来处理:1 此类会分析接收到的请求报文.将请求报文封装到名称为 httpWorkerRequest 的类的属性中(便于其它地方以用).2 创建 HttpContext 对象.这个对象是当前所请求报文的上下文环境.它包含了所有的请求数据.其中有两个最重要类的对象:http.Request 和 http.Response. 在 httpRequest 对象中又包含了两个属性.Form(通过表单请求的数据参数).Querystring(通过 URL 传递的数据参数);

6、 通过索引器,可以找到参数的值. 在 httpResponse 对象中有一个 TextWriter 对象.在它里面保存的是被请求的页面在执行过程中要向浏览器输出的数据.可以通过 write 方法对其进行输出给浏览器。3 通过 HttpApplicationFactory 类的的一个静态方法。来为每个请求创建一个单独的 httpApplication 对象。在创建之前 HttpApplicationFactor 会到 HttpApplication 池中查看,有没有空闲的。若有直接用。没有的时候才创建新的HttpApplication。4 在 httpApplication 里运行己转换成接口

7、IhttpHandler 的通过反射被请求页面对象的 ProcessRequest 方法.方法执行过程如下方法执行过程如下:先执行 httpApplication 中的 processRequest 方法。在此方法中包含了要按照先后顺序执行的个委托事件 当在执行到第个事件的时候就开始创建被请求页面对象,在执行到第和第个事件之间时。就执行被创建的请求页面对象的 ProcessRequest 方法。(二)开始页面生命周期(二)开始页面生命周期1.页面生命周期的主要阶段包括: 阶段 事件/方法 页面初始化 Page_Init 加载 View State LoadViewState 回发数据处理 Lo

8、adPostData 页面加载 Page_Load 回发通知 RaisePostDataChangedEvent 回发事件处理 RaisePostBackEvent 页面预渲染 Page_PreRender 保存 viewstate SaveViewState Page 渲染 Page_Render Page 卸载 Page_UnLoad 2.页面生命周期的主要事件:PreInit:1.检查 IsPostBack 属性2.动态设置 Master Page3.动态设置 Theme4.设置控件的默认值(UniqueId 等)5.重新创建动态控件(初始化控件),初始化控件的值Init: 这个事件发生

9、在所有的控件被初始化,所有的皮肤设置被应用以后。它用来读取或者初始化控件属性。它能够用来注册一些 aspx 页面中没有指出的控件的事件。InitComplete: Use this event for processing tasks that require all initialization to be complete.PreLoad: 加载页面的 ViewState 和所有的控件,然后处理所有的包含在 Request 实例中的 postback 数据。Load: 这个事件可能是大家最熟悉的了。需要注意的是,Page 对象会递归的调用子控件的 onload 事件直到页面和所有的子控件被

10、加载完成。这个事件主要用来设置控件属性的值,建立数据库连接(通常不这么做)。Validation: 如果你的控件要求验证,验证会在这个阶段发生,这个时候你可以检查控件的 IsValid 属性。跟这个阶段关联的事件是 Validate,它有一个可以接受验证字符串群的重载方法(overload method),这个重载方法执行特定控件群的验证。Control events: 这个就不多说了,主要是处理控件的事件,例如 click。这也就让我们明白了每次我们 click 一个 Button 的时候,实际上是要先去执行 load 事件然后才执行 click 事件的,一般我们用!IsPostBack 来

11、判断一下从而避免执行不必要的加载逻辑。LoadComplete: 页面所有的控件都被加载以后执行,暂时没有想到用来干什么。PreRender: 在 HTML 被生成之前这是最后一个事件。每一个页面中的控件都有 PreRender 的过程。在这里对将要输出的HTML 结果进行最后一次修改。SaveStateComplete: 在这个时间发生之前,已经保存了所有控件和页面的,任何对 page 或者控件的改动都不会产生左右。暂时没想到用来干啥。Render: 它不是一个事件而是一个方法。工作就是把 HTML 写回客户端浏览器。UnLoad: 页面中的每一个控件都会发生这件事。在控件中,使用这个事件来

12、做清理工作,例如关闭数据库连接等。对与页面本身也是做清理工作,例如关闭打开的文件和数据库连接,或者结束日志或者其它指定的工作。需要说明的是,每次 Request 都会创建一个全新的 Page 类的实例,所以在页面中的自己定义的字段是不能在两次 request中传递值的,需要使用 viewstate 来存储。页面处理的整体过程图解页面处理的整体过程图解四四.什么地方用到了什么地方用到了 Asp.Net 页面生命周期页面生命周期对于这个问题,在面试中我遇到过,我觉得问这个问题有点不正常。我当时回答的是。Viewstate 对值的记录上用到了生命周期,总是觉对不太对。生命周期理解了,并不代表我们会用

13、它。只有理解了,我们才会在以后的工作中慢慢真正的懂它,用它。总结:总结:计划了好久,一直没有写,今天下定决心一定要写了。终于完成了。我看有一位博友的用三张图片详解 Asp.Net 全生命周期还不错。用图结构清晰,更便于理解。故贴到下面便于博友们和以后自己的查看。原文地址:http:/ 第一张图片从全局说明从客户端发出一个 Request 请求,服务器 windows 内核中的 HTTP.SYS 组件接收该请求开始到IIS 处理完该请求并响应到客户端结束。2 第二张图片为图 1 中 Http 处理管线的详细步骤3 第三张图片为图 2Http 处理管线中调用处理程序(HttpHandler, 此处为 Page 对象)的详细生命周期过程。图 1:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号