学习web开发,使用Cookie是不可避免的,个人感觉Cookie的使用和ASP.NET中的Session非常像,只不过Cookie是保存在客户端,而Session是在服务器端,两者都以记录信息为目的,作为访问网站的凭据。
Cookie其实就是一些保存在客户端的小文件,为下次访问网站时保存一些信息,比如:是否登录。Cookie的最大优点就是使用简单,传递、管理、维护都由浏览器完成;缺点是不安全、大小有限制、受浏览器安全性设置限制。刚刚提到Cookie实际上是一些小文件,这些文件肯定是用来存储信息的,那么这些小文件在哪里呢?这要分情况而言,如果服务器建立的是非持久性Cookie,那么这些文件保存在浏览器的内存中,一旦完全关闭浏览器,Cookie便失效了;如果服务器建立的是持久性Cookie,那么这些文件就被存放在:C:\你的用户名\Default\AppData\Roaming\Microsoft\Windows\Cookies,直接把正确的路径复制到资源管理器地址栏回车访问即可,不要手动寻找,那样是找不到的(即使显示了隐藏文件,也找不到Cookies文件夹),这些Cookie文件以文本文档的形式存储在这里,所以安全性就可想而知了。在程序中,如果我们设置Cookie的有效时间,则此Cookie就是持久性Cookie,如果不设置,默认的就是非持久性Cookie。

asp.net中Cookie的用法
HttpCookie cookie = new HttpCookie["Test"];//创建cookie
cookie.Value = "admin";//设置cookie值
cookie.Expires = DateTime.Now.AddDays(7);//设置cookie值保存天数
//将cookie值写到浏览器中,有两种方法
Response.AppendCookie(cookie);
context.Response.SetCookie(cookie);

取出Cookie值也很简单
HttpCookie cookie = Request.Cookies["Test"];
string cookieValue;
cookieValue = cookie.Value;

在一个Cookie中储存多个信息,那也没有问题
HttpCookie cookie = new HttpCookie("Test");
cookie.Values.Add("aaa","111");
cookie.Values.Add("bbb","222");
cookie.Values.Add("ccc","333");
Response.AppendCookie(cookie);

取出信息也一样简单
HttpCookie cookie = Request.Cookies["Test"];
value1 = cookies.Values["aaa"];
value2 = cookies.Values["bbb"];

Request.Cookies.Clear()这个方法并不是删除Cookie
删除 Cookie(即从用户的硬盘中物理移除 Cookie)是修改 Cookie 的一种形式。
由于 Cookie 在用户的计算机中,因此无法将其直接移除。
但是,可以让浏览器来为您删除 Cookie。
该技术是创建一个与要删除的 Cookie 同名的新 Cookie,
并将该 Cookie 的到期日期设置为早于当前日期的某个日期。
当浏览器检查 Cookie 的到期日期时,浏览器便会丢弃这个现已过期的 Cookie。
下面的代码示例演示删除应用程序中所有可用 Cookie 的一种方法:

CODE:
HttpCookie aCookie;
string cookieName;
int limit = context.Request.Cookies.Count;
for (int i = 0; i < limit; i++)
{
  cookieName = context.Request.Cookies[i].Name;
  aCookie = new HttpCookie(cookieName);
  aCookie.Expires = DateTime.Now.AddDays(-1);
  context.Response.Cookies.Add(aCookie);
}

cookies过期时间
Response.Cookies("user_name").Expires=Date+1 ’指定cookie保存时间

保留COOKIES一个小时
Response.Cookies("MyCookie").Expires= (now()+1/24)
Response.Cookies("MyCookie").Expires = DateAdd("h", 1, Now())

Response.Cookies("CookieName").Expires=DateAdd("m",60,now())
设置60个月以后过期

Response.Cookies("User").expires=second()+7
在expires后面定义的时间可以用时间函数代替
例如:date()+7就表示在今天的时间上加上7天,而second()+7则是7秒了。

Response.Cookies("字段名").expires=时间函数+N,例如:
Response.Cookies("name2").expires=date+1,表示Cookies保存1天,再比如:
Response.Cookies("name2").expires=Hour+8,表示Cookies保存8小时。
这种方法我测试过不行(在2003server,iis6.0中),不管second后面有无加(),访问时会出现500错误(还是无法显示网页?忘了)。

织梦尤文:这里的时间累加建议还是使用DateAdd函数,比如我们要累加一小时,则使用:
Response.Cookies("baidooglecom").expires = DateAdd("h", 1, Now())

30分钟:
Response.Cookies("CookieName").Expires=DateAdd("n",30,now())
dateadd("S",30,now()) 得到秒

Expires 指定 cookie 的过期日期。为了在会话结束后将 cookie 存储在客户端磁盘上,或在许多时候,我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。
若此项属性的设置未超过当前日期,则在任务结束后 cookie 将到期。
cookie的使用到期时间为“2010年1月1日”: Response.Cookies("CookieName").Expires=#January 01, 2010#
cookie的过期时间为“cookie的创建时间+365天”:Response.Cookies("CookieName").Expires=Date+365 推荐的
但最好不要随便写 Response.Cookies("CookieName").Expires=Date,这样页面之间的调用时值会为空。

