1.先上几张原理图着重理解:

现在针对第四副图原理进行解析:

流程:

1.浏览器发送请求

2.服务器软件(IIS)接收,它最终的目的就是为了向客户输出它请求的动态页面生成的html代码。

3.服务器不会处理类和动态页面,所以找扩展程序

4.交给FrameWork,它其中有个类HttpRuntime,其中有个ProcessRequest()方法

5.ProcessRequest()创建了HttpWorkerRequest对象,把请求报文都封装在其中(HttpWorkerRequest中有个指针,它指向了扩展程序,待把后续返回的响应报文返回给IIS)

6.创建HttpContext对象(HttpRequest和HttpResponse)请求的报文被拆分成了不同属性而保存在HttpRequest中,方便程序员使用;HttpResponse准备了很多属性,用来保存要生成的响应报文的各个部分。

7.framework要运行页面对象,首先要创建HttpApplication对象,负责处理整个请求,页面中执行需要环境、安全验证等都封装在其中。

8.它要调用ProcessRequest (HttpContext context) 执行19个(事件)委托对象,也被叫做请求轨道。

9.其中在执行到第8个事件中创建请求的页面类对象,并转成HttpHandler接口对象

10.在11和12事件之间调用了ProcessRequest方法,最后有个finshRequest方法,结束了请求,生成响应报文,再通过HttpWorkerRequest的指针调用扩展程序再调用IIS,IIS最后将响应报文发回给浏览器

此时一般处理程序流程已经结束。

asp.net页面运行的整体流程和一般处理程序一样,不同之处在于它调用了Page类的ProcessRequest方法,创建了页面控件树,执行了页面声明周期。

流程:

1.调用了Page类的ProcessRequest方法

2.打造页面控件树(_buildControTree()方法)

3.执行页面生命周期(也就是200多行代码),里面有预定义好的很多种方法,方便程序员在事件中注册方法,实现自己的功能

3.1 LoadState加载状态

3.2 PageLoad 页面加载

3.3 SaveState

4.调用Render方法,生成html代码

注意:页面自动事件注册机制-----在页面的开头部分,有AutoEventWireup = "true" ,即开启自动事件注册机制

开启自动事件注册机制后,只要遵循对应约定的格式,如Page_Load,

当页面声明周期调用PageLoad事件的时候,也就调用了我们的Page_Load方法

asp.net运行机制

1.当第一次访问页面时,页面请求首先依次经过HttpModuls和HttpHandler的处理,服务器接收到HttpHandler的请求后 将跳转到需要访问的页面,然后Asp.net Engine 负责找到这个页面后台的类,并实例化为一个临时对象。在此过程中会触发一系列的事件,一部分事件需要经过对象中的方法进行处理,之后服务器会将这个处理后 页面交给Response对象,然后再由Response对象将这个页面发送到客户端

2.因为服务器之间的会话已经建立,所以在这个页面上重新提交一些信息并再次向服务器发送请求时,是不用再经过初始化页面这一部分的工作的。故第二条线路是依次提交HttpModuls和HttpHandler请求,然后与临时对象交互并返回。

3.第三条路线与第二条的不同之处在于,在处理请求时,如果涉及到需要调用asp.net Cache时,临时对象直接从asp.net缓存中提取信息并返回。

4.第四条线路是在刷新页面的时候,服务器接收到并发现这个请求曾经处理过,并将处理结果存储到由一个由默认的HttpModule管理的输出缓存中。此时可以直接从缓存中提取信息并返回,无须重新处理一遍。


人都知道是有生命周期的,一个人从呱呱落地到慢慢老去经历了一个生命轮回,这是生命的一个周期。
同样ASP.NET开发的WEB页面也有它自己的生命周期,从生成到销毁,也经历了不同的阶段和过程。对于ASP.NET页面生命周期中将执行一些列处理步骤。
这些步骤包括初始化、实例化控件、还原和维护状态、运行时间处理程序代码及呈现。
一般来说,也要经历如下各个阶段
1.页请求:页请求发生在页面生命周期开始之前,用户请求页时,ASP.NET将确定是否需要分析和编译页
2.开始:在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性
3.页初始化:在页初始化期间,可以使用页中的控件,并设置每个控件的UniqueID属性。
4.加载:在加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
5.验证:在验证期间,将调用所有验证程序控件的Validate方法,此方法将设置各个验证程序控件和页的IsValidate属性。
6.回发事件处理:如果请求是回发请求,则将调用所有事件处理程序
7.呈现:在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用Render方法,它会提供一个文本编写器,用于将控件的输出写入页的Response属性和OutputStream中
8.卸载:完全呈现页并将页发送至客户端、准备丢弃该页后,将调用卸载。此时,将卸载页属性并执行清理。

