- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Application是一种全局性的信息存储机制,可被同一个Web应用程序中的所有页面使用 页面中使用“Application[Key]”的方式来存取在Application对象中的信息 * Demo: UseApplication * 可以在多个浏览器窗口中访问同一个ASP.NET网站中的页面,这些页面可以共享Application中的信息。 为保证数据的同步,修改Application中的数据时要加锁。 Application中的数据保存在服务器的内存中,除非Web服务器重启,否则,这些数据都是有效的。 * 本讲中介绍的Application对象是HttpApplicationState的实例,它与第4讲要介绍的HttpApplication是两回事,一定要注意区分清楚。 * 为何说“Web状态保持”是Web应用程序开发中一个带有根本性的问题? * ASP.NET程序设计 之 HTTP协议的无状态特性 主要的状态保持技术 ViewState Session Application Cookie Querying String Hidden Field Web.Config 跨页回发 * 引发“Web状态保持”问题的现实背景 Demo: ClickCounter1.aspx(ClickCounter网站) 不管单击多少次按钮,始终只显示1次 * 在向Web服务器提交的多次HTTP请求之间,Web服务器不会保留前一次访问的状态信息,不管同一个客户端连续多少次访问,Web服务器都将其看成是一个“陌生人”的“拜访”。 所谓“状态”,其实就是与每次HTTP请求相关联的一些信息,比如用户在某个页面上输入的一些数据。 在实际开发中,必须要在多次HTTP请求之间保存状态。因此,任何一个Web开发技术都必须面对这样一个问题并给出一个解决方案。 * 在针对同一页面的多次请求间保存状态 Demo: ClickCounter2.aspx(UseViewState网站) 要点: 1 如何区分是第一次访问还是第二次回发? Page类的IsPostBack属性 2 保存在ViewState对象中的数据都拥有一个唯一标识(Key),对象本身则被称为值(Value) * 只有可以被“序列化”的对象才可以保存在ViewState中。 所谓“序列化(Serializable)”,指的是将一个对象的属性值保存到一个流(Stream)对象中,在需要时可以从流对象中重新创建对象。要创建一个可序列化的类,只需要在类前面添加[Serializable]标记。 Demo: ClickCounter3.aspx * 创建页面类对象,调用其ProcessRequest()方法 提取出页面上的控件状态信息对象 将控件状态信息对象序列化,存入到一个隐藏域__VIEWSTATE中 生成HTML代码 HTTP请求 其中 其他处理工作 Client端 Server端 * 创建页面类对象,调用其ProcessRequest()方法 处理回发的数据,更新控件状态,进行一系列的后继处理工作 将当前控件状态信息对象序列化,存入到一个隐藏域__VIEWSTATE中 HTTP请求 其中 Client端 Server端 从发回的隐藏域__VIEWSTATE中提取信息,反序列化,得到状态对象,复原控件状态 生成HTML代码 其他处理工作 * ViewState只能在同一个页面的多次回发间保存状态信息。它不能解决在多个页面间共享状态信息的问题,而这个问题在电子商务网站中是必须解决的。 * 在同一网站的多个页面间共享信息 同一个浏览器窗口访问同一个网站的多个页面,称为“Session(会话状态)”。 可以使用Session在多个页面间保存信息。 使用Page或HttpContext对象的Session属性访问Session Session的使用与ViewState类似,使用“Session[Key]”的方式存取放在Session对象中的数据 * Demo: ShoppingCart * 商品有自己的标识: 书-book:复选框控件的ID 电脑- computer:复选框控件的ID 通过检查页面上复选框选中与否了解用户选中了哪些商品。并将这些选中的商品保存到Session中。这些信息按照“商品标识(Key)和商品名称(Value)”的格式保存。 通过遍历保存在Session的购物记录了解用户选购了哪些商品,使用BulletedList控件显示它们。 * 注意控件是如何动态创建的 注意页面状态是如何保存的。 一个关键点: 页面控件的事件响应函数的调用是在Page_Load()函数调用过之后 请同学们在课后不看源码,自己动手将此示例程序做一遍,一定会
原创力文档


文档评论(0)