实现记住用户名案例:

html文件:

<form action="Login.ashx" method="post">
用户名:<input type="text" name="name" value="@name" />
密码:<input type="password" name="password" value="" />
<input type="submit" name="btnOK" value="提交" />
</form>

ashx文件:

context.Response.ContentType = "text/html";
string html = CommonHelper.ReadHtml("~/Login.html");
string btnLogin = context.Request["btnOK"];
if (string.IsNullOrEmpty(btnLogin))//判断按钮是否点击了
{
//如果没有点击按钮,尝试获取浏览器的cookie值
HttpCookie cookLastName = context.Request.Cookies["cookLastName"];
if (cookLastName != null)
{
//如果浏览器有cookie值,就将cookie值替换成html中的用户名
html = html.Replace("@name", cookLastName.Value);
}
else
{
html = html.Replace("@name", "");//否则替换成空
}
context.Response.Write(html);//输出html页面
}
else
{
//创建cookie
HttpCookie cookLastName = new HttpCookie("cookLastName");
string name = context.Request["name"];
//设置cookie值
cookLastName.Value = name;
//设置cookie值保存天数
cookLastName.Expires = DateTime.Now.AddDays();
//将cookie值写到浏览器中
context.Response.SetCookie(cookLastName);
context.Response.Redirect("Test1.ashx"); }

Cookie的使用与实现记住用户名案例的更多相关文章

  1. Jquery操作cookie,实现简单的记住用户名的操作

     一.jquery.cookie.js介绍  jquery.cookie.js是一个基于jquery的插件,一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cook ...

  2. cookie 实现记住用户名演示 通过代码迅速理解cookie

    // 登录页 可直接 tomcat部署 测试 1 package com.itheima.login; import java.io.IOException; import java.io.Print ...

  3. 通过jquery.cookie.js实现记住用户名、密码登录功能

    Cookies 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.js基于jquery:先引入jquery,再引入:jq ...

  4. jQuery cookie 实现记住用户名和密码功能

    jQuery cookie 实现记住用户名和密码功能 HTML代码 <div class="wrap"> <div class="line-top&qu ...

  5. cookie记住用户名密码

    <script src="js/jquery.cookie.js" type="text/javascript"></script> $ ...

  6. js cookie介绍和实例(用于自动登录,记住用户名等)

    js cookie介绍和实例(用于自动登录,记住用户名等) 一.总结 1.cookie在客户端:因为js是最初是用来在客户端和服务器端进行通信使用的,所以客户端比如js可以操作cookie正常 2.c ...

  7. 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“

    Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...

  8. ASP.NET中登录时记住用户名和密码(附源码下载)--ASP.NET

    必需了解的:实例需要做的是Cookie对象的创建和对Cookie对象数据的读取,通过Response对象的Cookies属性创建Cookie,通过Request对象的Cookies可以读取Cookie ...

  9. Jquery 实现 “下次自动登录” 记住用户名密码功能

    转载自:http://blog.csdn.net/aspnet_lyc/article/details/12030039?utm_source=tuicool&utm_medium=refer ...

随机推荐

  1. PHP Web System Optimization(undone)

    目录 . 引言 . PHP Pool . listen . Process Manage(PM) . pm.max_children . PHP DB Connection Pool(数据库连接池) ...

  2. 在cmd下编译一个简单的servlet时出现程序包javax.servlet不存在

    由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决“软件包 javax.servlet不存 ...

  3. 神器Alfred使用

    神器官网:http://www.alfredapp.com/ 许多人装好了之后就再也没有怎么使用过,这软神器, 一直不明白它为什么叫神器,最近研究了一下,真的是,很多东西我们没有好好利用 部分使用功能 ...

  4. json2.js的用途(拯救IE)

    json2.js提供了json的序列化(JSON.stringify)和反序列化方法(JSON.parse):可以将一个Object或Array转换成json字符串,也可以将一个json字符串转换成一 ...

  5. struts2.3.16所需的基本的jar包

    jar包放多了就报Exception什么Unable to load....上网搜了半天也没有能解决的 下面所说的jar包放到WEB-INF/lib以及tomcat/lib中 通过我一个一个添加到to ...

  6. Struts2中使用Servlet API步骤

    Struts2中使用Servlet API步骤 Action类中声明request等对象 Map<String, Object> request; 获得ActionContext实例 Ac ...

  7. 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)

    一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充 e.g.: PKCS#5填充方式 三. 流密码:   四. 分组密码加密中的四种模式: 3.1 ECB模式 优点: 1. ...

  8. 转 How to install XenServer Tools – Linux(forward)

    本文转自: http://blog.csdn.net/zhongguoren666/article/details/7088798 比较懒....大家看图说话就行了.... 说句实在话…还是老外写的地 ...

  9. ExtJS学习之路第七步:contentEl与renderTo的区别

    上回在Panel的应用中我们应该能大致区分开conteEl和renderTo,这回我们从定义中区分. 在Panel的API中, contentEl:String指定一个现有的HTML元素或者id作为此 ...

  10. linux服务器部署svn常见错误处理→转载

    转载地址→http://blog.seweal.com/post/2013-02-04/svn-errors [开放svn端口] iptables -I INPUT -p tcp --dport 36 ...