为什么会有这两个东西?
因为Http协议的无状态性
无状态性:是指协议对于事务处理没有记忆能力,服务器不知道客户端什么状态;比如你登录一个网站输入登录用户名及密码,如果不设置记录用户名及密码,下次你还会重新输入
于是就产生了两种状态机制,Cookie和Session,Cookie将信息记录在客户的浏览器或者自己电脑的磁盘中,而session将信息记录在服务器内存中
Cookie(客户端状态保持)基本概况
操作
创建Cookie
新建一个Web窗体,命名为CookieDemo
.aspx.cs代码如下(服务端代码创建Cookie)
public partial class CookieDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//创建Cookie
Response.Cookies["cp3"].Value = "laowang";
//设置Cookie过期期限为3天
Response.Cookies["cp3"].Expires = DateTime.Now.AddDays(3);
//设置访问哪个文件夹下带着Cookie
Response.Cookies["cp3"].Path = "/aspx/";
}
}
对于过期时间,如果不指定期限的话,默认关闭浏览器Cookie就会自动消失
.aspx什么也不写
查看浏览器访问该页面回复报文
创建完cookie后
访问网站其他页面后,在请求报文中自带cookie值
因为在上述代码中Path值为“/aspx/”,因此设置了只有访问aspx文件夹下的页面,在请求报文中才会出现cookie值,如下图
删除Cookie
现在如果要删除刚才创建的Cookie的话,用下面的代码
Response.Cookies["cp3"].Expires = DateTime.Now.AddDays(-1);
此时再访问AddUser.aspx,请求报文中的cookie属性便会消失
创建Cookie的大致流程如下图
正如上述所说,当访问Path属性下面的页面时,会在请求报文中自带cookie属性,那么如何
读取Cookie
下面举一个小栗子,登录页面自动显示用户名
新建一个Web窗体命名为Login
1.Login.aspx页面代码
2.Login.aspx.cs代码