ASP.NET内置对象(详细)
今天跑到图书馆看书,很多东西忘了,以至有时候求职面试时说不出来,便有空来看看书
以下是从《C#与ASP.NET程序设计教程》 王振武 著 一书上看到的,写的挺详细的,有时候会用到,便搬到这边来,共分享,学习;我只是知识的搬运工而已,哇咔咔!
内置对象名称 | 功能说明 |
Page | 对ASP.NET页面的内容进行处理 |
Requset | 获取客户端及服务端的相关信息 |
Response | 将HTTP相关数据及其有关信息发送到客户端 |
Server | 提供一系列与WEB相关的程序 |
Session | 在服务器的内存中储存客户会话的信息 |
Cookie | 在客户端储存与客户和网站相关的信息 |
Application | 在服务端储存应用程序多次访问的信息 |
Page对象的常用属性
IsPostBack:获取一个布尔类型的值,该值表示页面是否首次加载和访问;第一次访问为false,再次访问为true.
Form:获取页面的HTML窗体。
Validator:获取请求的页上包含验证控件的集合
Page对象的常用事件
PreInit:在页面初始化开始时的发生
Init:当服务器控件初始化时发生;初始化是控件生存期的第一步
InitComplite:在页初始化完成时发生
PreLoad:在页Load事件之前发生
Load:在服务器控件加载到Page对象中时发生
LoadComplete:在页生命周期的加载阶段结束时发生
PreRender:在加载Control对象之后,呈现之前发生
Unload:在服务器控件从内存中卸载时发生
Dispose:在从内存释放服务器控件时发生
DataBinding:当服务器控件绑定到数据源时发生
ASP.NET页面执行顺序大致如下:
- 页面初始化,触发Page_Init()事件
- 加载页面视图状态viewstate;viewstate用来维护控件自身的状态,是不能被用户访问的
- 加载页面,触发Page_Load事件
- 页面运行时服务器控件引发的事件
- 页面从内存中卸载。触发Page_UnLoad()事件
Request对象的常用属性
Form:获取窗体变量的集合
QueryString:获取HTTP查询字符串变量集合
ServerVariables:获取Web服务器变量的集合
Cookie:获取客户端发送的Cooike的集合
Browser:获取或设置有关正在请求的客户端浏览器功能的信息
CilentCertificate:获取当前请求的客户端安全证书
<form id="form1" runat="Server" method="Post"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </form>
获取控件的值:
利用表单传递数据(POST) Request.Form["字段名称"] 或 Requset["字段名称"];
利用UML来传递数据(GET) Request.QueryString["字段名称"];
ServerVariables属性的语法格式
Request.ServerVariables["环境变量名称"]
常用的服务器环境变量
- ALL_HTTP:传送给客户端浏览器的HTTP标题内容
- APPL_RAW:所有传送给客户端浏览器的原始信息
- APPL_MD_PATH:web应用程序的相对路径
- APPL_PHYSICAL_PATH:web应用程序的物理路径
- AUTH_PASSWORD:客户认证信息的密码
- CONTENT_LENGTH:发送到客户端的文件长度
- AUTH_USER:客户认证的用户账号信息
- AUTH_TYPE:用户是否有权访问被保护脚本的标识
- CONTENT_TYPE:发送到客户端的文件类型
- GATEWAY_INTERFACE:服务器端的CGI版本
- HTTP_ACCEPT_LANGUAGE:服务器端允许使用的语系
- HTTP_CONNECTION:服务器端的联机状态
- HTTP_HOST:服务器的主机名称
- HTTP_USER_AGENT:服务器端使用的Cookie
- HTTP_ACCEPT_ENCODING:服务器端允许使用的编码方式
- LOCAL_ADDR:服务器端的IP地址
- LOGON_USER:当用户在windows NT系统中登录时所记录的客户端信息
- QUERY_STRING:使用URL传递的数据
- REMOTE_ADDR:客户端的IP地址
- REMOTE_HOST:客户端的主机名称
- REQUEST_METHOD:传送web表单数据的方式:get/Post
- SCRIPT_NAME:当前ASP.NET文件的相对路径和文件名称
- SERVER_NAME:服务器端的IP地址和名称
- SERVER_POST:用http进行数据请求时,所用到的服务器端的端口号
- SERVER_PROTOCOL:服务器端使用的通信协议
- SERVER_SOFTWARE:服务器端使用的软件,版本和名称
- URL:ulr的相对网址
Browser属性 常用的浏览器属性
Request.Browser["浏览器属性名称"]
- Type:客户端浏览器的名称和主版本号(整数)
- BackgroundSounds:客户端浏览器是否支持背景声音
- Browser:客户浏览器的名称
- Version:客户浏览器的完整的版本号(整数和小数)
- MajorVersion:客户端浏览器的主版本号(整数)
- MinorVersion:客户浏览器的次版本号(小数)
- Platform:客户端使用的平台的名称
- Frames:客户端浏览器是否支持HTML框架
- Tables:客户端浏览器是否支持表格功能
- Cookie;客户端浏览器是否支持Cookie
- ClrVersion:客户端浏览器的.NET公共语言运行库的版本号
- JavaApplets:客户端浏览器是否支持Java小程序
- JavaScript:客户端浏览器是否支持JavaScript
- ActiveXControls:客户端浏览器是否支持ActiveX控件
- Win16:客户端浏览器是否为基于16位windows的计算机
- Win32:客户端浏览器是否为基于32位windows的计算机
ClientCertificate属性
- AllKeys:获取NameValueCollection对象中的所有键
- BinaryLssuer:获取或设置证书颁发者(以二进制表示)
- CertEncoding:获取证书的编码
- Certificate:获取一个字符串,该字符串包含整个证书内容的二进制流
- Cookie:获取客户证书的唯一ID(如果已提供)
- Falgs:一组标识,提供附加的客户证书的信息
- IsPresent:获取一个值,该值指示客户证书是否存在
- Issuer:一个字符串,包含有关证书颁发者信息的字段值的列表
- IsValid:获取一个值,该值指示客户证书是否有效
- Item:获取或设置NameValueCollection对象中的指定项
- KeySize:获取数字证书密钥大小的位数
- PublicKey:获取证书的公钥二进制值
- SecretKeySize:获取服务器证书密钥的位数
- SerialNumber:将证书序列号表示为连字符分隔的十六进制ASCII字符形式
- ServerIssuer:获取服务器证书的颁发者
- ServerSubject:获取服务器证书的接收方
- Subject:获取客户证书的接收方
- ValidFrom:获取证书生效的日期,此日期随区域设置的不同而不同
- ValidUntil:获取证书到期日期
void Page_Load(object sender,EventArgs e) { Sysem.Web.HttpClientCertificate HDC=Request.ClientCertificate; Label1.Text=HDC.IsPresent.ToString(); //...... }
Response对象 常用属性及方法
Buffer:获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个响应之后将其发送
BufferOutput:获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送
Cache:获取Web页的缓存策略(过期时间,保密性,变化子句)
Cookies:获取响应Cookie集合
Write() :向客户浏览器输出信息
Redirect(): 将客户端重新定向到新的URL
BinaryWrite(): 输出二进制信息
Clear() :清除缓冲区中的所有HTTP页面
End() :将当前所有缓冲的输出发送到客户端,停止该页面的执行,并引发Application_EndRequest事件
Flush() :向客户端发送当前所有缓冲的输出
当编译器执行到Response.Redirect时,会立即打开该方法指定的页面,而Response.Redirect方法之后的语句完全没有执行的机会!
对于Redirect(),只有Buffer和BufferOutput设置为true时才执行,如果Buffer和BufferOutput属性为假,服务器将直接把页面输出到客户端,而在已经输出的HTML元素之后,又想把页面引导至另外一个页面显示是不允许的!
当执行Response.Clear()时,服务器缓冲区的内容将全部被清除,在客户端浏览器中,只能看到该语句之后的执行结果。
当执行Response.End()时,程序的执行被终止,缓冲区中的现有内容会全部输出到浏览器上,且End方法后的语句不会被执行。
当执行Response.Flush()时,会将缓冲区中的全部内容都输出到浏览器中,同时将缓冲区清空,且Flush方法后的语句可以继续执行。
Server对象 常用属性及方法 Server对象由System.Web.HttpServerUtility类实现
ScriptTimeout: 获取或设置请求超时值(单位为s)
Execute() : 在当前请求的上下文中执行指定虚拟路径的处理程序
Transfer() :终止当前页面的执行,并为当前请求开始执行新页
MapPath() :返回Web服务器上执行虚拟路径对象的物理路径
Session对象 由System.Web.SessionState.HttpSessionState类实现
Timeout 属性:获取并设置在会话状态提供程序终止会话之前各请求之间所允许的时间(以min为单位),默认为20min
Abandon() 方法:清除Session对象
作用是记载一次会话中的用户信息;ASP.NET应用程序为每个用户都维护一个Seesion对象,Seesion对象常被用来储存需要跨页面使用的信息。
Seesion对象中存放的是Object类型,当进行读取操作时需要做类型转换。
Session["Key"]=Value;
Session对象存在于服务器的内存中,因此不能无限期的占用服务器资源。默认有效期为20min ,可以通过Session.Timeout=100;重新设置
Cookie对象
该也是用来储存用户信息,不同之处在于Session对象将信息储存在服务器的内存中,而Cookie将用户信息储存在客户端。
Name:获取或设置Cookie的名称
Value:获取或设置Cookie的Value
Expires:获取或设置Cookie的过期日期和时间
Add() :新增一个Cookie变量
Clear() :清除Cookie集合内的变量
Get() :通过变量名或索引得到Cookie的变量值
GetKey:以索引值类获取Cookie的变量名称
//创建Cookie //创建Cooike有俩种方法 Response.Cookie["userName"].Value="Admin"; Response.Cookie["userName"].Expires=DateTime.Now.AddDays(1);
如果不设置失效时间,Cookie信息不会被写到用户硬盘,浏览器关闭时将会丢弃,也可以如下创建Cookie:
HttpCookie aCookie=new HttpCoopie("userName"); aCookie.Value=DateTime.Now.ToString(); aCookie.Expries=DateTime.Now.AddDays(1); Response.Cookie.Add(aCookie); //创建多值Cookie Response.Cookie["userInfo"]["userName"]="Admin"; Response.Cookie["userInfo"]["lastVisit"]=DateTime.Now.ToString(); Response.Cookie.Expires=DateTime.Now.AddDays(1);
读取Cookie
if(Request.Cookie["userName"]!=null) str=Server.HtmlEncode(Request.Cookie["userName"].Value); //多值Cookie读取例子 HttpCookie aCookie=Request.Cookie["userInfo"]; string userName=aCookie.Value["userName"]; string lastVisit=aCookie.Value["lastVisit"];
修改Cookie
HttpCookie aCookie=Request.Cookie["userInfo"]; aCookie.Values["userName"]="one_User"; //或者 aCookie.Value.Set("userName","one_User"); Response.AppendCookie(aCookie);
删除Cookie
HttpCookie aCookie=Request.Cookie["userInfo"]; aCookie.Values.Remove("userName");
优点:
- 可配置到期规则
- 不需要任何服务器资源。Cookie储存在客户端并在发送后由服务器读取
- 简单性。Cookie 是一种基于文本的轻量结构,包含简单的键值对
- 数据持久性。可以设置最长持续时间
缺点
- 大小受到限制。大多数浏览器对Cookie的大小4096B,现在越发常见为8192B
- 用户配置为禁用。有些用户在浏览器上禁止了Cookie接收的功能
- 潜在的安全风险。Cookie可能被操作和篡改,导致存在安全风险,会依赖Cookie的应用程序响应失败
Application对象
与Seesion对象储存信息的方式类型,Application对象也是将用户信息存在服务器中。
不同:Application对象是一个公有变量,允许多个用户对它进行访问,而Session对象只允许某个特定的用户访问。
语法:Application["ApplicationName"]=变量/常量/字符串/表达式;
由于允许多个用户对Application对象进行访问,所以要实现对公有资源的同步访问需要采用加锁和解锁的方式
Application.Lock(); Application["ApplicationName"]=App_Name; Application.UnLock()
各位道友,认真看完了么?不能白看呀,解决下面习题吧
- 说明Response对象的Clear,End,Flush 方法的区别和联系
- 说明Session对象的Application对象的相同点和不同点
- 说明Cookie对象和Session对象的区别