zoukankan      html  css  js  c++  java
  • cookie 和 session 基本使用 以及 封装

    Cookie:

    是一小段文本信息,用户请求页面的时候,在浏览器和服务器之间传递。用户每次访问的时候都会记录cookie,cookie里可以包含用户信息,浏览的历史记录等等;Cookie是由服务器端生成,但是它是属于客户端的,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。

    基本语法:

    编写cookie
    存:
    ---创建cookie对象,分配自定义cookie名称
    HttpCookie mycookie =new HttpCookie(“ UserSettings”);用户自定义名称;
    mycookie.values.add(“name1”,”value1”); 为cookie添加键值对
    Mycookie.values.add(“name2 ”,”value2”);
    换种写法  mycookie【“name1”】=“value1”;也是一样
    mycookie.Expires=    DateTime.Now.AddDays(1d);过期时间设置为一天
    Response.Cookies.Add(mycookie); 添加到cookie集合中去
    
    注意的地方:不指定该 Cookie 的过期限制,则该 Cookie 将不会保留在客户端计算机上,当用户会话到期时该 Cookie 即到期。Cookie 仅能存储 String 类型的值。在将任何非字符串值存储到 Cookie 中之前,必须将它们转换为字符串
    取:
    if(Request.Cookies[“ UserSettings”]!=null){
    string getVal=””;
    if(Resquest.Cookies[“ UserSettings”][“name1”]!=null){
    getVal=Resquest.Cookies[“ UserSettings”][“name1”];
    }
    }
    //删除cookie
    //只要把cookie设置成过期时间;
    if (Request.Cookies["UserSettings"] != null)
    {
        HttpCookie myCookie = new HttpCookie("UserSettings");
        myCookie.Expires = DateTime.Now.AddDays(-1d);
        Response.Cookies.Add(myCookie);
    }

    cookie封装成一个方法:

     1 创建cookie对象并且赋value,修改cookie的value值可以用这个方法;因为必须重新设过期时间
     2 strCookieName:  cookie 的对象名
     3 iExpires: cookie 的有效时间   0 代表一周, -1 代表永久 ,大于2小于60 代表天数  其他代表  分钟数
     4 strValue: cookie对象的值
     5 public static void  SetCookie(string strCookieName, int iExpires ,string strValue) {
     6 HttpCookie objCookie=new HttpCookie(strCookieName);
     7 objCookie.Value=System.Web.HttpUtility.UrlEncode(strCookieName);
     8 If(iExpires>=0){
     9 switch(iExpires>=0){
    10 case 0: 
    11      objCookie.Expires=DateTime.Now.AddDays(7);break;
    12 case -1:
    13      objCookie.Expires=DateTime.MaxValue;    break;
    14 }
    15  default:
    16 if( iExpires>=60)
    17   objCookie.Expires=DateTime.Now.AddSeconds(iExpires);
    18 else
    19 objCookie.Expires=DateTime.Now.AddDays(iExpires);
    20 
    21 }
    22 HttpContext.Current.Response.Cookie.Add(objCookie);
    23 } 
    24 
    25 读取cookie
    26 传入相同的名字就可以了。
    27 读取cookie某个对象的value 如果不存在就返回字符串”“
    28 public static string Getcookie(string strCookieName){
    29 switch(HttpContext.Current.Request.Cookies[strCookieName] == null){
    30    case true:
    31           strCookieName= String.Empty; break;
    32    case false:     
    33                         strCookieName=System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies[strCookieName].Value);break;
    34 }
    35          return  strCookieName;
    36 } 

    最常用的就是session 了

    选择封装

    //存session的值
    // 设置session的值
    public static void SetSession(string name, object value){
     try{ 
            HttpContext.Current.Session[name]=value;
       }
    catch(Exception ex ){
           WriteErrorLog(ex,”HelperError”)
       }
    } 
    //错误日志
    public static void WriteErrorLog(Exception ex,string ErroType){
    if(ex==null)
    return;
    System.Text.StringBuilder  sbui=new StringBuilder();
    string  datetime =DateTime.Now.ToString("yyyyMMddHHmmss_ffff");
                sbui.Append("错误等级:
    ");
                sbui.Append(ErrorType);
                sbui.Append("
    错误的信息:
    ");
                sbui.Append(ex.Message);
                sbui.Append("
    错误的堆栈:
    ");
                sbui.Append(ex.StackTrace);
                sbui.Append("
    出错的方法名:
    ");
                sbui.Append(ex.TargetSite.Name);
                sbui.Append("
    出错的类名:
    ");
                sbui.Append(ex.TargetSite.DeclaringType.FullName);
                WriteErrorLog(sbui.ToString());
    }
     //获取session的值  这个事可以取实体
    public static object GetSession(string name){
         object  obj_Value=null;
         try{
             obj_Value=HttpContext.Current.Session[name];
         }
    catch(Exception ex){
         obj_Value=null;
             WriteErrorLog(ex,”HelperError”);
    }
     return obj_Value;
    
    }
    //这个取字符串
      public static string GetStringSession(string name) {
                string Str_Value = "";
                try {
                    if (HttpContext.Current.Session[name] != null)
                        Str_Value = HttpContext.Current.Session[name].ToString();
                }
                catch (Exception ex) {
                    Str_Value = String.Empty;
                    WriteErrorLog(ex, "HelperError");
                }
                return Str_Value;
            }
  • 相关阅读:
    重温数据结构与算法(1) 构建自己的时间测试类
    读<<CLR via C#>>总结(11) 详谈事件
    读<<CLR via C#>>总结(13) 详谈泛型
    重温数据结构与算法(2) 编程中最常用,最通用的数据结构数组和ArrayList
    由String类的Split方法所遇到的两个问题
    读<<CLR via C#>>总结(6) 详谈实例构造器和类型构造器
    让我们都建立自己的知识树吧
    读<<CLR via C#>>总结(5) 如何合理使用类型的可见性和成员的可访问性来定义类
    读<<CLR via C#>>总结(10) 详谈委托
    读<<CLR via C#>>总结(4) 值类型的装箱和拆箱
  • 原文地址:https://www.cnblogs.com/mancomeon/p/4277677.html
Copyright © 2011-2022 走看看