ASP.NET常用技术之Cookie
cookie是一小段的文本信息(多数浏览器限制cookie最大字节数为4096字节),在浏览器和服务器之间随用户请求而传递(用户访问网站,没有设置cookie限制范围情况下,无论请求那个页面,浏览器和服务器之间都会交换cookie信息)。Cookie是asp.ent实现状态管理的一种方法。
单值Cookie的读写:
Cookie有两种写入的方法:
方法一:直接写入
Response.Cookies["MyCookieName"].Value = "MyCookieVal";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddYears();
方法二:创建cookie对象,将其加入到Cookie集合中去
HttpCookie mycookie = new HttpCookie("MyCookieName");
mycookie.Value = "MyCookieVal";
mycookie.Expires = DateTime.Now.AddYears();
Response.Cookies.Add(mycookie);
Cookie的读取:(读取时一定要判断是否存在,否则会抛出NullReferenceException异常)
if (Request.Cookies["MyCookieName"] != null)
{
string cookieVale = Response.Cookies["MyCookieName"].Value;
} if (Request.Cookies["MyCookieName"] != null)
{
HttpCookie cookie = Request.Cookies["MyCookieName"];
string cookieValue = cookie.Value;
}
多值Cookie的读写:
写入方法一:直接写入
Response.Cookies["MyCookieName"]["key1"] = "value1";
Response.Cookies["MyCookieName"]["key2"] = "value2";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddDays();
写入方法二:创建cookie对象,将其加入到Cookie集合中去
HttpCookie cookie = new HttpCookie("MyCookieName");
cookie.Values["key1"] = "value1";
cookie.Values["key2"] = "value2";
Response.Cookies.Add(cookie);
读取方法一:根据cookie名和键读取
if (Request.Cookies["MyCookieName"] != null)
{
string cookieVale = Response.Cookies["MyCookieName"]["key1"];
string cookieValue2 = Response.Cookies["MyCookieName"]["key2"];
}
读取方法二:循环读取
if (Request.Cookies["MyCookieName"] != null)
{
HttpCookie cookie = Request.Cookies["MyCookieName"];
if (cookie.HasKeys)
{
for (int i = 0; i < cookie.Values.Count; i++)
{
string key=cookie.Values.GetKey(i);
string value = cookie.Values[i];
}
}
else
{
string value = cookie.Value;
}
}
Cookie的范围控制
Cookie的范围控制涉及到两个属性:Path和Domain
1.Path 设置Path属性可以使Cookie只允许指定的路劲或者应用程序来访问。
Response.Cookies["MyCookieName"].Value = "val";
Response.Cookies["MyCookieName"].Path = "/test";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddDays();
经过Path设置后 只有该网站的test目录下的页面以及该文件夹下的所有页面可以访问该cookie.比如:www.ssss.com/test/ddd.aspx
2.Domain 设置Domain属后只有指定域可以访问cookie
Response.Cookies["MyCookieName"].Value = "val";
Response.Cookies["MyCookieName"].Domain = "help.test.com";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddDays();
代码中设置cookie的域为"help.test.com",这样,只有类似“help.test.com/dd.aspx”等的页面才能访问cookie,如“support.test.com/ddd.aspx”就不能访问该Cookie了。
Cookie的删除
删除Cookie十分简单,只要把要删除的Cookie的过期时间设置为过期的时间就行
if (Request.Cookies["MyCookieName"]!=null)
{
HttpCookie cookie = Request.Cookies["MyCookieName"];//获取要删除的cookie
cookie.Expires = DateTime.Now.AddDays(-1); //设置过期时间
Response.Cookies.Add(cookie);
}
删除多值Cookie的某个键值
if (Request.Cookies["MyCookieName"]!=null)
{
HttpCookie cookie = Request.Cookies["MyCookieName"];//获取cookie
cookie.Values.Remove("key1"); //删除key1
cookie.Expires = DateTime.Now.AddDays();
Response.Cookies.Add(cookie);
}
关于Expires
Expires是Cookie的过期时间,如果将时间设置为大于当前时间,则Cookie会保存到本地的硬盘上,如果设置时间小于当前时间,则Cookie会从本地硬盘删除,不设置过期时间,服务器依旧会向客户端读写Cookie,但是不会将Cookie保存到本地硬盘。
ASP.NET常用技术之Cookie的更多相关文章
- ASP.NET常用技术之加密解密
在开发项目中有许多数据需要我们进行加密解密操作,这里介绍几个加密解密的方法. 一:MD5加密 MD5加密是一种单向的加密算法,它只能加密,加密后不能进行逆向解密操作,常用于数字签名和加密用户密码. 下 ...
- ASP.NET常用内置对象
ASP.NET 常用内置对象:Response对象.Request对象.Session对象.Server对象.Application对象 1.Response对象: (1) 用于向浏览器输出信息 常用 ...
- (摘录)26个ASP.NET常用性能优化方法
数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...
- Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术 ...
- 26个ASP.NET常用性能优化方法
数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...
- Servle第四篇(会话技术之cookie)
会话技术 什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使 ...
- Struts 2 常用技术
目录 Struts 2 常用技术 1. 常用类和接口 1.1 getter 和 setter 方法 1.2 Action 接口 1.3 ActionSupport 类 1.4 通过 Act ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换
路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中, ...
随机推荐
- BeanUtils API中使用ConvertUtils向BeanUtils注册一个日期转换器
ConvertUtils.register(new Converter(){ public Object convert(Class type, Object value){ if(value == ...
- Keil C51库函数原型列表
//1. CTYPE.H bit isalnum(char c): bit isalpha(char c): bit iscntrl(char c): bit isdigit(char c): bit ...
- Android 有趣味的GridView
工作这么久以来,都是以解决需求为目标.渐渐发现这种学习方式不好,学到的知识能马上解决问题,但没有经过梳理归纳.故想系统总结下一些有趣味的知识点.在这篇博客中想以一个例子系统讲解下GridView控件涉 ...
- centos7安装VLC播放器
centos7安装VLC播放器 1.安装eple 下载地址:https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noar ...
- Flatten Binary Tree to Linked List ——LeetCode
Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...
- H - Antenna Placement- hdu 3020(二分图匹配)
题意:每个 ‘*’都需要一个1*2的东西覆盖,问最少需要多少个1*2的东西来覆盖这些‘*’ 分析:只需要求出来最多有多少个完全覆盖的,然后加上那些不能被完全覆盖的点即可..把G题的代码随便修改了一下就 ...
- SpringMVC进行文件的上传以及多文件的上传(转)
基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:htt ...
- Java容器详解
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.在Java中,容器的类型主要有:List.Set ...
- WORLD OPERATS
word文章设置无法复制 通常我们会采用设置密码的方式,规定某个文档的使用范围. 但这种方法是有一个局限,那就是可以观看文档的人未必靠谱,万一复制了文档的重要内容怎么办? 因此,不妨考虑加上禁 ...
- 一个超级简单的node.js爬虫(内附表情包)
之所以会想到要写爬虫,并不是出于什么高大上的理由,仅仅是为了下载个表情包而已-- 容我先推荐一下西乔出品的神秘的程序员表情包. 这套表情包着实是抵御产品.对付测试.嘲讽队友.恐吓前任的良品, 不过不知 ...