HTTP请求、响应及状态管理.ppt

上传人:牧羊曲112 文档编号:5433739 上传时间:2023-07-06 格式:PPT 页数:53 大小:248.49KB
返回 下载 相关 举报
HTTP请求、响应及状态管理.ppt_第1页
第1页 / 共53页
HTTP请求、响应及状态管理.ppt_第2页
第2页 / 共53页
HTTP请求、响应及状态管理.ppt_第3页
第3页 / 共53页
HTTP请求、响应及状态管理.ppt_第4页
第4页 / 共53页
HTTP请求、响应及状态管理.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《HTTP请求、响应及状态管理.ppt》由会员分享,可在线阅读,更多相关《HTTP请求、响应及状态管理.ppt(53页珍藏版)》请在三一办公上搜索。

1、1,006 HTTP请求、响应及状态管理,2,本章要点:,掌握HttpRequest对象的应用掌握HttpResponse对象的应用掌握HttpServerUtility对象的应用,理解不同方法的页面重定向掌握跨页面提交的应用。了解ViewState、HiddenField,掌握Cookie、Session、Application、Profile应用。,3,目录,6.1 HTTP请求6.2 HTTP响应6.3 HttpServerUtility6.4 跨网页提交,4,目录,6.5 状态管理6.5.1 ViewState6.5.2 HiddenField控件6.5.3 Cookie6.5.4 S

2、ession6.5.5 Application6.5.6 Profile6.6 小结,5,6.1 HTTP请求,ASP.NET通过Page类的属性Request能很好地控制请求数据,如访问客户端的浏览器信息、查询字符串、Cookie等信息。Page类的属性Request是一个HttpRequest对象,它封装了HTTP请求信息。,6,HttpRequest对象的数据集合对应表,获取HttpRequest对象的Browser数据集合的语法格式:Request.Browser。,7,QueryString数据集合,使用QueryString获得的查询字符串是指跟在URL后面的变量及值,以“?”与U

3、RL间隔,不同的变量之间以“&”间隔。,8,实例6-1 QueryString的使用,当单击QueryString1.aspx页面上链接后,页面重定向到QueryString2.aspx;在页面QueryString2.aspx中显示从QueryString1.aspx传递过来的查询字符串数据信息。源程序:QueryString1.aspx 源程序:QueryString2.aspx,9,ServerVariables数据集合,可很方便地取得服务器端或客户端的环境变量信息,如客户端的IP地址等。语法格式如下:Request.ServerVariables环境变量名,10,常用的环境变量表,11

4、,Browser数据集合,用于判断用户的浏览器类型、版本等,以便根据不同的浏览器编写不同的网页。语法格式为:Request.Browser浏览器特性名。,12,浏览器特性名对应表,13,实例6-2 ServerVariables和Browser应用,界面显示信息为ServerVariables和Brower数据集合中相应值。源程序:Request.aspx,14,6.2 HTTP响应,ASP.NET通过Page类的属性Response(即HttpResponse对象)可以很好地控制输出的内容和方式,如页面重定向、保存Cookie等。,15,HttpResponse对象的常用属性和方法表,16,

5、实例6-3 Write()方法应用,利用Write()方法除可以输出提示信息、变量值外,也可以输出XHTML文本或JavaScript脚本等。源程序:Write.aspx,17,实例6-4 Redirect()方法应用,选择“教师”后,页面重定向到教师页面Teacher.aspx面,选择“学生”后页面重定向到学生页面Student.aspx。源程序:Redirect.aspx 源程序:Teacher.aspx,18,6.3 HttpServerUtility,Page类的属性Server(即HttpServerUtility对象)封装了服务器端的一些操作,如转换XHTML元素标志、获取网页的物

6、理路径等。,19,HttpServerUtility对象的常用属性和方法表,20,区分Response.Redirect()、Server.Execute()和Server.Transfer(),Redirect()方法尽管在服务器端执行,但重定向实际发生在客户端,可从浏览器地址栏中看到地址变化;而Execute()和Transfer()方法的重定向实际发生在服务器端,在浏览器的地址栏中看不到地址变化。Redirect()和Transfer()方法执行完新网页后,并不返回原网页;而Execute()方法执行完新网页后会返回原网页继续执行。,21,区分Response.Redirect()、Se

