微软对HttpCookie的定义为“提供创建和操作各 HTTP Cookie 的类型安全方法。”

HttpCookie的构造函数一共有两个 1.HttpCookie(String)  //直接定义 2.HttpCookie(String, String) //定义并赋值

感觉第一个用的比较常见,因为使用HttpCookie定义cookie对象,往往只是操作对象中的键值对。如果只是定义简单的cookie,可以直接使用response操作

一、HttpCookie使用示例:

1.写cookie

//定义cookie对象
HttpCookie cookie = new HttpCookie("person");
//属性为“会员”
cookie.Value = "会员";
//过期时间为1小时
cookie.Expires = DateTime.Now.Add(new TimeSpan(0,1,0,0));
//可以设置cookie的访问目录和域名
//cookie.Path = "";
//cookie.Domain = "";
//以下是定义的键值对。
cookie.Values.Add("name","张三");
cookie.Values.Add("age","20");
//添加到响应体中,不能缺少
Response.Cookies.Add(cookie);  
//Response.AppendCookie(cookie); /用于追加操作
2.读取cookie
//从请求体中过去cookie对象
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null)
{    
//读取全部 会员&name=张三&age=20
    Response.Write(cookie.Value+"<br/>"); 
    Response.Write(cookie.Values["name"]+"<br/>");  //张三    
Response.Write(cookie["name"]);
 //张三 }
else {
    Response.Write("不存在");
}

3.删除cookie,因为我们操作的是cookie对象,所以删除可以分为全部删除,即删除person。或只删除cookie对象中的键

a.删除cookie对象中的键

HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null)
{    
cookie.Values.Remove("name");
    //Response.AppendCookie(cookie);  
  Response.Cookies.Add(cookie);
}
b.删除整个cookie,设置cookie日期过期
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null)
{
    cookie.Expires = DateTime.Now.Add(new TimeSpan(0, -3, 0, 0));
    Response.Cookies.Add(cookie);
}
二、我对HttpCookie与Response.Cookies、Request.Cookies的理解

Response(HttpResponse)与Request(HttpRequest)使用System.Web.HttpCookieCollection响应cookie集合,通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。 通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie,这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。 并且通过Response,Request我们可以直接操作cookie。

而HttpCookie更面向于对象,我们在操作cookie时,是在操作一个对象。我们要响应cookie也必须使用Response与Request。因为我们写cookie时要用到: Response.Cookies.Add(cookie); 而读取时: Request.Cookies.Get(“person”);

而独立于Response的HttpCookie对象无法设置成功,独立于Request的HttpCookie对象始终为null。

HttpCookie只是方便我们操作cookie,并且更加的面向对象。

三、HttpCookie与Response.Cookies,Request.Cookies的互操作

HttpCookie与Response.Cookies,Request.Cookies的互操作是完全可行的。
不管是用哪个写用哪个读都是可行的。例如:
1.HttpCookie写,Request读

//写 cookie HttpCookie cookie = new HttpCookie("person");
cookie.Values.Add("name","张三");
//读取
Response.Write(Request.Cookies["person"]["name"]);
//response写
Response.Cookies["person"]["name"]="lisi";
Response.Cookies["person"]["age"] = "20";
2.Response写,HttpCookie读
//读取
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null) {
    Response.Write(cookie.Value+"<br/>");  //读取全部 会员&name=张三&age=20    
Response.Write(cookie.Values["name"]+"<br/>");  //张三    
Response.Write(cookie["name"]);  //张三
}
else {
    Response.Write("不存在");
}
 
原创文章,转载请注明: 转载自沉默的小丑

最新文章

  1. iframe在iphone6 plus的safari下子页面的宽度不受父页面控制的bug
  2. UIPickerView选择器的使用方法
  3. 好看的IDE配色方案让代码看起来不再那么凶猛了
  4. 第十二篇:SOUI的utilities模块为什么要用DLL编译?
  5. [CareerCup] 10.6 Find Duplicate URLs 找重复的URL链接
  6. 保护企业的Word文档
  7. oracle——表修改语句集合
  8. poj3114Countries in War(缩点+DIJK)
  9. hibernate初探
  10. Java虚拟机-----------Java内存区域与内存溢出异常
  11. Windbg DUMP
  12. jQuery基础之一
  13. disabled和readonly区别
  14. bzoj2555: SubString sam+lct
  15. CF 554B 找相同行
  16. 广播中receiver配置需要注意data的配置
  17. Android应用安全防护和逆向分析 ——apk反编译
  18. 20155236范晨歌_exp6信息搜集与漏洞扫描
  19. ionic模版引擎及循环
  20. C#基础 const和readonly关键字

热门文章

  1. LaTeX bib 引用为 作者 + 年份
  2. 2020 年国内 Serverless 用户规模:阿里云占比第一,达 66%
  3. 关于dp那些事
  4. 用NXOpen.CAM.CAMSetup.CopyObjects复制刻字操作
  5. EMC测试国家标准GB/T 17626
  6. 想要彻底搞懂大厂是如何实现Redis高可用的?看这篇文章就够了!(1.2W字,建议收藏)
  7. Manjaro安装Mariadb
  8. 大闸蟹的 O O 第三单元日子——中测与强测的惨烈修罗场
  9. spring cloud zuul的回退
  10. 2021.9.28考试总结[NOIP模拟64]