Cookie
存放在客户端的文本文件
客户端首次访问某站点时,没有任何Cookie信息。
服务器通过浏览器对客户端设置Cookie 指令。
当客户端再次访问某站点时,
浏览器会将 Cookie 文件传递给服务器
Cookie的限制:
必须通过浏览器进行操作
只能存储文本 即 String 类型
信息大小限制为 4k
存在较大的安全隐患
Cookie应用:
单值Cookie
单值Cookie的创建
HttpCookie ck_animal = new HttpCookie("animal");
ck_animal.Value = "Cat";
// 同
HttpCookie ck_animal = new HttpCookie("animal").Values["Cat"];
ck_animal.Expires = DataTime.Now.AddDay(1);
Response.Cookies.Add(ck_animal);
注意:设置有效期,如果不设置有效期,关闭浏览器,Cookie就失效了。
单值 Cookie的读取
if(Request.Cookies["animal"] != null)
{
_myStr = Request.Cookies["animal"].Value;
Response.Write(_myStr);
}
注意: Request.QueryString[""]是一个字符串
Request.Cookies[""]是一个对象
单值 Cookie的删除
删除Cookie值不同于清空变量值,Cookie是存放在客户端的硬盘上,变量则是内存上。
删除Cookie的思路:将CookieName 的有效期Expire设置为一个过期日期,再次写入客户端硬盘
标准写法:
Response.Cookies["animal"].Expires = DateTime.MinValue;
多值Cookie
多值Cookie的创建
主键操作 (添加,删除)
子键操作 (添加,删除,修改)
HttpCookies ck = new HttpCookie("multi_cookie"); //新建一个Cookies对象,设置主键
ck.Values.Add("name","xiaowang"); //添加子键
ck.Values.Add("age","20");
ck.Expires = DataTime.MaxValue;
Response.Cookies.Add(ck);
主键删除
ck.Expire = DateTime.MinValue;
Respons.Cookie["multi_cookie"].Expires = DataTime.MinValue;
非标准写法:
ck = Response.Cookie["KeyName"];
会在会话期间,保留一个没有Value的空Key,
即没有子键也没有过期时间,当浏览器被关闭后,Cookie不会被保存,
而发现重名的主键时也会被删除,小bug
多值Cookie读取:
HttpCookie _ck = Request.Cookies["multi_cookie"];
txt_multicookie.Text = _ck.Values["name"] + "," + _ck.Values["age"]
子键值的修改:
子键:Cookies.Values 对象集合
ck.Values.Add("KeyName","Value");
ck.Values.Set("KeyName","NewValue");
子键的删除:
ck.Values.Remove("KeyName");
ck.Values.Clear();
Cookie的应用实例
通过交互设置Cookie
ASP.NET 设置元素CSS属性
Control.Style.Add("CSS名称", "CSS值");
Control.CssClass="Class名称";
//Page_Load
if(!IsPostBack)
{
HttpCookie ck = Request.Cookies["css"];
if(
ck != null
)
{
string _color = ck.Values["color"];
string _fontsize = ck.Values["fontsize"];
ck_css.Values.Add("color",_color);
ck_css.Values.Add("fontsize",_size);
}
}
//创建Cookie
HttpCookie ck_css = new HttpCookie("css");
string _color = ddl_color.SelectedValue;
string _size = ddl_fontSize.SelectedValue;
ck_css.Values.Add("color",_color);
ck_css.Values.Add("fontsize",_size);
c_css.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(ck_css);
lab_css.Style.Add("color", _color);
lab_css.Style.Add("font-size", _fontsize);
感悟:Cooke在代码中 有点类似 使用全局变量的 感觉,这也能算是个特点吧
Cookie的遍历
遍历所有主键 ( 用来删除所有Cookie / 读取所有的 Cookie )
foreach( string _key in Request.Cookies.AllKeys ) { ... }
遍历某个主键下的子键 ( 针对多值Cookie的子键操作 )
foreach( string _subkey in Request.Cookies[_key].Values.Keys ) { ... }
Cookie
存放在客户端的文本文件
客户端首次访问某站点时,没有任何Cookie信息。
服务器通过浏览器对客户端设置Cookie 指令。
当客户端再次访问某站点时,
浏览器会将 Cookie 文件传递给服务器
Cookie的限制:
必须通过浏览器进行操作
只能存储文本 即 String 类型
信息大小限制为 4k
存在较大的安全隐患
Cookie应用:
单值Cookie
单值Cookie的创建
HttpCookie ck_animal = new HttpCookie("animal");
ck_animal.Value = "Cat";
// 同
HttpCookie ck_animal = new HttpCookie("animal").Values["Cat"];
ck_animal.Expires = DataTime.Now.AddDay(1);
Response.Cookies.Add(ck_animal);
注意:设置有效期,如果不设置有效期,关闭浏览器,Cookie就失效了。
单值 Cookie的读取
if(Request.Cookies["animal"] != null)
{
_myStr = Request.Cookies["animal"].Value;
Response.Write(_myStr);
}
注意: Request.QueryString[""]是一个字符串
Request.Cookies[""]是一个对象
单值 Cookie的删除
删除Cookie值不同于清空变量值,Cookie是存放在客户端的硬盘上,变量则是内存上。
删除Cookie的思路:将CookieName 的有效期Expire设置为一个过期日期,再次写入客户端硬盘
标准写法:
Response.Cookies["animal"].Expires = DateTime.MinValue;
多值Cookie
多值Cookie的创建
主键操作 (添加,删除)
子键操作 (添加,删除,修改)
HttpCookies ck = new HttpCookie("multi_cookie"); //新建一个Cookies对象,设置主键
ck.Values.Add("name","xiaowang"); //添加子键
ck.Values.Add("age","20");
ck.Expires = DataTime.MaxValue;
Response.Cookies.Add(ck);
主键删除
ck.Expire = DateTime.MinValue;
Respons.Cookie["multi_cookie"].Expires = DataTime.MinValue;
非标准写法:
ck = Response.Cookie["KeyName"];
会在会话期间,保留一个没有Value的空Key,
即没有子键也没有过期时间,当浏览器被关闭后,Cookie不会被保存,
而发现重名的主键时也会被删除,小bug
多值Cookie读取:
HttpCookie _ck = Request.Cookies["multi_cookie"];
txt_multicookie.Text = _ck.Values["name"] + "," + _ck.Values["age"]
子键值的修改:
子键:Cookies.Values 对象集合
ck.Values.Add("KeyName","Value");
ck.Values.Set("KeyName","NewValue");
子键的删除:
ck.Values.Remove("KeyName");
ck.Values.Clear();
Cookie的应用实例
通过交互设置Cookie
ASP.NET 设置元素CSS属性
Control.Style.Add("CSS名称", "CSS值");
Control.CssClass="Class名称";
//Page_Load
if(!IsPostBack)
{
HttpCookie ck = Request.Cookies["css"];
if(
ck != null
)
{
string _color = ck.Values["color"];
string _fontsize = ck.Values["fontsize"];
ck_css.Values.Add("color",_color);
ck_css.Values.Add("fontsize",_size);
}
}
//创建Cookie
HttpCookie ck_css = new HttpCookie("css");
string _color = ddl_color.SelectedValue;
string _size = ddl_fontSize.SelectedValue;
ck_css.Values.Add("color",_color);
ck_css.Values.Add("fontsize",_size);
c_css.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(ck_css);
lab_css.Style.Add("color", _color);
lab_css.Style.Add("font-size", _fontsize);
感悟:Cooke在代码中 有点类似 使用全局变量的 感觉,这也能算是个特点吧
Cookie的遍历
遍历所有主键 ( 用来删除所有Cookie / 读取所有的 Cookie )
foreach( string _key in Request.Cookies.AllKeys ) { ... }
遍历某个主键下的子键 ( 针对多值Cookie的子键操作 )
foreach( string _subkey in Request.Cookies[_key].Values.Keys ) { ... }