ASP.NET 笔记(一)、概述
一、概述
ASP.NET 提供了完整的服务器端对象模型,可以在运行期间使用。ASP.NET 可以在其环境中把页面上的所有控件作为对象来访问。在页面上使用控件功能,生成 HTML 内容的 ASP.NET 通常称为 Web 窗体。
基本上,Web 窗体上控件的状态信息(包括在文本框中输入的信息、下拉列表中的选项等)存储在隐藏的 viewstate 字段中,这个字段是服务器生成的页面的一部分,并传送给用户。后续的操作称为会送(postback)。
二、ASP.NET Web 窗体
● 保留文件夹 App_Date,包含数据文件,例如 XML文件或数据库文件。
● 在 ASP.NET 页面中,只有一个服务器端<form>元素。
● runat="server" 表示窗体的处理将在服务器上进行,必须具备,否则窗体不会执行任何操作。
● 顶部的 <@% Page %> 标记,定义了页面特性。
2.1、流程
.aspx 布局(HTML)和ASP.NET 代码。
.aspx.cs 用于定制窗体操作的代码。
预编译站点流程:
● ASP.NET 处理器执行页面,确定对象创建,以实例化页面对象模型。
● 动态创建一个基类,包括页面上的控件成员和这件控件的事件处理程序(例如按钮单击事件)。
● 页面代码文件与这个基类合并,构成完整的对象模型。
● 编译所有代码,并告诉缓存起来。
● 生成 HTML,返回给用户。
2.2、ASP.NET 中常见的系统对象
Page 对象:页面自身的方式。
Request 对象:封装了由客户端生成的 HTTP 请求的细节(参数、属性和数据)。
● QueryStrings 属性收集了 Get 请求发送的数据。
● From 属性收集了 Post 请求发送的数据。
● ServerVariable(环境变量)集合中包含服务器和客户端的系统信息。在 Page 指令里添加属性 Trace="True" 可以追踪详细的环境变量信息。
● Params 集合包含了上三种方式的集合。
Response 对象:响应返回到 HTTP 客户端的输出。
● Write() 方法可以输出指定的文本内容。
● End() 方法可以使 Web 服务器停止当前的程序并返回结果。
● Redirect() 方法可以将页面重定向到另一页面。
Session 对象:作用于会话期的页面共享信息。
Session["xxxx"] = 值对象;
对象 = Session["xxxx"];
Cookie 对象:保持与客户端的共享信息方式。对应于 HttpCookie 类。
Response.Cookies["xxxx"].Value = 字符串变量;
string xxx = Request.Cookies["xxx"].Value;
Application 对象:作用于应用程序运行期提供共享信息。
Application["xxxx"] = 值对象;
值变量 = Application["xxxx"];
Server 对象:只是封装了一些 Web 服务器相关的常用方法。
Server.MapPath("~/"); //返回所在虚拟目录的物理路径
Server.HtmlEncode("xxxx"); //不编译 HTML 代码,直接在页面输出
Server.Encode("xxxxx"); //对 URL 地址的特殊字符进行编码
Server.Execute("xxxxx"); //执行参数指定的页面,执行完后返回本页
Server.Transfer("xxxx"); //执行参数指定的页面,执行完后结束
三、应用程序配置
应用程序定义为项目中的所有文件,由 Web.config 文件配置。
第一次创建应用程序(即收到第一个 HTTP 请求时),将创建 Application 对象。此时还将触发 Application_Start 事件,创建一个 HttpApplication 实例池。每个输入的请求都会接收到这样一个实例,执行请求的处理过程。与全局的 Application 对象不同,所有的 HttpApplication 实例完成任务后,就触发 Application_End 事件,应用程序终止运行,消除 Application 对象。
在单个用户使用 Web 应用程序时,会启动一个会话,与应用程序类似,会话将创建一个用户特定的 Session 对象,并触发 Session_Start 事件。在一个会话中,每个请求都将触发 Application_BeginRequest 和 Application_EndRequest 事件。在一个会话中可以多次触发这两个事件访问应用程序的不同资源。会话可以手动终止,也可以因为没有后续请求而超时终止。会话种子会触发 Session_End 事件,消除 Session 对象。