Web应用的状态管理.ppt

上传人:牧羊曲112 文档编号:6523310 上传时间:2023-11-08 格式:PPT 页数:55 大小:245KB
返回 下载 相关 举报
Web应用的状态管理.ppt_第1页
第1页 / 共55页
Web应用的状态管理.ppt_第2页
第2页 / 共55页
Web应用的状态管理.ppt_第3页
第3页 / 共55页
Web应用的状态管理.ppt_第4页
第4页 / 共55页
Web应用的状态管理.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《Web应用的状态管理.ppt》由会员分享,可在线阅读,更多相关《Web应用的状态管理.ppt(55页珍藏版)》请在三一办公上搜索。

1、第7章Web应用的状态管理,内容,Web应用状态概述客户端状态维护技术服务器端状态维护技术,Web应用状态概述,Web应用本质上是无状态的,如需保存状态则需要做状态管理,状态维护是对同一页或不同页的多个请求维护状态和页信息的过程,客户端状态维护技术,视图状态控件状态隐藏域Cookie查询字符串,视图状态,视图状态概述设置页面是否保留视图状态在配置文件设置是否保留视图状态演示和练习:设置是否启用保留视图状态对视图状态进行分块演示和练习:对视图状态进行分块,视图状态概述,视图状态(ViewState)是一个字典对象,通过Page类的ViewState属性公开,是页用来在往返行程之间保留页和控件属性

2、值的默认方法视图状态可存储的数据类型:字符串整数布尔值Array 和ArrayList 对象哈希表自定义类型转换器,ViewStateview1=Hello World;,设置页面是否保留视图状态,设置Page指令或Page的EnableViewState属性指示当前页请求结束时,该页是否保持其视图状态以及它包含的任何服务器控件的视图状态 关闭页面的视图状态,设置页面是否保留视图状态(例),关闭页面的视图状态,protected void Page_Load(object sender,EventArgs e)Page.EnableViewState=false;,在配置文件中设置是否保留视图

3、状态,在配置文件Web.config的system.web节点下,修改Pages元素的EnableViewState属性,来控制所有页面是否启用视图状态信息,演示和练习:设置是否启用视图状态,多媒体演示,对视图状态进行分块,设置页的 MaxPageStateFieldLength 属性,对ViewState 属性中存储的数据进行分块,可以在Web.config文件中设置分块大小,演示和练习:对视图状态进行分块,多媒体演示,控件状态,ASP.NET 页框架提供了 ControlState 属性作为在服务器往返过程中存储自定义控件数据的方法控件状态不能被关闭,故存储控件状态数据是更可靠的方法,隐藏

4、域,隐藏域是一个存储库,直接存储在页中的任何特定于页的信息,在视图状态、会话状态和 Cookie 等方法被禁用或不可用,则可以使用 HiddenField 控件来存储状态值 隐藏域的设置和读取,protected void Page_Load(object sender,EventArgs e)string strUserName=Jakey;h1.Value=strUserName;,Cookie,Cookie概述编写Cookie演示和练习:编写Cookie编写多值Cookie演示和练习:编写多值Cookie控制Cookie的范围演示和练习:控制Cookie的范围修改和删除Cookie演示和

5、练习:删除Cookie和删除多值Cookie的子键Cookie和会话状态,Cookie概述,Cookie 是存储在客户端文件系统的文本文件中,或者存储在客户端浏览器会话的内存中的少量的数据Cookie 是随页输出并由服务器发送到客户端的特定于站点的信息Cookie 可以是临时的(随着浏览器关闭而自动消失),也可以是永久性的Cookie 保存在客户端设备上,当浏览器请求某页时,客户端会将 Cookie 中的信息连同请求信息一起发送。服务器可以读取 Cookie 的值,编写Cookie,使用HttpResponse 对象 来设置Cookie,需要设置Cookie名称、值、过期时间等信息,/通过新建

6、HttpCookie对象来添加CookieHttpCookie aCookie=new HttpCookie(lastVisit);/新建HttpCookie对象aCookie.Value=DateTime.Now.ToString();aCookie.Expires=DateTime.Now.AddDays(1);/设置Cookie的过期Response.Cookies.Add(aCookie);/将Cookie添加到Cookies集合/读取Cookie值string userName;if(Request.CookiesuserName!=null)userName=Request.Coo

7、kiesuserName.Value;,演示和练习:编写Cookie,多媒体演示,编写多值Cookie,在一个 Cookie 中存储多个名称/值对,名称/值对称为子键,/直接添加CookieResponse.CookiesuserInfouserName=patrick;Response.CookiesuserInfolastVisit=DateTime.Now.ToString();Response.CookiesuserInfo.Expires=DateTime.Now.AddDays(1);/读取Cookie值string userName;if(Request.CookiesuserN

8、ame!=null)if(Request.CookiesuserInfo userName!=null)userName=Request.CookiesuserInfouserName;,演示和练习:编写多值Cookie,多媒体演示,控制Cookie的范围,限制 Cookie 的域范围将 Cookie 限制到某个文件夹或应用程序,控制Cookie的范围,限制 Cookie 的域范围,Response.Cookiesdomain.Value=DateTime.Now.ToString();Response.Cookiesdomain.Expires=DateTime.Now.AddDays(1)

9、;Response.Cookiesdomain.Domain=support.;,控制Cookie的范围,将 Cookie 限制到某个文件夹或应用程序,HttpCookie appCookie=new HttpCookie(AppCookie);appCookie.Value=written+DateTime.Now.ToString();appCookie.Expires=DateTime.Now.AddDays(1);appCookie.Path=/App1;Response.Cookies.Add(appCookie);,演示和练习:控制Cookie的范围,多媒体演示,修改和删除Cook

10、ie,由于Cookie存储在客户端,不能直接修改和删除 Cookie通过给Cookie赋新值替换旧版本Cookie的办法来修改可以通过设置Cookie立即过期的办法来删除Cookie,演示和练习:删除Cookie和删除多值Cookie的子键,多媒体演示,Cookie和会话状态,服务器在用户访问时为每个用户建立唯一的会话,该会话将一直延续到用户访问结束,ASP.NET通过以下办法维护该会话状态存储在Cookie中的非永久性会话状态 存储在站点中页面的 URL 中的无Cookie会话,查询字符串,查询字符串提供了一种维护状态信息的方法,输入查询字符串以问号(?)开始的属性/值对,且可以有多个查询字

11、符串,它们之间以“&”分隔,服务器端状态维护技术,应用程序状态会话状态配置文件属性,应用程序状态,应用程序状态概述添加和读取应用程序状态中的值演示和练习:使用应用程序状态来存储信息删除应用程序状态的值,应用程序状态概述,应用程序状态是一种全局存储机制,可以供Web应用程序中的所有页面(或Global.asax文件)访问存储在HttpApplicationState 类的实例中,该类在客户端第一次从某个特定的 ASP.NET 应用程序虚拟目录中请求任何 URL 资源时创建 目的在于存储需要在服务器往返行程之间及页请求之间维护的信息,添加和读取应用程序状态中的值,应用程序状态存储在一个键/值字典中

12、,可以将特定于应用程序的信息添加到此结构以在页请求期间读取它一般在Global.asax文件中的应用程序启动事件中初始化应用程序状态值,而在所有的页面中都可以访问,Application.Lock();ApplicationTotalCounter=(int)ApplicationTotalCounter)+1;Application.UnLock();,int totalCounter=(int)Application.Get(“TotalCounter”);/访问变量值Application.Set(“TotalCounter”,10);/直接设置变量值,演示和练习:使用应用程序状态来存储

13、信息,多媒体演示,删除应用程序状态的值,调用HttpApplicationState类的Clear或RemoveAll方法,删除应用程序状态集合中的所有变量调用Remove或RemoveAt方法来清除某一个变量,Application.Remove(“TotalCounter”);/通过传递变量名来删除Application.RemoveAt(0);/通过传递序号来删除,会话状态,会话状态概述会话标识符会话状态事件会话状态模式使用会话状态演示和练习:实现简单的站点计数器功能实现自定义会话状态提供程序,会话状态概述,会话状态保存每个活动的 Web 应用程序会话的值,是 System.Web.Se

