- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章web应用程序状态保存
Demo: UseApplication * 可以在多个浏览器窗口中访问同一个ASP.NET网站中的页面,这些页面可以共享Application中的信息。 为保证数据的同步,修改Application中的数据时要加锁。 Application中的数据保存在服务器的内存中,除非Web服务器重启,否则,这些数据都是有效的。 * 本讲中介绍的Application对象是HttpApplicationState的实例,它与第4讲要介绍的HttpApplication是两回事,一定要注意区分清楚。 * 在不同网站间共享信息的简单方法 查询字符串是在页URL结尾附加的信息 /Book/SearchResult.aspx?type=0text=ASP 查询字符串以问号开始,并包含一个或多个 “属性名=值” 格式的项。 在目标网页中,可以使用 Request.QueryString[属性名] 来取出对应属性的值。 * Demo: UseQueryString * 为了能在URL中正确传送中文,必须将中文数据进行编码后再予以传输,可调用以下方法: HttpServerUtility.UrlEncode()/UrlDecode() 在页面中,可以通过Server属性来访问此方法。 * 沟通JavaScript(前端)和C#(后端)代码的桥梁 HiddenField控件会自动生成type=“hidden”的input元素,并可设置其值。 HiddenField控件的值可以在服务器端用C#访问,也可以客户端用JavaScript访问,因此,这是沟通JavaScript和C#代码的一种简单而有效的手段。 * Demo: UseHiddenField * 隐藏域的值以明文方式直接暴露在客户端,因此,不要保存重要的信息。 隐藏域可以存储的数据大小有限。 * 直接在两个相邻页中传送信息 如果两个页面需要相互交换信息,并且有非常明确的顺序关系,则可以使用跨页回发技术。 Demo: CrossPagePost * 源页引发回发的控件设定PostBackUrl属性,目标页使用PreviousPage.FindControl(控件ID )的方法访问前页的控件。 当两个页面之前有着明显的访问顺序时,可以使用跨页回发。 * 本讲重点介绍了Web应用程序中状态信息保存的相关技术,这是开发ASP.NET网站必须掌握的知识。将在后面的开发实践中反复应用。 需要重点把握每种技术适宜的场合。 本讲中有多处地方涉及了页面回发的问题,可以看到理解页面回发原理是非常重要的,第8章将会站在一个更高的角度来解析页面回发原理。 * 为何说“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中 生
文档评论(0)