7、rver.Execute()和Server.Transfer()(续),Redirect()方法可重定向到同一网站的不同网页,也可重定向到其它网站的网页;而Execute()和Transfer()方法只能重定向到同一网站的不同网页。利用Redirect()方法在不同网页之间传递数据时,状态管理采用查询字符串形式;而Execute()和Transfer()方法的状态管理方式与Button按钮的跨网页提交方式相同。,22,实例6-5 HttpServerUtility对象应用,Server.HtmlEncode()方法常用于在页面输出XHTML元素,若直接输出,浏览器会将这些XHTML元素解释输出

8、。Server.UrlEncode()常用于处理链接地址,如地址中包含空格等。单击“Student.aspx链接”时将丢失“张”后面的信息。单击“Student.aspx(UrlEncode)链接”时,因使用了Server.UrlEncode()方法不再丢失“张”后面的信息。源程序:Server.aspx,23,6.4 跨网页提交,要实现页面重定向,在ASP.NET 3.5网页中可以采用元素、HyperLink控件、Response.Redirect()、Server.Execute()和Server.Transfer()方法。利用Button类型控件方式实现跨网页提交,这种方式设置方便并具有

9、安全的状态管理功能。,24,6.4 跨网页提交(续),在实现跨网页提交时,需要将源网页上Button类型控件的属性PostBackUrl值设置为目标网页路径。而在目标页上,需要在页面头部添加PreviousPageType指令,设置属性VirtualPath值为源网页路径,如:,25,6.4 跨网页提交(续),从目标网页访问源网页中数据的方法利用PreviousPage.FindControl()方法访问源网页上的控件;在源网页上定义公共属性,再在目标网页上利用“PreviousPage.属性名”获取源网页中数据。,26,区分跨网页提交还是调用了Server.Execute()或Server.

10、Transfer()方法,需要在目标网页的.cs文件中判断属性PreviousPage.IsCrossPagePostBack的值。如果是跨网页提交,那么属性IsCrossPagePostBack值为true;如果是调用Server.Execute()或Server.Tranfer()方法,那么属性IsCrossPageBack值为false。,27,实例6-6 跨网页提交应用,在Cross1.aspx中输入“用户名、密码”后单击“确定”,此时页面提交到Cross2.aspx,在该页面中显示Cross1.aspx中输入的数据信息。源程序:Cross1.aspx 源程序:Cross2.aspx,

11、28,6.5 状态管理,客户端状态是将信息保留在客户端计算机上,当客户端向服务器端发送请求时,状态信息会随之发送到服务器端。具体实现时可选择ViewState、ControlState、HiddenField、Cookie和前面提及的查询字符串,其中ControlState只能用于自定义控件的状态管理。服务器状态是指状态的信息保存于服务器。具体实现时可选择Session状态、Application状态或数据库支持。,29,比较客户端状态和服务器端状态,客户端状态由于状态数据保存在客户端,所以不消耗服务器内存资源,但容易泄露数据信息,安全性较差。服务器端状态将消耗服务器端内存资源,但具有较高的安

12、全性。,30,6.5.1 ViewState,又称为视图状态,用于维护自身Web窗体的状态。当用户请求ASP.NET网页时,ASP.NET将ViewState封装为一个或几个隐藏的表单域传递到客户端。当用户再次提交网页时,ViewState也将被提交到服务器端。这样后续的请求就可以获得上一次请求时的状态。选择“查看”“源文件”可查看ViewState。,31,6.5.1 ViewState(续),禁用ViewState:属性EnableViewState设置为false。禁止整个网页的ViewState:使用Page指令。,32,6.5.2 HiddenField控件,又称隐藏域,用于维护自身

