5-5/6 跨页面传值之Cookie
Cookie是放在客户端电脑的小文本文件;
是一种能够让网站服务器把少量数据存储到客户端的硬盘或内存中,或是从客户端的硬盘读取数据的一种技术;
保存的信息片段以“键/值”对的形式存储;
一个网站只能取得它放在用户计算机中的信息,它无法从其他的Cookies文件中取得信息,也无法得到用户计算机上的其他任何信息;
服务器对Cookie设置的指令是通过客户端的浏览器写入客户端的硬盘中;
注意:Request.Cookies["animal"]是一个对象;
传送页面,在Button控件中实现Cookie的设置:
注意删除Cookie与删除变量的区别:
变量存放在内存中,服务器可以直接操作删除,Cookie存在与客户端的硬盘中,服务器不能直接删除;
删除Cookie的代码实现:
Cookie对象的常用属性:
Expires: 获取或设置此Cookie的过期日期和时间;
Name: 获取或设置Cookie的名称;
Value: 获取或设置单个Cookie值;
Value说: 获取在单个Cookie对象中包含的键值对的集合;
Cookie的使用:
使用之前在自己的程序中引用System.Web命名空间:using System.Web;
对象Request和Response都提供一个Cookie集合,可以利用Response对象设置Cookies的信息,使用Request对象获取
Cookies的信息;
//创建一个Cookie的实例:
HttpCookie cookie = new HttpCookie("test");
cookie.Values.Add("Name", "张三");
Response.Cookie.Add(cookies);
该Cookie被添加;
//为Cookie设置一年的生命周期
cookie.Expires = DateTime.NowAddYears(1);
//利用Cookie的名字从Request.Cookie集合中取得信息:
HttpCookie cookie1 = Request.Cookies["test"];
string name;
if(cookie1 != null)
{
name = cookie1.Values["Name"];
}
修改Cookie的值:
修改某个Cookie实质上是指用新的值创建新的Cookie,并把该Cookie发送到浏览器(通过浏览器进行修改),覆盖客户机上旧的Cookie;
实例:修改用于存储站点访问次数的Cookie的值
int counter;
if(Request.Cookies("counter")==null)
{ counter = 0; }
else
{ counter++; }
Reponse.Cookies("counter").Value = counter.ToString;
Respnse.Cookies("counter").Expires = DateTime.Now.AddDays();
删除Cookie:(实质为修改Cookie的一种形式)
删除Cookie是修改Cookie的一种形式。由于Cookie 位于用户的计算机中,所以无法将其直接删除,可以通过浏览器来删除Cookie;
删除Cookie的代码:
HttpCookie cookie = new HttpCookie("test");
int limit = Request.Cookie.Count; //获取当前域的Cookie的数量
for(int i=0; i<limit; i++)
{
cookie = Request.Cookies(i); //读取当前Cookie
cookie.Expires = DateTime.Now.AddDays(-1); //设置过期
Response.Cookies.Add(cookie); //覆盖
}
单值Cookie结构,一个主键名称对应一个值:
多值Cookie结构:
主键名称不相同,子键名称可以相同;
多值主键添加的代码:
读取多值主键的代码:
删除多值主键的代码:
子键的修改:
子键修改的代码:
子键的删除: