资源预览内容
第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
第9页 / 共53页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
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 跨网页提交,5,6.1 HTTP请求,ASP.NET通过Page类的属性Request能很好地控制请求数据,如访问客户端的浏览器信息、查询字符串、Cookie等信息。 Page类的属性Request是一个HttpRequest对象,它封装了HTTP请求信息。,6,HttpRequest对象的数据集合对应表,获取HttpRequest对象的Browser数据集合的语法格式:Request.Browser。,7,QueryString数据集合,使用QueryString获得的查询字符串是指跟在URL后面的变量及值,以“?”与URL间隔,不同的变量之间以“ cookie.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,此时因无用户名Cookie信息,页面重定向到CookieLogin.aspx,输入用户名单击确定将用户名信息存入Cookie。关闭浏览器。再次浏览Cookie.aspx可看到欢迎信息。,38,6.5.4 Session,又称会话状态,典型的应用有储存用户信息、多网页间信息传递、购物车等。 Session产生在服务器端,只能为当前访问的用户服务。 以用户对网站的最后一次访问开始计时,当计时达到会话设定时间并且期间没有访问操作时,则会话自动结束。如果同一个用户在浏览期间关闭浏览器后再访问同一个网页,服务器会为该用户产生新的Session。,39,6.5.4 Session (续),ASP.NET用一个唯一的120位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 (续),只有在 web.config 文件中的 sessionstate 模式设置为InProc时,才会引发Session_End事件。如果会话模式设置为StateServer或SQLServer,则不会引发该事件。 对Session状态的赋值: SessionName=张三; Session.ContentsName=张三; 注意:Session使用的名称不区分大小写,因此不要用大小写区分不同变量。,42,Session状态的存储方式,可以在web.config中通过元素的mode属性来指定,共有Off、InProc、StateServer、SQLServer和Custom五个枚举值供选择,分别代表禁用、进程内、独立的状态服务、SQLServer和自定义数据存储。 在实际工程项目中,一般选择StateServer,而对于大型网站常选用SQLServer。,43,某考试系统的Session状态设置, ,44,实例6-8 Session应用,本实例能保护某些网页,如要进入Session.aspx页面,则首先要通过登录认证。 源程序:Session.aspx 程序说明: 当用户直接访问Session.aspx时,会判断SessionName状态值,若为空则重定向到SessionLogin.aspx,否则显示欢迎信息。 在SessionLogin.aspx中用户登录成功后,将建立SessionName状态值。此时要测试是否存在SessionName状态值,应在打开SessionLogin.aspx页面的浏览器中直接更改地址来访问Session.aspx。,45,6.5.5 Application,又称应用程序状态,与应用于单个用户的Session状态不同,它应用于所有的用户。 在网站运行时存在,网站关闭时将被释放。因此,如果需要将状态数据保存下来,则适宜保存在数据库中。 由System.Web.HttpApplicationState类来实现。,46,6.5.5 Application(续),Application是面对所有用户的,当要修改Application状态值时,首先要调用Application.Lock()方法锁定,值修改后再调用Application.UnLock()方法解除锁定。 Application.Lock(); ApplicationCount = (int)ApplicationCount + 1; Application.UnLock(); 与Application相关的事件主要有Application_Start、Application_End、Application_Error与Session类似,这些事件代码都存放于Global.asax文件中。,47,实例6-9 统计网站在线人数,页面呈现网站在线人数。需考虑3个方面:初始化计数器;当一个用户访问网站时,计数器增1;当一个用户离开网站时,计数器减1。 初始化计数器要利用Application_Start事件,并在事件代码中定义Application状态。用户访问网站时增加计数要利用Session_Start事件,并在事件代码中增加Application状态值。用户离开网站时减少计数要利用Session_End事件,并在事件代码中减小Application状态值。 源程序:Global.asax、Application.aspx,48,程序说明,可同时利用多个浏览器或多台计算机访问Application.aspx,进行测试。当然,若通过多台计算机进行测试,需要先将网站发布到IIS。 注意:Session_End事件是在会话结束时触发,所以关闭浏览器不会立即触发该事件,只有到达属性Timeout设置的时间时该事件才被触发,此时,相应的当前在线人数才会减少。,49,6.5.6 Profile,Profile提供的个性化用户配置功能可以很方便地实现为每个用户定义、存储和管理配置信息,这些信息的创建、存储和管理是自动完成的。 针对的用户可以是注册用户,也可以是匿名用户。 要保存匿名用户信息需要设置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文件中的配置节中定义配置信息名、数据类型、是否允许匿名用户存储信息等。 第二,在程序中利用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类型按钮的跨网页提交等形式 。 状态管理分为客户端和服务器端两种管理形式。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号