13、窗体的状态,它不会显示在用户的浏览器中,但可以像设置标准控件的属性那样设置其属性。成员主要有属性Value和事件ValueChanged。注意:要触发ValueChanged事件,需设置HiddenField控件的属性EnableViewState值为false。,33,6.5.3 Cookie,保存到客户端硬盘或内存中的一小段文本信息,如站点、客户、会话等有关的信息。与网站关联,而不是与特定的网页关联。用户访问不同站点时,各个站点都可能会向用户的浏览器发送一个Cookie,浏览器会分别存储所有的Cookie。可以在客户端修改Cookie设置和禁用Cookie。,34,6.5.3 Cookie

14、(续),当用户的浏览器关闭对Cookie的支持,而不能有效地识别用户时,只需在web.config中加入以下语句:Cookie文本文件存储于“盘符:Documents and SettingsCookies”文件夹。ASP.NET提供类来处理Cookie,常用的属性是Value和Expires。,35,6.5.3 Cookie(续),每个Cookie一般都会有一个有效期限,当用户访问网站时,浏览器会自动删除过期的Cookie。没有设置有效期的Cookie将不会保存到硬盘文件中,而是作为用户会话信息的一部分。当用户关闭浏览器时,Cookie就会被丢弃。这种类型的Cookie很适合用来保存只需短时

15、间存储的信息,或者保存由于安全原因不应写入客户端硬盘文件的信息。,36,6.5.3 Cookie(续),使用Response.Cookies数据集合建立Cookie。Response.CookiesName.Value=“张三”;也可以先创建HttpCookie对象,设置其属性,然后通过()方法添加。HttpCookie cookie=new HttpCookie(Name);cookie.Value=张三;cookie.Expires=DateTime.Now.AddDays(1);Response.Cookies.Add(cookie);使用Request.Cookies数据集合获取Coo

16、kie值。string name=Request.Cookies.Name.Value;,37,实例6-7 Cookie应用,本实例主要实现利用Cookie确认用户是否已登录,其中Cookie.aspx页面只有在用户登录后才能显示。源程序:Cookie.aspx 源程序:CookieLogin.aspx 程序说明:测试时先浏览Cookie.aspx,此时因无用户名Cookie信息,页面重定向到CookieLogin.aspx,输入用户名单击确定将用户名信息存入Cookie。关闭浏览器。再次浏览Cookie.aspx可看到欢迎信息。,38,6.5.4 Session,又称会话状态,典型的应用有储

17、存用户信息、多网页间信息传递、购物车等。Session产生在服务器端,只能为当前访问的用户服务。以用户对网站的最后一次访问开始计时,当计时达到会话设定时间并且期间没有访问操作时,则会话自动结束。如果同一个用户在浏览期间关闭浏览器后再访问同一个网页,服务器会为该用户产生新的Session。,39,6.5.4 Session(续),ASP.NET用一个唯一的120位Session ID来标识每一个会话。若客户端支持Cookie,ASP.NET会将Session ID保存到相应的Cookie中;若不支持,就将Session ID添加到URL中。注意:不管Session ID保存在Cookie还是添加

18、在URL中,都是明文。如果需要保护Session ID,可考虑采用SSL通信。Session由类实现,使用时,常直接通过Page类的Session属性访问HttpSessionState类的实例。,40,HttpSessionState常用的属性、方法和事件表,41,6.5.4 Session(续),只有在 web.config 文件中的 sessionstate 模式设置为InProc时,才会引发Session_End事件。如果会话模式设置为StateServer或SQLServer,则不会引发该事件。对Session状态的赋值:SessionName=张三;Session.Contents

19、Name=张三;注意:Session使用的名称不区分大小写,因此不要用大小写区分不同变量。,42,Session状态的存储方式,可以在web.config中通过元素的mode属性来指定,共有Off、InProc、StateServer、SQLServer和Custom五个枚举值供选择,分别代表禁用、进程内、独立的状态服务、SQLServer和自定义数据存储。在实际工程项目中,一般选择StateServer,而对于大型网站常选用SQLServer。,43,某考试系统的Session状态设置,44,实例6-8 Session应用,本实例能保护某些网页,如要进入Session.aspx页面,则首先要

