ASP.NET的内置对象-Cookie

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 ) { ... }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值