《应用的状态》PPT课件.ppt
《《应用的状态》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《应用的状态》PPT课件.ppt(58页珍藏版)》请在三一办公上搜索。
1、第5章Web应用的状态管理,内容,Web应用状态概述客户端状态维护技术服务器端状态维护技术,HTTP协议“无状态的协议”,Web服务器每分钟对上千个用户进行管理的一种方式就是执行所谓的“无状态”连接。只要有一个希望浏览器返回一个页面、图像或其他资源的请求,就发生以下事情:连接到服务器告诉服务器想要的页面、图像或其他项服务器发送请求资源服务器切断连接,把用户忘得干干净净。,ASP.Net Web Form的“连续”和“有状态”的假象,ASP.NET的设计者们,从实际访问者的角度重新考虑了这一过程:访问者打开一个页面,点击一个按钮,看到新的画面这一切似乎都是连续的。,状态管理,Web应用本质上是无
2、状态的,如需保存状态则需要做状态管理,状态维护是对同一页或不同页的多个请求维护状态和页信息的过程,保持用户信息(状态)的连续性。,状态管理,状态维护技术,视图状态:使用一个或多个隐藏域来保存控件的状态。控件状态:当开发自定义控件时,保存控件的状态数据。隐藏域:标准的HTML隐藏域。Cookie:用于在客户端保存少量的数据。查询字符串:查询字符串是在页URL的结尾附加的信息。应用程序状态:用于保存服务器端的全局应用程序信息。会话状态:保存会话状态信息。配置文件属性:ASP.NET提供了一个称为配置文件属性的功能,可以保存服务器端的全局应用程序信息。,客户端状态管理,客户端状态管理不如服务器端状态
3、管理选项安全不如服务器端管理选项可靠可存储的信息量可能受到限制,用户可以删除 Cookie,恶意的用户可通过某些方法来篡改 或读取其中的内容,服务器端状态管理,可通过应用程序状态(Application)、会话状态(Session)、配置文件、数据库保存会话状态来实现,客户端状态维护技术,视图状态隐藏域查询字符串Cookie,视图状态,视图状态概述设置页面是否保留视图状态在配置文件设置是否保留视图状态,设置页面是否保留视图状态,设置Page指令或Page的EnableViewState属性指示当前页请求结束时,该页是否保持其视图状态以及它包含的任何服务器控件的视图状态 关闭页面的视图状态,设置
4、页面是否保留视图状态(例),关闭页面的视图状态,protected void Page_Load(object sender,EventArgs e)Page.EnableViewState=false;,在配置文件中设置是否保留视图状态,在配置文件Web.config的system.web节点下,修改Pages元素的EnableViewState属性,来控制所有页面是否启用视图状态信息,对视图状态进行分块,设置页的 MaxPageStateFieldLength 属性,对ViewState 属性中存储的数据进行分块,可以在Web.config文件中设置分块大小,使用视图状态存取数据,视图状态
5、(ViewState)是一个字典对象,通过Page类的ViewState属性公开,是页用来在往返行程之间保留页和控件属性值的默认方法(只在本页有效)视图状态可存储的数据类型:字符串;整数;布尔值;Array 和ArrayList 对象;哈希表;自定义类型转换器,ViewStateview1=Hello World;,【例5-1】视图状态示例程序。,参见示例第05章ClientStateDemoViewStateDemo.aspx,使用视图状态具有以下3个优点:耗费的服务器资源较少(与Application、Session相比)。因为,视图状态数据都写入了客户端计算机中。易于维护。默认情况下,.
6、NET系统自动启用对控件状态数据的维护。增强的安全功能。视图状态中的值经过哈希计算和压缩,并且针对Unicode实现进行编码,其安全性要高于使用隐藏域。,使用视图状态具有以下3个缺点:性能问题。由于视图状态存储在页本身,因此如果存储较大的值,用户显示页和发送页时的速度可能减慢。设备限制。移动设备可能没有足够的内存容量来存储大量的视图状态数据。因此,对于移动设备上的服务器控件,将使用其它的实现方法。潜在的安全风险。视图状态存储在页上的一个或多个隐藏域中。虽然视图状态以哈希格式存储数据,但它可以被篡改。如果在客户端直接查看页源文件,可以看到隐藏域中的信息,这导致潜在的安全性问题。,隐藏域,隐藏域是
7、一个存储库,直接存储在页中的任何特定于页的信息,在视图状态、会话状态和 Cookie 等方法被禁用或不可用,则可以使用 HiddenField 控件来存储状态值 隐藏域的设置和读取,protected void Page_Load(object sender,EventArgs e)string strUserName=Jakey;h1.Value=strUserName;,查询字符串,查询字符串提供了一种维护状态信息的方法,输入查询字符串以问号(?)开始的属性/值对,且可以有多个查询字符串,它们之间以“&”分隔,http:/=basic&price=100,【例5-2】演示查询字符串的使用。
8、,参见示例第05章ClientStateDemoQueryString.aspx和Hello.aspx,使用查询字符串的优点:不需要任何服务器资源。查询字符串包含在对特定URL的HTTP请求中。广泛的支持。几乎所有的浏览器和客户端设备均支持使用查询字符串传递值。实现简单。ASP.NET完全支持查询字符串方法,其中包含了使用HttpRequest对象的Params属性读取查询字符串的方法。使用查询字符串的缺点:潜在的安全性风险。用户可以通过浏览器直接看到查询字符串中的信息。用户可将此URL设置为书签或发送给别的用户,从而通过此URL传递查询字符串中的信息。有限的容量。有些浏览器和客户端设备对UR
9、L的长度有2083个字符的限制。,Cookie,Cookie概述编写Cookie演示和练习:编写Cookie编写多值Cookie演示和练习:编写多值Cookie控制Cookie的范围演示和练习:控制Cookie的范围修改和删除Cookie演示和练习:删除Cookie和删除多值Cookie的子键Cookie和会话状态,Cookie概述,Cookie 是存储在客户端文件系统的文本文件中,或者存储在客户端浏览器会话的内存中的少量的数据Cookie 是随页输出并由服务器发送到客户端的特定于站点的信息Cookie 可以是临时的(随着浏览器关闭而自动消失),也可以是永久性的Cookie 保存在客户端设备上
10、,当浏览器请求某页时,客户端会将 Cookie 中的信息连同请求信息一起发送。服务器可以读取 Cookie 的值,Cookie的用途,用户的个人配置登录和“remember me”弹出窗口,编写Cookie,使用HttpResponse 对象 来设置Cookie,需要设置Cookie名称、值、过期时间等信息,/通过新建HttpCookie对象来添加CookieHttpCookie aCookie=new HttpCookie(lastVisit);/新建HttpCookie对象aCookie.Value=();aCookie.Expires=DateTime.Now.AddDays(1);/设
11、置Cookie的过期Response.Cookies.Add(aCookie);/将Cookie添加到Cookies集合/读取Cookie值string userName;if(Request.CookiesuserName!=null)userName=Request.CookiesuserName.Value;,编写多值Cookie,在一个 Cookie 中存储多个名称/值对,名称/值对称为子键,/直接添加CookieResponse.CookiesuserInfouserName=patrick;Response.CookiesuserInfolastVisit=();Response.
12、CookiesuserInfo.Expires=DateTime.Now.AddDays(1);/读取Cookie值string userName;if(Request.CookiesuserName!=null)if(Request.CookiesuserInfo userName!=null)userName=Request.CookiesuserInfouserName;,控制Cookie的范围,限制 Cookie 的域范围将 Cookie 限制到某个文件夹或应用程序,控制Cookie的范围,限制 Cookie 的域范围,Response.Cookiesdomain.Value=();R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用的状态 应用 状态 PPT 课件
链接地址:https://www.31ppt.com/p-5505723.html