20、通过登录认证。源程序:Session.aspx 程序说明:当用户直接访问Session.aspx时,会判断SessionName状态值,若为空则重定向到SessionLogin.aspx,否则显示欢迎信息。在SessionLogin.aspx中用户登录成功后,将建立SessionName状态值。此时要测试是否存在SessionName状态值,应在打开SessionLogin.aspx页面的浏览器中直接更改地址来访问Session.aspx。,45,6.5.5 Application,又称应用程序状态,与应用于单个用户的Session状态不同,它应用于所有的用户。在网站运行时存在,网站关闭时将被

21、释放。因此,如果需要将状态数据保存下来,则适宜保存在数据库中。由类来实现。,46,6.5.5 Application(续),Application是面对所有用户的,当要修改Application状态值时,首先要调用Application.Lock()方法锁定,值修改后再调用Application.UnLock()方法解除锁定。Application.Lock();ApplicationCount=(int)ApplicationCount+1;Application.UnLock();与Application相关的事件主要有Application_Start、Application_End、A

22、pplication_Error与Session类似,这些事件代码都存放于Global.asax文件中。,47,实例6-9 统计网站在线人数,页面呈现网站在线人数。需考虑3个方面:初始化计数器;当一个用户访问网站时,计数器增1;当一个用户离开网站时,计数器减1。初始化计数器要利用Application_Start事件,并在事件代码中定义Application状态。用户访问网站时增加计数要利用Session_Start事件,并在事件代码中增加Application状态值。用户离开网站时减少计数要利用Session_End事件,并在事件代码中减小Application状态值。源程序:Global.

23、asax、Application.aspx,48,程序说明,可同时利用多个浏览器或多台计算机访问Application.aspx,进行测试。当然,若通过多台计算机进行测试,需要先将网站发布到IIS。注意:Session_End事件是在会话结束时触发,所以关闭浏览器不会立即触发该事件,只有到达属性Timeout设置的时间时该事件才被触发,此时,相应的当前在线人数才会减少。,49,6.5.6 Profile,Profile提供的个性化用户配置功能可以很方便地实现为每个用户定义、存储和管理配置信息,这些信息的创建、存储和管理是自动完成的。针对的用户可以是注册用户,也可以是匿名用户。要保存匿名用户信息

24、需要设置AllowAnonymous=true。对不同的匿名用户会自动识别。,50,6.5.6 Profile(续),默认情况下,配置信息存储在SQL Server Express 2005中,并以ASPNETDB.mdf数据库名存放在网站的App_Data文件夹。也可以将配置信息保存到其它版本的SQL Server中,此时需要使用“盘符:WindowsMicrosoft.NETFrameworkv2.0.50727”文件夹中的aspnet_regsql.exe命令行工具。,51,6.5.6 Profile(续),使用个性化用户配置功能主要有两个步骤:第一,在web.config文件中的配置节

25、中定义配置信息名、数据类型、是否允许匿名用户存储信息等。第二,在程序中利用Profile对象访问用户配置信息。,52,实例6-10 应用Profile保存邮政编码信息,当用户输入邮政编码,单击“写入”后将把邮政编码保存到ASPNETDB.mdf数据库的aspnet_Profile表中。单击“显示”后从aspnet_Profile表中获取用户的邮政编码并显示在页面上。源程序:web.config源程序:Profile.aspx 程序说明:从程序处理流程中可以看出,保存和获取用户配置信息完全自动完成,不需要连接数据库等语句。,53,6.6 小结,要控制页面请求和响应,需使用HttpRequest和HttpResponse对象。为了有效防范SQL脚本注入,常会使用HttpServerUtility对象的HtmlEncode()方法。页面重定向可采用、HyperLink、Response.Redirect()、Server.Execute()、Server.Transfer()和Button类型按钮的跨网页提交等形式。状态管理分为客户端和服务器端两种管理形式。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号