版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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
3、 = false; , ,在配置文件中设置是否保留视图状态,在配置文件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
5、 控制Cookie的范围 演示和练习:控制Cookie的范围 修改和删除Cookie 演示和练习:删除Cookie和删除多值Cookie的子键 Cookie和会话状态,Cookie概述,Cookie 是存储在客户端文件系统的文本文件中,或者存储在客户端浏览器会话的内存中的少量的数据 Cookie 是随页输出并由服务器发送到客户端的特定于站点的信息 Cookie 可以是临时的(随着浏览器关闭而自动消失),也可以是永久性的 Cookie 保存在客户端设备上,当浏览器请求某页时,客户端会将 Cookie 中的信息连同请求信息一起发送。服务器可以读取 Cookie 的值,编写Cookie,使用Http
6、Response 对象 来设置Cookie,需要设置Cookie名称、值、过期时间等信息,/通过新建HttpCookie对象来添加Cookie HttpCookie 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
7、userName; if (Request.CookiesuserName != null) userName = Request.CookiesuserName .Value; ,演示和练习:编写Cookie,多媒体演示,编写多值Cookie,在一个 Cookie 中存储多个名称/值对,名称/值对称为子键,/直接添加Cookie Response.CookiesuserInfouserName = patrick; Response.CookiesuserInfolastVisit = DateTime.Now.ToString(); Response.CookiesuserInfo.Exp
8、ires = DateTime.Now.AddDays(1); /读取Cookie值 string userName; if (Request.CookiesuserName != null) if (Request.CookiesuserInfo userName != null) userName = Request.CookiesuserInfouserName ; ,演示和练习:编写多值Cookie,多媒体演示,控制Cookie的范围,限制 Cookie 的域范围 将 Cookie 限制到某个文件夹或应用程序,控制Cookie的范围,限制 Cookie 的域范围,Response.Co
9、okiesdomain.Value = DateTime.Now.ToString(); Response.Cookiesdomain.Expires = DateTime.Now.AddDays(1); Response.Cookiesdomain.Domain = support. ;,控制Cookie的范围,将 Cookie 限制到某个文件夹或应用程序,HttpCookie appCookie = new HttpCookie(AppCookie); appCookie.Value = written + DateTime.Now.ToString(); appCookie.Expire
10、s = DateTime.Now.AddDays(1); appCookie.Path = /App1; Response.Cookies.Add(appCookie);,演示和练习:控制Cookie的范围,多媒体演示,修改和删除Cookie,由于Cookie存储在客户端,不能直接修改和删除 Cookie 通过给Cookie赋新值替换旧版本Cookie的办法来修改 可以通过设置Cookie立即过期的办法来删除Cookie,演示和练习:删除Cookie和删除多值Cookie的子键,多媒体演示,Cookie和会话状态,服务器在用户访问时为每个用户建立唯一的会话,该会话将一直延续到用户访问结束,AS
11、P.NET通过以下办法维护该会话状态 存储在Cookie中的非永久性会话状态 存储在站点中页面的 URL 中的无Cookie会话,查询字符串,查询字符串提供了一种维护状态信息的方法 ,输入查询字符串以问号 (?) 开始的属性/值对,且可以有多个查询字符串,它们之间以“ ApplicationTotalCounter = (int)ApplicationTotalCounter)+1; Application.UnLock();,int totalCounter = (int)Application.Get(“TotalCounter”); /访问变量值 Application.Set(“Tot
12、alCounter”,10); /直接设置变量值,演示和练习:使用应用程序状态来存储信息,多媒体演示,删除应用程序状态的值,调用HttpApplicationState类的Clear或RemoveAll方法,删除应用程序状态集合中的所有变量 调用Remove或RemoveAt方法来清除某一个变量,Application.Remove(“TotalCounter”);/通过传递变量名来删除 Application.RemoveAt(0);/通过传递序号来删除,会话状态,会话状态概述 会话标识符 会话状态事件 会话状态模式 使用会话状态 演示和练习:实现简单的站点计数器功能 实现自定义会话状态提供
13、程序,会话状态概述,会话状态保存每个活动的 Web 应用程序会话的值,是 System.Web.SessionState.HttpSessionState 类的一个实例,通过Page等类的Session属性公开 会话状态采用键/值字典形式的结构来存储特定于会话的信息,这些信息需要在服务器往返行程之间及页请求之间进行维护 会话状态限制在当前浏览器中有效,用来存储短期、敏感的数据,会话标识符,浏览器的会话使用存储在 SessionID 属性中的唯一标识符进行标识 会话 ID 使 ASP.NET 应用程序能够将特定的浏览器与 Web 服务器上相关的会话数据和信息相关联 会话 ID 的值在浏览器和 W
14、eb 服务器间通过 Cookie 进行传输,如果指定了无 Cookie 会话,则通过 URL 进行传输,会话标识符,无Cookie的SeesionID 将Web.config 文件的 sessionState 节的 cookieless 属性设置为 true,可以指定不将会话标识符存储在 Cookie 中,而是存储在URL中, ,http:/localhost:1387/Demo_7/(S(hfohsn45do20gt55wuemca55)/Default.aspx,会话标识符,会话标识符,自定义会话标识符 自定义类来提供和验证 SessionID 值,继承 SessionIDManager
15、类,然后用自定义的实现来重写 CreateSessionID 和 Validate 方法 创建实现 ISessionIDManager 接口的类来替换整个 SessionIDManager,会话状态事件,在Global.asax文件编写用于管理用户会话的事件: Session_OnStart 事件:在新会话开始时触发 Session_OnEnd 事件:在会话被放弃或过期时触发,会话状态模式,会话状态模式概述 ASP.NET 会话状态支持若干用于会话数据的存储选项 在 Web.config 文件中为 sessionState 元素的 mode 属性分配一个 SessionStateMode 枚举
16、值,可以指定ASP.NET 会话状态使用的模式,会话状态模式,InProc模式(进程内模式) 是默认会话状态模式,使用SessionStateMode枚举的InProc值指定 进程内模式将会话状态值和变量存储在本地 Web 服务器上的内存中 是唯一支持 Session_OnEnd 事件的模式,会话状态模式,StateServer模式(状态服务器模式) 会话状态存储在一个称为 ASP.NET 状态服务的进程中,该进程是独立于 ASP.NET 辅助进程或 IIS 应用程序池的单独进程 使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器,
17、,会话状态模式,SQL Server模式 会话状态存储到一个 SQL Server 数据库中 可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器, ,会话状态模式,Custom摸式(自定义模式) 指定使用自定义会话状态存储提供程序来存储会话状态数据 在Web.config中配置sessionState 的提供程序为自定义的会话状态存储提供程序,使用会话状态,向会话状态添加项 以键/值对形式直接向Session中添加项以持久保留值 ,并且根据添加的键名称访问会话状态的值,/添加 SessionUserName =John; /访问 If(Sess
18、ion UserName != null) string strUsername = Session UserName.ToString(); ,使用会话状态,会话的过期 配置会话过期时间 编写代码设置Session对象的Timeout属性,来设置会话状态过期时间,void Session_Start(object sender, EventArgs e) Session.Timeout = 30; , ,使用会话状态,删除会话状态中的项 调用Session对象的Clear和RemoveAll方法来删除会话状态集合中的所有项 调用Remove和RemoveAt删除其中的某一项 调用Abandon方法取消当前会话,即会话立即过期,Session.Remove(UserName); Session. Abandon();,演示和练习:实现简单的站点计数器功能,多媒体演示,实现自定义会话状态提供程序,适用场景 需要将会话状态信息存储在 SQL Server 以外的数据源中 需要使用不同于 .NET Framework 附带的提供程序所使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大连科技学院就业指南
- 配电操作制度
- 2026年浙江湖州学院高层次人才(教师)引进16人笔试参考题库及答案解析
- 2026年贵州警察学院高层次人才引进20人笔试备考题库及答案解析
- 自愿离婚协议书
- 农村夫妻离婚协议书
- 2026年及未来5年市场数据中国超级不锈钢行业市场全景监测及投资前景展望报告
- 电路图形制作工安全检查强化考核试卷含答案
- 2026年六安市裕安区新安镇公开招考储备村级后备干部25名考试备考题库及答案解析
- 化工吸收工安全实操强化考核试卷含答案
- 多器官功能障碍综合征(MODS)
- 《唐诗三百首》导读课(二稿)
- 【5套打包】兰州市小学五年级数学下期中考试单元检测试题(含答案解析)
- 重卡结构解析图
- 安踏集团零售管理培训手册定
- 职场小白快速读懂财务三张报表
- 土地机旋耕旋施工的方案设计
- 《我参与 我奉献》第4课时示范公开课教学PPT课件【道德与法治五年级下册】
- 2021-2022中国滑雪产业白皮书
- GB/T 5974.1-2006钢丝绳用普通套环
- FZ/T 52051-2018低熔点聚酯(LMPET)/聚酯(PET)复合短纤维
评论
0/150
提交评论