内置对象应用程序配置和缓存.docx
- 文档编号:26681192
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:43
- 大小:261.53KB
内置对象应用程序配置和缓存.docx
《内置对象应用程序配置和缓存.docx》由会员分享,可在线阅读,更多相关《内置对象应用程序配置和缓存.docx(43页珍藏版)》请在冰豆网上搜索。
内置对象应用程序配置和缓存
第13章ASP.NET内置对象,应用程序配置和缓存
Web应用程序在传统的意义上来说是无状态的,Web应用不能像WinForm那样维持客户端状态,所以在Web应用中,通常需要使用内置对象进行客户端状态的保存。
这些内置对象能够为Web应用程序的开发提供设置,配置以及检索等功能。
13.1ASP.NET内置对象
在ASP的开发中,这些内置对象已经存在,这些内置对象包括Response、Request、Application等,虽然ASP是一个可以称得上是“过时的”技术,但是在ASP.NET开发人员中依旧可以使用这些对象。
这些对象不仅能够获取页面传递的参数,某些对象还可以保存用户的信息,如Cookie、Session等。
13.1.1Request传递请求对象
Request对象是HttpRequest类的一个实例,Request对象用于读取客户端在Web请求期间发送的HTTP值。
Request对象常用的属性如下所示。
❑QueryString:
获取HTTP查询字符串变量的集合。
❑Path:
获取当前请求的虚拟路径。
❑UserHostAddress:
获取远程客户端IP主机的地址。
❑Browser:
获取有关正在请求的客户端的浏览器功能的信息。
1.QueryString:
请求参数
QueryString属性是用来获取HTTP查询字符串变量的集合,通过QueryString属性能够获取页面传递的参数。
在超链接中,往往需要从一个页面跳转到另外一个页面,跳转的页面需要获取HTTP的值来进行相应的操作,例如新闻页面的news.aspx?
id=1。
为了获取传递过来的id的值,则可以使用Request的QueryString属性,示例代码如下所示。
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
String.IsNullOrEmpty(Request.QueryString["id"]))//如果传递的ID值不为空
{
Label1.Text=Request.QueryString["id"];//将传递的值赋予标签中
}
else
{
Label1.Text="没有传递的值";//提示没有传递的值
}
if(!
String.IsNullOrEmpty(Request.QueryString["type"]))//如果传递的TYPE值不为空
{
Label2.Text=Request.QueryString["type"];//获取传递的TYPE值
}
else
{
Label2.Text="没有传递的值";//无值时进行相应的编码
}
}
上述代码使用Request的QueryString属性来接受传递的HTTP的值,当通过访问页面路径为“http:
//localhost:
29867/Default.aspx”时,默认传递的参数为空,因为其路径中没有对参数的访问。
而当访问的页面路径为“http:
//localhost:
29867/Default.aspx?
id=1&type=QueryString&action=get”时,就可以从路径中看出该地址传递了三个参数,这三个参数和值分别为id=1、type=QueryString以及action=get。
2.Path:
获取路径
通过使用Path的方法可以获取当前请求的虚拟路径,示例代码如下所示。
Label3.Text=Request.Path.ToString();//获取请求路径
当在应用程序开发中使用Request.Path.ToString()时,就能够获取当前正在被请求的文件的虚拟路径的值,当需要对相应的文件进行操作时,可以使用Request.Path的信息进行判断。
3.UserHostAddress:
获取IP记录
通过使用UserHostAddress的方法,可以获取远程客户端IP主机的地址,示例代码如下所示。
Label4.Text=Request.UserHostAddress;//获取客户端IP
在客户端主机IP统计和判断中,可以使用Request.UserHostAddress进行IP统计和判断。
在有些系统中,需要对来访的IP进行筛选,使用Request.UserHostAddress就能够轻松的判断用户IP并进行筛选操作。
4.Browser:
获取浏览器信息
通过使用Browser的方法,可以判断正在浏览网站的客户端的浏览器的版本,以及浏览器的一些信息,示例代码如下所示。
Label5.Text=Request.Browser.Type.ToString();//获取浏览器信息
这些属性能够获取服务器和客户端的相应信息,也可以通过“?
”号进行HTTP的值的传递和获取,上述代码运行结果如图13-1所示。
图13-1Request对象
Request不仅包括这些常用的属性,还包括其他属性,例如用于获取当前目录在服务器虚拟主机中的绝对路径(如ApplicationPath)。
另外,开发人员也可是使用Request中的Form属性进行页面中窗体的值集合的获取。
13.1.2Response请求响应对象
Response对象是HttpResponse类的一个实例。
HttpResponse类用户封装页面操作的HTTP响应信息。
Response对象的常用属性如下所示。
❑BufferOutput:
获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页面之后将其发送。
❑Cache:
获取Web页面的缓存策略。
❑Charset:
获取或设置输出流的HTTP字符集类型。
❑IsClientConnected:
获取一个值,通过该值指示客户端是否仍连接在服务器上。
❑ContentEncoding:
获取或设置输出流的HTTP字符集。
❑TrySkipIisCustomErrors:
获取或设置一个值,指定是否支持IIS7.0自定义错误输出。
1.Response常用属性
BufferOutput的默认属性为True。
当页面被加载时,要输出到客户端的数据都暂时存储在服务器的缓冲期内并等待页面所有事件程序,以及所有的页面对象全部被浏览器解释完毕后,才将所有在缓冲区中的数据发送到客户端浏览器,示例代码如下所示。
protectedvoidPage_Load(objectsender,EventArgse)
{
Response.Write("缓冲区清除前..");//输出缓冲区清除
}
上述代码在cs文件中重写了Page_Load事件,该事件用于中向浏览器输出一行字符串“缓冲区清除前”。
在ASPX页面中,可以为页面增加代码以判断缓冲区的执行时间,示例代码如下所示。
<%Response.Write("缓冲区被清除");%>//输出字符串
上述代码在页面中插入了一段代码,并输出字符串“缓冲区被清除”。
在运行该页面时,数据已经存放在缓冲区中。
然后IIS才开始读取HTML组件的部分,读取完毕后才将结果送至客户端浏览器,所以在运行结果中可以发现,“缓冲期清除前”是在“缓冲区被清除”字符串之前出现,如图13-2所示。
图13-2BufferOutput
因为BufferOutput属性默认为true,所以上述代码并无法看到明显的区别,当在浏览器输出前清除缓冲区时,则可以看出区别。
示例代码如下所示。
Response.Write("缓冲区清除前..");
Response.Clear();//清除缓冲区
当使用Response的Clear方法时,缓冲区就被显式的清除了。
在运行后,“缓冲区清除前”字符串被清除,并不会呈现给浏览器。
当需要屏蔽Clear方法对缓冲区的数据清除,则可以指定BufferOutput的属性为False,示例代码如下所示。
Response.BufferOutput=false;//设置缓冲区属性
Response.Write("缓冲区清除前..");//设置清除前字符
Response.Clear();//清除缓冲区
使用上述代码将指定BufferOutput的属性为False,在运行时缓冲区数据不会被Clear方法清除。
2.Response常用方法
Response方法可以输出HTML流到客户端,其中包括发送信息到客户端和客户端URL重定向,不仅如此,Response还可以设置Cookie的值以保存客户端信息。
Response的常用方法如下所示:
❑Write:
向客户端发送指定的HTTP流。
❑End:
停止页面的执行并输出相应的结果。
❑Clear:
清除页面缓冲区中的数据。
❑Flush:
将页面缓冲区中的数据立即显示。
❑Redirect:
客户端浏览器的URL地址重定向。
在Response的常用方法中,Write方法是最常用的方法,Write能够向客户端发送指定的HTTP流,并呈现给客户端浏览器,示例代码如下所示。
Response.Write(" 18px;\">这是一串 red\">HTML流
上述代码则会向浏览器输出一串HTML流并被浏览器解析,如图13-3所示。
图13-3Response.Write方法
当希望在Response对象运行时,能够中途进行停止时,则可以使用End方法对页面的执行过程进行停止,示例代码如下所示。
for(inti=0;i<100;i++)//循环100次
{
if(i<10)//判断i<10
{
Response.Write("当前输出了第"+i+"行
");//i<10则输出i
}
else//否则停止输出
{
Response.End();//使用了End方法停止执行
}
}
上述代码循环输出HTML流“当前输出了第X行”,当输出到10行时,则停止输出,如图13-4所示。
图13-4Response.End方法
Redirect方法通常使用于页面跳转,示例代码如下所示。
Response.Redirect("");//页面跳转
执行上述代码,将会跳转到相应的URL。
13.1.3Application状态对象
Application对象是HttpApplication类的实例,将在客户端第一期从某个特定的ASP.NET应用程序虚拟目录中请求任何URL资源时创建。
对于Web应用上的每个ASP.NET应用程序都要创建一个单独的实例。
然后通过内部Application对象公开对每个实例进行引用。
1.Application对象的特性
对于Application对象有如下特性:
❑数据可以在Application对象之内进行数据共享,一个Application对象可以覆盖多个用户。
❑Application对象可以用InternetServiceManager来设置而获得不同的属性。
❑单独的Application对象可以隔离出来并运行在内存之中。
❑可以停止一个Application对象而不会影响到其他Application对象。
Application对象常用的属性有:
❑AllKey:
获取HttpApplicationState集合中的访问键。
❑Count:
获取HttpApplicationState集合中的对象数。
其中Application对象的常用方法有:
❑Add:
新增一个Application对象变量。
❑Clear:
清除全部的Application对象变量。
❑Get:
通过索引关键字或变量名称得到变量的值。
❑GetKey:
通过索引关键字获取变量名称。
❑Lock:
锁定全部的Application对象变量。
❑UnLock:
解锁全部的Application对象变量。
❑Remove:
使用变量名称移除一个Application对象变量。
❑RemoveAll:
移除所有的Application对象变量。
❑Set:
使用变量名更新一个Application对象变量。
2.Application对象的使用
通过使用Application对象的方法,能够对Application对象进行操作,使用Add方法能够创建Application对象,示例代码如下所示。
Application.Add("App","MyValue");//增加Application对象
Application.Add("App1","MyValue1");//增加Application对象
Application.Add("App2","MyValue2");//增加Application对象
若需要使用Application对象,可以通过索引Application对象的变量名进行访问,示例代码如下所示:
Response.Write(Application["App1"].ToString());//输出Application对象
上述代码直接通过使用变量名来获取Application对象的值。
通过Application对象的Get方法也能够获取Application对象的值,示例代码如下所示。
for(inti=0;i { Response.Write(Application.Get(i).ToString());//输出Application对象 } Application对象通常可以用来统计在线人数,在页面加载后可以通过配置文件使用Application对象的Add方法进行Application对象的创建,当用户离开页面时,可以使用Application对象的Remove方法进行Application对象的移除。 当Web应用不希望用户在客户端修改已经存在的Application对象时,可以使用Lock对象进行锁定,当执行完毕相应的代码块后,可以解锁。 示例代码如下所示。 Application.Lock();//锁定Application对象 Application["App"]="MyValue3";//Application对象赋值 Application.UnLock();//解锁Application对象 上述代码当用户进行页面访问时,其客户端的Application对象被锁定,所以用户的客户端不能够进行Application对象的更改。 在锁定后,也可以使用UnLock方法进行解锁操作。 13.1.4Session状态对象 Session对象是HttpSessionState的一个实例,Session是用来存储跨页程序的变量或对象,功能基本同Application对象一样。 但是Session对象的特性与Application对象不同。 Session对象变量只针对单一网页的使用者,这也就是说各个机器之间的Session的对象不尽相同。 例如用户A和用户B,当用户A访问该Web应用时,应用程序可以显式的为该用户增加一个Session值,同时用户B访问该Web应用时,应用程序同样可以为用户B增加一个Session值。 但是与Application不同的是,用户A无法存取用户B的Session值,用户B也无法存取用户A的Session值。 Application对象终止于IIS服务停止,但是Session对象变量终止于联机机器离线时,也就是说当网页使用者关闭浏览器或者网页使用者在页面进行的操作时间超过系统规定时,Session对象将会自动注销。 1.Session对象的特性 Session对象常用的属性有: ❑IsNewSession: 如果用户访问页面时是创建新会话,则此属性将返回true,否则将返回false。 ❑TimeOut: 传回或设置Session对象变量的有效时间,如果在有效时间内有没有任何客户端动作,则会自动注销。 注意: 如果不设置TimeOut属性,则系统默认的超时时间为20分钟。 Session对象常用的方法有: ❑Add: 创建一个Session对象。 ❑Abandon: 该方法用来结束当前会话并清除对话中的所有信息,如果用户重新访问页面,则可以创建新会话。 ❑Clear: 此方法将清除全部的Session对象变量,但不结束会话。 注意: Session对象可以不需要Add方法进行创建,直接使用Session[“变量名”]=变量值的语法也可以进行Session对象的创建。 2.Session对象的使用 Session对象可以使用于安全性相比之下较高的场合,例如后台登录。 在后台登录的制作过程中,管理员拥有一定的操作时间,而如果管理员在这段时间不进行任何操作的话,为了保证安全性,后台将自动注销,如果管理员需要再次进行操作,则需要再次登录。 在管理员登录时,如果登录成功,则需要给管理员一个Session对象,示例代码如下所示。 protectedvoidButton1_Click(objectsender,EventArgse) { Session["admin"]="guojing";//新增Session对象 Response.Redirect("Session.aspx");//页面跳转 } 当管理员单击注销按钮时,则会注销Session对象并提示再次登录,示例代码如下所示。 protectedvoidButton2_Click(objectsender,EventArgse) { Session.Clear();//删除所有Session对象 Response.Redirect("Session.aspx"); } 在Page_Load方法中,可以判断是否已经存在Session对象,如果存在Session对象,则说明管理员当前的权限是正常的,而如果不存在Session对象,则说明当前管理员的权限可能是错误的,或者是非法用户正在访问该页面,示例代码如下所示。 protectedvoidPage_Load(objectsender,EventArgse) { if(Session["admin"]! =null)//如果Session[“admin”]不为空 { if(String.IsNullOrEmpty(Session["admin"].ToString()))//则判断是否为空字符串 { Button1.Visible=true;//显式登录控件 Button2.Visible=false;//隐藏注销控件 //Response.Redirect("admin_login.aspx");//跳转到登录页面 } else { Button1.Visible=false;//显式注销控件 Button2.Visible=true;//隐藏注销控件 } } } 上述代码当管理员没有登录时,则会出现登录按钮,如果登录了,存在Session对象,则登录按钮被隐藏,只显示注销按钮。 其HTML代码如下所示。 ButtonID="Button1"runat="server"onclick="Button1_Click"Text="登录"/> ButtonID="Button2"runat="server"onclick="Button2_Click"Text="注销"/> 上述代码运行后如图13-5和图13-6所示。 图13-5登录前图13-6登录后 当再次单击【注销】按钮时则会清空Session对象,再次返回登录窗口时会呈现同图13-5所示。 13.1.5Server服务对象 Server对象是HttpServerUtility的一个实例,该对象提供对服务器上的方法和属性进行访问。 1.Server对象的常用属性 Server对象的常用属性如下所示。 ❑MachineName: 获取远程服务器的名称。 ❑ScriptTimeout: 获取和设置请求超时。 通过Server对象能够获取远程服务器的信息,示例代码如下所示。 protectedvoidPage_Load(objectsender,EventArgse) { Response.Write(Server.MachineName);//输出服务器信息 } 上述代码运行后将会输出服务器名称,本例输出为“WIN-YXDGNGPG621”,这个输出结果根据服务器的名称不同而不同。 2.Server对象的常用方法 Server对象的常用方法如下所示。 ❑CreatObject: 创建COM对象的一个服务器实例。 ❑Execute: 使用另一个页面执行当前请求。 ❑Transfer: 终止当前页面的执行,并为当前请求开始执行新页面。 ❑HtmlDecode: 对已被编码的消除Html无效字符的字符串进行解码。 ❑HtmlEncode: 对要在浏览器中显示的字符串进行编码。 ❑MapPath: 返回与Web服务器上的执行虚拟路径相对应的物理文件路径。 ❑UrlDecode: 对字符串进行解码,该字符串为了进行HTTP传输而进行编码并在URL中发送到服务器。 ❑UrlEncode: 编码字符串,以便通过URL从Web服务器到客户端浏览器的字符串传输。 在ASP.NET中,默认编码是UTF-8,所以在使用Session和Cookie对象保存中文字符或者其他字符集时经常会出现乱码,为了避免乱码的出现,可以使用HtmlDecode和HtmlEncode方法进行编码和解码。 HTML页面代码如下所示。 HtmlDecode: LabelID="Label1"runat="server"Text="Label"> Label> HtmlEncode: LabelID="Label2"runat="server"Text="Label"> Label>
上述代码使用了两个文本标签控件用来保存并呈现编码后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内置 对象 应用程序 配置 和缓
![提示](https://static.bdocx.com/images/bang_tan.gif)