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

上传人:本田雅阁 文档编号:3484573 上传时间:2019-09-02 格式:PPT 页数:53 大小:470.05KB
返回 下载 相关 举报
006HTTP请求、响应及状态管理.ppt_第1页
第1页 / 共53页
006HTTP请求、响应及状态管理.ppt_第2页
第2页 / 共53页
006HTTP请求、响应及状态管理.ppt_第3页
第3页 / 共53页
006HTTP请求、响应及状态管理.ppt_第4页
第4页 / 共53页
006HTTP请求、响应及状态管理.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《006HTTP请求、响应及状态管理.ppt》由会员分享,可在线阅读,更多相关《006HTTP请求、响应及状态管理.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 HttpServerUtility 6.4 跨网页提交,4,目录,6.5 状态管理 6.5.1 ViewState 6.5.2 HiddenField控件 6.5.3 Cook

2、ie 6.5.4 Session 6.5.5 Application 6.5.6 Profile 6.6 小结,5,6.1 HTTP请求,ASP.NET通过Page类的属性Request能很好地控制请求数据,如访问客户端的浏览器信息、查询字符串、Cookie等信息。 Page类的属性Request是一个HttpRequest对象,它封装了HTTP请求信息。,6,HttpRequest对象的数据集合对应表,获取HttpRequest对象的Browser数据集合的语法格式:Request.Browser。,7,QueryString数据集合,使用QueryString获得的查询字符串是指跟在URL

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

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

5、Response对象的常用属性和方法表,16,实例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对象)封装了服务器端

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

7、1,区分Response.Redirect()、Server.Execute()和Server.Transfer() (续),Redirect()方法可重定向到同一网站的不同网页,也可重定向到其它网站的网页;而Execute()和Transfer()方法只能重定向到同一网站的不同网页。 利用Redirect()方法在不同网页之间传递数据时,状态管理采用查询字符串形式;而Execute()和Transfer()方法的状态管理方式与Button按钮的跨网页提交方式相同。,22,实例6-5 HttpServerUtility对象应用,Server.HtmlEncode()方法常用于在页面输出XHTM

8、L元素,若直接输出,浏览器会将这些XHTML元素解释输出。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()方法。 利用

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

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

11、信息。 源程序:Cross1.aspx 源程序:Cross2.aspx,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:使用P

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

14、okie。 可以在客户端修改Cookie设置和禁用Cookie。,34,6.5.3 Cookie(续),当用户的浏览器关闭对Cookie的支持,而不能有效地识别用户时,只需在web.config中加入以下语句: Cookie文本文件存储于“盘符: Documents and SettingsCookies”文件夹 。 ASP.NET提供System.Web.HttpCookie类来处理Cookie,常用的属性是Value和Expires。,35,6.5.3 Cookie(续),每个Cookie一般都会有一个有效期限,当用户访问网站时,浏览器会自动删除过期的Cookie。 没有设置有效期的Coo

15、kie将不会保存到硬盘文件中,而是作为用户会话信息的一部分。当用户关闭浏览器时,Cookie就会被丢弃。这种类型的Cookie很适合用来保存只需短时间存储的信息,或者保存由于安全原因不应写入客户端硬盘文件的信息。,36,6.5.3 Cookie(续),使用Response.Cookies数据集合建立Cookie。 Response.Cookies“Name“.Value=“张三”; 也可以先创建HttpCookie对象,设置其属性,然后通过Response.Cookies.Add()方法添加。HttpCookie cookie = new HttpCookie(“Name“); cookie.

16、Value = “张三“; cookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(cookie); 使用Request.Cookies数据集合获取Cookie值。 string name=Request.Cookies.“Name“.Value;,37,实例6-7 Cookie应用,本实例主要实现利用Cookie确认用户是否已登录,其中Cookie.aspx页面只有在用户登录后才能显示。 源程序:Cookie.aspx 源程序:CookieLogin.aspx 程序说明:测试时先浏览Cookie.aspx,此时因无用户名C

17、ookie信息,页面重定向到CookieLogin.aspx,输入用户名单击确定将用户名信息存入Cookie。关闭浏览器。再次浏览Cookie.aspx可看到欢迎信息。,38,6.5.4 Session,又称会话状态,典型的应用有储存用户信息、多网页间信息传递、购物车等。 Session产生在服务器端,只能为当前访问的用户服务。 以用户对网站的最后一次访问开始计时,当计时达到会话设定时间并且期间没有访问操作时,则会话自动结束。如果同一个用户在浏览期间关闭浏览器后再访问同一个网页,服务器会为该用户产生新的Session。,39,6.5.4 Session (续),ASP.NET用一个唯一的120