web页面的生命周期的更多相关文章

  1. WEB页面的生命周期,DOMContentLoaded,load,beforeunload,unload

    简言 理解WEB页面的生命周期,文档加载事件及顺序对WEB开发有十分的重要意义.如果不理解,在元素未加载就提前操作元素,则得不到想要的结果.而如果页面完全加载完成后,再进行操作,则又会影响用户体验. ...

  2. 一个Web页面的生命周期 ,面试常常被问到

    常规页生命周期阶段 一般来说,页要经历下表概述的各个阶段.除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于页.有关更多信息,请参见 ASP.NET 应用程序生命周期概述. ...

  3. 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期

    [源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...

  4. 【Framework】深入研究Asp.net页面的生命周期

    介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操 ...

  5. Web应用的生命周期(客户端)

    典型的一个Web应用的生命周期从用户在浏览器输入一串URL,或者单击一个链接开始(就是访问一个页面).而这个生命周期的结束就是我们关闭这个页面. 响应流程: 用户输入一个 URL(生命周期开始) 客户 ...

  6. 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏

    原文:与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏 [索引页][源码下载] 与众不同 wind ...

  7. ASP.NET一个页面的生命周期

    在学习ASP.NET页面生命周期前,需要先了解之前的ASP.NET的基本运行机制,在理解ASP.NET基本运行机制原理后,下面将介绍ASP.NET的生命周期中,页面从创建到处理结束的过程中ASP.NE ...

  8. JSP页面的生命周期

    JSP页面的生命周期:我们假设要访问的jsp页面是index.jsp.首先,用户发出请求index.jsp:服务器会判断是否是第一次请求:如果是的话,JSP引擎会把该JSP文件转换成为一个Servle ...

  9. 「小程序JAVA实战」 小程序私有页面的生命周期以及导航(10)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-10/ 之前讲了小程序全局的生命周期,今天咱们说说单个页面的生命周期!源码:https://gith ...

随机推荐

  1. zookeeper使用和原理探究(一)(转)

    zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的<The Chubby lock servic ...

  2. IIS里面网站停止了,不能启动

    IIS里面网站文件夹显示红色的叉叉,停止了,不能启动,所有站点都停止了: 原来是Word wide web publish service 服务停止了,启动就好了

  3. 【JS】Intermediate4:JSON

    1. JSON(JavaScript Object Notation) A set of text formatting rules for storing and transferring data ...

  4. Html笔记(一)概述

    Html就是超文本标记语言的简写,是最基础的网页语言 Html是通过标签来定义的语言,代码都是由标签所组成 Html代码不用区分大小写 Html代码由<html>开始</html&g ...

  5. 如何使用 RDP 或 SSH 连接到 Azure 虚拟机

    使用 RDP 或 SSH 连接到 Azure 虚拟机 本文简要概述了如何使用远程桌面控制协议 (RDP) 或安全外壳(Secure Shell,SSH)客户端登录 Azure 虚拟机.它还包括要求和故 ...

  6. 【Java基础】抽象类和抽象方法的总结

    什么是抽象类 抽象类是相同概念实体的一种抽象,Java中用关键字abstract来定义抽象类和抽象方法. 什么是抽象方法 只有方法的声明,没有方法的具体实现的方法. 抽象类和抽象方法的特点 抽象类和抽 ...

  7. POJ-2296 Map Labeler 2sat

    题目链接:http://poj.org/problem?id=2296 二分+2sat,每个点的上下两个方向为2sat的两个状态. //STATUS:C++_AC_16MS_536KB #includ ...

  8. [Windows Server] 在 Windows Server 2012 上安裝 .NET Framework 3.5 - 摘自网络

    官方: Applies To: Windows 8, Windows 8.1 For a Windows Server® 2012 core installation that is not conn ...

  9. What's the difference between all the Selection Segues

    relationship -A "relationship" segue is the segue between a container view controller and ...

  10. hdu 2102 A计划(优先队列+dfs)

    改了好久,上午来实验室打出来了,运行就是不对,一直找啊找!还是没找到,最后突然停电了,打好的代码还没保存呢! 刚才来的时候又重新打了一遍!!!结果一个小小的错误wrong了好久!!! 在dfs值返回时 ...