ViewState对象
一.ViewState的原理
1.浏览器请求Default.aspx页面
2.在服务器端 发现创建的ViewState 这个时候 会自动创建一个名字叫做__VIEWSTATE(双下滑线 全部是大写)
的隐藏域 其隐藏域的值经过base64加密以后返回到浏览器端这一加密过程在页面生命周期
的SaveState事件中的SaveAllState方法中完成
3.当浏览器提交表单的时候 将__VIEWSTATE的隐藏域也一起提交到服务端 这个时候 页面生命周期的ReadState事件
的ReadAllState方法会将加密后的值反base64解密 最后将值赋值给名字叫做name的ViewState
小结:ViewState只能在同一个页面的连续多次请求之间保存信息,页面跳转之后信息就会丢失,相当于局部变量。
用法:ViewState["test"]=test;ViewState.add("test","test");
Session对象
定义:
Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。
应用:
不同页面之间需要传递较为复杂的数据(如对象)
保存用户的登录信息,未登录者禁止访问相关页面。
属性 | 说明 |
---|---|
sessionID | 包含唯一的用户会话标识符 |
Timeout | 用户设置超时的时间,单位为分钟 |
属性 | 说明 |
---|---|
ADD(string name,object value) | 添加“键–值对” |
Remove(string name) | 根据键删除指定项 |
clear() | 从会话状态集合中移除所有的键和值 |
Abandon() | 结束session,取消当前会话 |
Cookie对象
指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)
特点:
- 存储少量不重要的数据
- 存储在客户端的文本文件中(必须设置有效期,否则不被存储)
- 安全性差
- 存储的数据类型——字符串
- 浏览器窗口无关,但与访问的站点相关
- 具体特点的过期时间和日期
- 在客户端存储后,将随着浏览器对相关网站页面请求而一并发送到web服务器
创建方法
//方法一
Response.Cookies["wpe"].Value = "wpe";
//方法二
HttpCookie hcCookie = new HttpCookie("wpe", "wpe");
hcCookie.Expires = DateTime.Now.AddHours(1);//设置有效期
Response.Cookies.Add(hcCookie);
/*
string value = Request.Cookies["wpe"].Value;
*/
Application对象
定义:应用程序级别的数据保存,相当于全局变量
特征:
- 位置:服务器内存,执行速度快。
- 使用范围:整个应用程序
- 类型:任意类型
- 生命周期:应用程序开始创建带销毁。
- 使用方法与Session一样采用“键–值”对方式
应用:
实现用户访问量,在线人数的统计
总结:
对象名称 | 存储位置 | 有效时间 | 信息共享范围 |
---|---|---|---|
Requeset,Response | 请求和响应过程中 | 请求结束前 | 一次请求的一个页面 |
ViewState | 被请求的页面 | 页面关闭前 | 多次请求的一个页面 |
Seesion | Web服务器 | 规定时间内 | 同一个网站的不同页面 |
Cookie | 客户端的硬盘中 | 规定时间内 | 同一网站的不同页面 |
Application | Web服务器端 | IIS重启前 | 整个应用程序中 |