18、位Session ID来标识每一个会话。 若客户端支持Cookie,ASP.NET会将Session ID保存到相应的Cookie中;若不支持,就将Session ID添加到URL中。 注意:不管Session ID保存在Cookie还是添加在URL中,都是明文。如果需要保护Session ID,可考虑采用SSL通信。 Session由System.Web.HttpSessionState类实现,使用时,常直接通过Page类的Session属性访问HttpSessionState类的实例。,40,HttpSessionState常用的属性、方法和事件表,41,6.5.4 Session (续)

19、,只有在 web.config 文件中的 sessionstate 模式设置为InProc时,才会引发Session_End事件。如果会话模式设置为StateServer或SQLServer,则不会引发该事件。 对Session状态的赋值: Session“Name“=“张三“; Session.Contents“Name“=“张三“; 注意:Session使用的名称不区分大小写,因此不要用大小写区分不同变量。,42,Session状态的存储方式,可以在web.config中通过元素的mode属性来指定,共有Off、InProc、StateServer、SQLServer和Custom五个枚举

20、值供选择,分别代表禁用、进程内、独立的状态服务、SQLServer和自定义数据存储。 在实际工程项目中,一般选择StateServer,而对于大型网站常选用SQLServer。,43,某考试系统的Session状态设置,44,实例6-8 Session应用,本实例能保护某些网页,如要进入Session.aspx页面,则首先要通过登录认证。 源程序:Session.aspx 程序说明: 当用户直接访问Session.aspx时,会判断Session“Name“状态值,若为空则重定向到SessionLogin.aspx,否则显示欢迎信息。 在SessionLogin.aspx中用户登录成功后,将建

21、立Session“Name“状态值。此时要测试是否存在Session“Name“状态值,应在打开SessionLogin.aspx页面的浏览器中直接更改地址来访问Session.aspx。,45,6.5.5 Application,又称应用程序状态,与应用于单个用户的Session状态不同,它应用于所有的用户。 在网站运行时存在,网站关闭时将被释放。因此,如果需要将状态数据保存下来,则适宜保存在数据库中。 由System.Web.HttpApplicationState类来实现。,46,6.5.5 Application(续),Application是面对所有用户的,当要修改Applicati

22、on状态值时,首先要调用Application.Lock()方法锁定,值修改后再调用Application.UnLock()方法解除锁定。 Application.Lock(); Application“Count“ = (int)Application“Count“ + 1; Application.UnLock(); 与Application相关的事件主要有Application_Start、Application_End、Application_Error与Session类似,这些事件代码都存放于Global.asax文件中。,47,实例6-9 统计网站在线人数,页面呈现网站在线人数。需

23、考虑3个方面:初始化计数器;当一个用户访问网站时,计数器增1;当一个用户离开网站时,计数器减1。 初始化计数器要利用Application_Start事件,并在事件代码中定义Application状态。用户访问网站时增加计数要利用Session_Start事件,并在事件代码中增加Application状态值。用户离开网站时减少计数要利用Session_End事件,并在事件代码中减小Application状态值。 源程序:Global.asax、Application.aspx,48,程序说明,可同时利用多个浏览器或多台计算机访问Application.aspx,进行测试。当然,若通过多台计算机

24、进行测试,需要先将网站发布到IIS。 注意:Session_End事件是在会话结束时触发,所以关闭浏览器不会立即触发该事件,只有到达属性Timeout设置的时间时该事件才被触发,此时,相应的当前在线人数才会减少。,49,6.5.6 Profile,Profile提供的个性化用户配置功能可以很方便地实现为每个用户定义、存储和管理配置信息,这些信息的创建、存储和管理是自动完成的。 针对的用户可以是注册用户,也可以是匿名用户。 要保存匿名用户信息需要设置AllowAnonymous=“true“。 对不同的匿名用户会自动识别。,50,6.5.6 Profile(续),默认情况下,配置信息存储在SQL

25、 Server Express 2005中,并以ASPNETDB.mdf数据库名存放在网站的App_Data文件夹。 也可以将配置信息保存到其它版本的SQL Server中,此时需要使用“盘符:WindowsMicrosoft.NETFrameworkv2.0.50727”文件夹中的aspnet_regsql.exe命令行工具。,51,6.5.6 Profile(续),使用个性化用户配置功能主要有两个步骤: 第一,在web.config文件中的配置节中定义配置信息名、数据类型、是否允许匿名用户存储信息等。 第二,在程序中利用Profile对象访问用户配置信息。,52,实例6-10 应用Prof

26、ile保存邮政编码信息,当用户输入邮政编码,单击“写入”后将把邮政编码保存到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备18001539号-1