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("错误等级:\r\n"); sbui.Append(ErrorType); sbui.Append("\r\n错误的信息:\r\n"); sbui.Append(ex.Message); sbui.Append("\r\n错误的堆栈:\r\n"); sbui.Append(ex.StackTrace); sbui.Append("\r\n出错的方法名:\r\n"); sbui.Append(ex.TargetSite.Name); sbui.Append("\r\n出错的类名:\r\n"); 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; }
一万个小时的专注带给你是无限的可能