14、ssionState.HttpSessionState 类的一个实例,通过Page等类的Session属性公开会话状态采用键/值字典形式的结构来存储特定于会话的信息,这些信息需要在服务器往返行程之间及页请求之间进行维护 会话状态限制在当前浏览器中有效,用来存储短期、敏感的数据,会话标识符,浏览器的会话使用存储在 SessionID 属性中的唯一标识符进行标识会话 ID 使 ASP.NET 应用程序能够将特定的浏览器与 Web 服务器上相关的会话数据和信息相关联会话 ID 的值在浏览器和 Web 服务器间通过 Cookie 进行传输,如果指定了无 Cookie 会话,则通过 URL 进行传输,会

15、话标识符,无Cookie的SeesionID将Web.config 文件的 sessionState 节的 cookieless 属性设置为 true,可以指定不将会话标识符存储在 Cookie 中,而是存储在URL中,http:/localhost:1387/Demo_7/(S(hfohsn45do20gt55wuemca55)/Default.aspx,会话标识符,会话标识符,自定义会话标识符自定义类来提供和验证 SessionID 值,继承 SessionIDManager 类,然后用自定义的实现来重写 CreateSessionID 和 Validate 方法 创建实现 ISessio

16、nIDManager 接口的类来替换整个 SessionIDManager,会话状态事件,在Global.asax文件编写用于管理用户会话的事件:Session_OnStart 事件:在新会话开始时触发Session_OnEnd 事件:在会话被放弃或过期时触发,会话状态模式,会话状态模式概述ASP.NET 会话状态支持若干用于会话数据的存储选项在 Web.config 文件中为 sessionState 元素的 mode 属性分配一个 SessionStateMode 枚举值,可以指定ASP.NET 会话状态使用的模式,会话状态模式,InProc模式(进程内模式)是默认会话状态模式,使用Ses

17、sionStateMode枚举的InProc值指定进程内模式将会话状态值和变量存储在本地 Web 服务器上的内存中是唯一支持 Session_OnEnd 事件的模式,会话状态模式,StateServer模式(状态服务器模式)会话状态存储在一个称为 ASP.NET 状态服务的进程中,该进程是独立于 ASP.NET 辅助进程或 IIS 应用程序池的单独进程使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器,会话状态模式,SQL Server模式会话状态存储到一个 SQL Server 数据库中可以确保在重新启动 Web 应用程序时保留会话

18、状态,并使会话状态可用于网络场中的多个 Web 服务器,会话状态模式,Custom摸式(自定义模式)指定使用自定义会话状态存储提供程序来存储会话状态数据在Web.config中配置sessionState 的提供程序为自定义的会话状态存储提供程序,使用会话状态,向会话状态添加项以键/值对形式直接向Session中添加项以持久保留值,并且根据添加的键名称访问会话状态的值,/添加SessionUserName=John;/访问If(Session UserName!=null)string strUsername=Session UserName.ToString();,使用会话状态,会话的过期配

19、置会话过期时间编写代码设置Session对象的Timeout属性,来设置会话状态过期时间,void Session_Start(object sender,EventArgs e)Session.Timeout=30;,使用会话状态,删除会话状态中的项调用Session对象的Clear和RemoveAll方法来删除会话状态集合中的所有项调用Remove和RemoveAt删除其中的某一项调用Abandon方法取消当前会话,即会话立即过期,Session.Remove(UserName);Session.Abandon();,演示和练习:实现简单的站点计数器功能,多媒体演示,实现自定义会话状态提供

20、程序,适用场景需要将会话状态信息存储在 SQL Server 以外的数据源中需要使用不同于.NET Framework 附带的提供程序所使用的数据库架构来管理会话状态信息,实现自定义会话状态提供程序,实现办法创建一个继承 SessionStateStoreProviderBase 类的类,来实现自定义会话状态存储提供程序 实现从ProviderBase、SessionStateStoreProviderBase 抽象类继承的必需的属性和方法,配置文件属性,ASP.NET 提供了一个称为配置文件属性的功能,可存储特定于用户的数据,称作个性化设置,回顾,Web应用状态概述客户端状态维护技术服务器端状态维护技术,实验,参照实验手册,并在教师指导下完成实验报告。,习题,详见本书第七章后习题部分,请学生独立完成。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号