学习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. NOIP2011 普及组 T3 洛谷P1309 瑞士轮

    今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...

  2. Operating System Memory Management、Page Fault Exception、Cache Replacement Strategy Learning、LRU Algorithm

    目录 . 引言 . 页表 . 结构化内存管理 . 物理内存的管理 . SLAB分配器 . 处理器高速缓存和TLB控制 . 内存管理的概念 . 内存覆盖与内存交换 . 内存连续分配管理方式 . 内存非连 ...

  3. IOS基础之 (十) 内存管理

    一 基本原理 1.什么是内存管理 移动设备的内存有限,每个app所能占用的内存是有限制的. 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用 ...

  4. 升级OSX 10.9 Mavericks后,会导致Finder始终无响应的一个问题

    刚升了OS X 10.9 Mavericks ,发现Finder始终“未响应”(Application Not Responding),查了苹果官网论坛,国内的论坛,解决方法都无效,最后各种尝试,发现 ...

  5. HD1205吃糖果(鸽巢、抽屉原理)

    吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...

  6. sourceinsight安装记录

    sourceinsight安装记录 此文章为本人使用sourceinsight一个星期之后的相关设置步骤记录和经验记录,以备以后查验,网上的相关资料都也较为完善,但是对于新手还是有一定困难的,所以在这 ...

  7. $.ajax返回的JSON格式的数据后无法执行success的解决方法

    近段时间做项目,在项目使用了ajax技术,遇到了一个奇怪的问题:"$.ajax返回的JSON格式的数据无法执行success",代码是这样写的: 1 $.ajax({ 2 .. 3 ...

  8. Json序列化对象

    之前都是用的二进制的序列化方法,是.net自带的,但是最常用到的还是Json序列化 (1)只需要调用 Newtonsoft.Json.dll 即可 public class JsonTools { / ...

  9. MyEclipse------从MySQL取出图片

    showImage.jsp <%@ page language="java" import="java.util.*" pageEncoding=&quo ...

  10. Cannot attach the file as database 'membership'.

    Cannot attach the file 'D:\GitHome\cae\CAE\App_Data\membership.mdf' as database 'membership'. 说明: 执行 ...