• 实现Cookie集合


    以前Insus.NET有在博客上有写过一篇《在程序中使用Cookie集合http://www.cnblogs.com/insus/archive/2011/05/25/2055531.html

    昨天Insus.NET有在命名用这方法的专项中,进行改写与优化。

    把Cookie类抽出并独立起来。

     private static HttpResponse Response
            {
                get
                {
                    return HttpContext.Current.Response;
                }
            }
    
            private static HttpRequest Request
            {
                get
                {
                    return HttpContext.Current.Request;
                }
            }
    Source Code

    这个cookie集合,当然存取单独cookie也行才对:

     public static string GetCookie(string cookieName)
            {
                return Request.Cookies[cookieName] == null ? "" : Request.Cookies[cookieName].Value;
            }
    
            public static void SetCookie(string cookieName, string value)
            {
                Response.Cookies[cookieName].Value = value;
            }
    
            public static void RemoveCookie(string cookieName)
            {
                HttpCookie cookie = Request.Cookies[cookieName];
                cookie.Expires = DateTime.Now.AddTicks(-1);
                Response.Cookies.Add(cookie);
            }
    Source Code

    下面是存储cookie集合,即是说单个cookie中,能够存储多个键值:



      private static Dictionary<string, object> GetCookies(string cookieName)
            {
                Dictionary<string, object> dic = new Dictionary<string, object>();
    
                if (Request.Cookies[cookieName] != null)
                {
                    HttpCookie cookie = Request.Cookies[cookieName];
                    if (cookie != null)
                    {
                        NameValueCollection nvc = cookie.Values;
                        foreach (string key in nvc.AllKeys)
                        {
                            dic.Add(key, cookie[key]);
                        }
                    }
                }
                return dic;
            }
    
            public static object GetCookies(string cookieName, string keyName)
            {
                Dictionary<string, object> dic = GetCookies(cookieName);
                if (dic.Count > 0 && dic.ContainsKey(keyName))
                {
                    return dic[keyName];
                }
    
                return null;
            }
    
            public static void SetCookies(string cookieName, Dictionary<string, object> dic)
            {
                HttpCookie cookie = Request.Cookies[cookieName] == null ? new HttpCookie(cookieName) : Request.Cookies[cookieName];
                foreach (KeyValuePair<string, object> val in dic)
                {
                    cookie[val.Key] = val.Value.ToString();
                }
                Response.Cookies.Add(cookie);
            }
    
            public static void RemoveCookies(string cookieName)
            {
                HttpCookie cookie = Request.Cookies[cookieName];
                cookie.Expires = DateTime.Now.AddTicks(-1);
                Response.AppendCookie(cookie);
            }
    
            public static void RemoveCookies(string cookieName, string keyName)
            {
                HttpCookie cookie = Request.Cookies[cookieName];
                if (cookie != null)
                    cookie.Values.Remove(keyName);
                Response.AppendCookie(cookie);
            }
    Source Code



    以上只是实现一个cookie类。真正在程序中,我们怎样去写cookie呢?也就是说如何使用。你可以写每一个cookie写成一个property,如下:



    你可以写成任一个想实现的cookie。以上只是简单写2个属性,一个方法。

    在网页中,就可以轻松使用:
    赋值:
     InsusBase.SystemLoginOk = true;
    InsusBase.SystemId = "Key001";


    获取值:
     Response.Write(InsusBase.SystemLoginOk);
    Response.Write(InsusBase.SystemId);



  • 相关阅读:
    点分治练习
    PKU-2723 Get Luffy Out(2-SAT+二分)
    tarjan求割点与割边
    tarjan缩点练习 洛谷P3387 【模板】缩点+poj 2186 Popular Cows
    数算日子荣耀神
    《JavaScript DOM编程艺术》笔记
    CSS链接的样式a:link,a:visited,a:hover,a:active
    chrome调试技巧--持续更新
    CSS文字大小单位PX、EM的区别
    【转】如何成为一名优秀的web前端工程师(前端攻城师)?
  • 原文地址:https://www.cnblogs.com/insus/p/7654423.html
Copyright © 2020-2023  润新知