因为http是无状态的对象,所以微软提供了状态对象
隐藏域:
隐藏域不适合长期保存,页面关闭隐藏域里面的值也关闭
登录用户的数据不能保存在隐藏域中
隐藏域只存在于当前页面
隐藏域不能放敏感的信息,也不能保存大量的数据
通过value取值
如果value有值代表执行编辑操作,没有执行插入操作
cookie:
以一种文件将我们要保存的数据存储起来
把用户的数据隐藏的保护到指定的位置上
保存不是很隐私的信息,但是需要一段时间存储的东西都可以让cookie存储
cookie保存在客户端,设置保存的时间expires,cookie没有删掉这说,只有过期,服务器压力小。缺点,用户禁止的话就不能往里边写东西
获取cookie:request.cookies["name"].value;
创建cookie:是服务器作用于浏览器的行为,即cookie的信息是由服务器写入到客户端的,response.cookies["name"].value="你好";或者可以这样写 httpcookie cookie=new httpcookie("name","你好"); cookie.expires=datetime.now.adddays(1);response.cookies.add(cookie);
一个网站的所有网页都有效
url:把参数作为请求的一部分
request.quertstring,总有效
viewstate:针对页面对象(每个页面都有一个自己的viewstate,所以是页面对象)进行状态保存的一种机制,不能传值,适合放大量的数据,为了提高效率,有时候需要禁用 viewstate,如果数据经常大量的修改,不建议用viewstate ,保存在客户端;当把一个对象保存到viewstate时,记得把对象标记为serialize
application:
不用的时候处理掉,减轻服务器压力,存在服务器端
session:
被存放在服务器上,要想取数据必须从服务器上取,每个人都可以创建一个session,session针对每一个客户(不同的浏览器)或者每一个独立的会话存储的一个值。客户端知 道ID,根据ID取数据。缺点:把东西写到服务器上,人多的话服务器的压力过大
可以通过cookie将数据存储在浏览器上,通过模式设置
session分为服务器端session和客户端session
服务器端session:是一个只读的
下面对上面几个对象进行比较
viewstate cookie session application
范围: 单个用户 单个用户 单个用户 整个应用程序
位置: 客户端 客户端 服务器 服务器
有效期:页面关闭 默认是浏览器关闭 默认是20分钟 应用程序关闭
安全性:较低 较低 较高 较高