一,新建一个空网站,添加一个Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server"></asp:Label> </div> </form></body></html>二,进入Default.aspx.cs添加一下代码
protected void Page_Load(object sender, EventArgs e)
{ StringBuilder sb = new StringBuilder(); // 从当前请求得到cookie HttpCookie cookie = Request.Cookies.Get("Cookie"); // 检查cookie是否存在 if (cookie == null) { sb.Append("没有在客户端接收到Cookie "); sb.Append("添加可以放回的cookie值 <br/>"); // 创建cookie cookie = new HttpCookie("Cookie"); // 将cookie的值设置为当前时间 cookie.Value = DateTime.Now.ToString(); // 设置10分钟内到期的cookie. cookie.Expires = DateTime.Now.AddMinutes(10d); // 插入cookie在当前的HTTP响应 Response.Cookies.Add(cookie); } else { sb.Append("接收到客户端的Cookie <br/>"); sb.Append("Cookie 名字: " + cookie.Name + "<br/>"); sb.Append("Cookie 值: " + cookie.Value + "<br/>"); sb.Append("Cookie 到期时间: " + cookie.Expires.ToString() + "<br/>"); } Label1.Text = sb.ToString(); }三,右键浏览,注意由于第一次浏览器是没有生成cookie,则需要刷新一遍才可以看到效果
四,cookie数据存放在客户的浏览器.
cookie设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。
五,session机制是一种服务器端的机制.session数据放在服务器
1,当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
2,保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。然而,也是这个原因造成当关闭浏览器的时候,session id丢失了,再次连接服务器时也就无法找到原来的session.所以就有“只要关闭浏览器,session就消失了”的错觉.
3,但在真实的服务器中,除非程序通知服务器删除一个session,否则服务器会一直保留.