黑马程序员__常用状态(信息)保持方式
常用的状态(信息)保持方式
- ViewState:
ASP.NET的.aspx页面特有,页面级的;
就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式;服务端控件的值都自动保存在ViewState中; - Cookie:
Http写一下的一种方式,通过该方式,服务器或脚本能够在客户机上维护状态信息;
就是在客户端保存客户端单独使用的数据的一种方式;
就像病例一样,医院直接给你带回家. - Session:现在指的是进程内的Session
在服务端保存客户端单独使用数据的一种方式;
就像银行账户,钱都存到银行里,你就拿一张银行卡(SessionID)回家. - Application:
在服务端保存共享数据的一种方式.
就像单人公共厕所,谁进去都行,但一次进去一个,进去就锁上门,出来就把锁打开.
ViewState(页面级)
- 两种使用方式: 作用域:页面级
1,用户数据保存方式:ViewState["myKey"]="myData"
读取数据方式:
string myData;
if(ViewState["myKey"]!=null)
{ myData=(string)ViewState["myKey"]; }
注意:ViewState不能存储所有的数据类型,仅支持可序列化对象.
2,非单值服务器控件也自动保存在ViewState中
例如:下拉框 (文本框是单值控件,所以不会保存在ViewState中) - 使用ViewState前提:
页面上必须有一个服务端窗体标记(<form runat="server">) - 服务器在接受到用户请求的一个页面后,会自动在请求报文中找看是否包含_VIEWSTATE的隐藏域,如果有,则将中间的值解码后添加到页面的ViewState属性中.
- 服务器在输出的时候,也会自动将ViewState中的值添加到表单里名叫_VIEWSTATE的隐藏域中.
- ViewState适用于同一个页面在不关闭的情况下多次与服务器进行POST表单交互.
- 最后解释:ViewState就是服务器将数据存放在输出浏览器的HTML代码,并且通过浏览器提交表单时重新获取这些数据的一种机制.
Cookie
概念:在浏览器端长久保存数据的一种机制.(浏览器缓存Cookie,浏览器硬盘存Cookie).本质上,就是在浏览器端的一个txt文件.
- Cookie是一种能够让网站服务器把少量数据(4kb左右)存储到客户端的硬盘或内存,并且读取出来的一种技术.
- 当你浏览某网站时,由web服务器放置于你硬盘上的一个非常小的一个文件,他可以记录你的用户ID,浏览过的网页或者停留的时间等网站想要你保存的信息.当你再次通过浏览器访问该网站时,浏览器会自动将属于该网站的Cookie发送到服务器去,服务器通过读取Cookie,得知你的相关信息,就可以做出相应的动作.如在页面显示欢迎你的标语,或者让你不用输入ID和密码就自动登录等等.
- 浏览器访问一个站点时,只将属于当前站点的cookie发到服务器.(根据域名)
- cookie不兼容浏览器!(不同浏览器不共享Cookie文件数据)
- 最好是将保存的内容在服务端加密,然后再写入cookie.
- 在硬盘中存放的位置与使用的操作系统和浏览器密切相关.
- 浏览器保存Cookie有两种方式:
1,浏览器的内存中.
2,浏览器电脑所在的硬盘中.为将要写入到浏览器的Cookie对象设置失效时间:
cook.Expires = DateTime.Now.AddMinutes(5);//设置Cookie 5分钟后失效.
开发场景:常用于登录和保存用户最近浏览商品.
从浏览器发出来的Cookie的Expires属性值是无效的.(浏览器在向服务器发送Cookie的时候,没有将Cookie的失效时间发送过去) - 如何删除Cookies?
创建一个相同键的Cookie对象,设置失效时间为负数(其实就是创建一个已经失效的的Cookie),发给浏览器,浏览器会用这个失效的cookie把原来的cookie给覆盖掉,那么就达到了删除cookie的目的. - 注意!
如果不设置失效时间,则浏览器会将此cookie保存到浏览器缓存中;如果设置,就存硬盘里。