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封装成一个方法:


 创建cookie对象并且赋value,修改cookie的value值可以用这个方法;因为必须重新设过期时间

 strCookieName:  cookie 的对象名

 iExpires: cookie 的有效时间   0 代表一周, -1 代表永久 ,大于2小于60 代表天数  其他代表  分钟数

 strValue: cookie对象的值

public static void  SetCookie(string strCookieName, int iExpires ,string strValue) {
 HttpCookie objCookie=new HttpCookie(strCookieName);
 objCookie.Value=System.Web.HttpUtility.UrlEncode(strCookieName);
 If(iExpires>=0){
 switch(iExpires>=0){
 case 0: 
      objCookie.Expires=DateTime.Now.AddDays(7);break;
 case -1:
      objCookie.Expires=DateTime.MaxValue;    break;
 }
  default:
 if( iExpires>=60)
   objCookie.Expires=DateTime.Now.AddSeconds(iExpires);
 else
 objCookie.Expires=DateTime.Now.AddDays(iExpires);
 
 }
 HttpContext.Current.Response.Cookie.Add(objCookie);
 }

 

 读取cookie

 传入相同的名字就可以了。

 读取cookie某个对象的value 如果不存在就返回字符串”“

 public static string Getcookie(string strCookieName){
 switch(HttpContext.Current.Request.Cookies[strCookieName] == null){
    case true:
           strCookieName= String.Empty; break;
    case false:     
                         strCookieName=System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies[strCookieName].Value);break;
 }
          return  strCookieName;
 }
最常用的就是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;
        }


0 0