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. html总结----------------------看这个就够了

    HTML是我们学习Javaweb的第一步 很好地掌握门课是非常有必要的!下面就是我在听资深老师讲课的笔记!个人觉得非常不错!希望可以帮助到那些在学习javaweb路上的 朋友们!从今天 陆续的整理这门 ...

  2. oracle 实例名和服务名以及数据库名区别

    一.数据库名什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样.他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名.在数据库安装或创建完成之后, ...

  3. codevs 3160 最长公共子串(SAM)

    3160 最长公共子串   题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度. 输入描述 Input Description 读入两个字符串 输出描述 Ou ...

  4. 【ACM/ICPC2013】树形动态规划专题

    前言:按照计划,昨天应该是完成树形DP7题和二分图.最大流基础专题,但是由于我智商实在拙计,一直在理解树形DP的思想,所以第二个专题只能顺延到今天了.但是昨天把树形DP弄了个5成懂我是很高兴的!下面我 ...

  5. Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1

    One of the added bonuses of Dynamics CRM is its ability go where you go! With the Spring ’14 Wave Up ...

  6. HDU4349--Xiao Ming's Hope(数论)

    输入一个n(1<=n<=108),求C(n,0),C(n,1),C(n,2)...C(n,n)有多少个奇数. Lacus定理 http://blog.csdn.net/acm_cxlove ...

  7. Android核心基础(四)

    1.联系人表结构 添加一条联系人信息 package com.itheima.insertcontact; import android.app.Activity; import android.co ...

  8. JS跨域笔记

    什么是跨域,跨域是指不同域之间相互访问,只要协议.域名.端口有任何一个不同,都被当作是不同的域. 对于端口和协议的不同,只能通过后台来解决,前台是无能为力的. 受浏览器同源策略的限制,本域的js不能操 ...

  9. 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~

    继续延续坑爹标题系列.其实只是把apress.pro.asp.net.mvc.4.framework里的CHAPTER 13翻译过来罢了,当做自己总结吧.内容看看就好,排版就不要吐槽了,反正我知道你也 ...

  10. tomcat热部署,更改java类不用重新加载context

    修改类后,tomcat热部署会重新加载整个项目的context,影响开发效率.网上查的大多数是将server的modules标签中Auto Reload项改为Disabled,但是没有效果. 使用以下 ...