模拟Session原理

本文介绍如何使用自定义的SessionManager类来管理用户的Session,包括生成SessionID,设置和读取Session值。通过设置SessionID到浏览器的cookie中,实现用户在不同页面之间的状态保持。

  Session是保存在服务器端的,关于用户个人信息的一个小容器!用来保存每一个用户的关键信息!每个用户访问时候,都会创建一个SessionID,这个SessionID会保存到浏览器的cookie中。服务器根据SessionID关联到此浏览器的用户。

  那么我先建一个SessionManager类,用来管理Session。:

ContractedBlock.gifExpandedBlockStart.gif管理Session的类
public class SessinManager
{
//模拟asp.net的session原理!
private static IDictionary<string, IDictionary<string, object>> data = new Dictionary<string, IDictionary<string, object>>();
public static IDictionary<string, object> GetSession(string sessionID)
{
if (data.ContainsKey(sessionID)) //此id是与浏览器密切相关的,基本上一个浏览器就一个SessionID
{ //一般保存在浏览器的cookie中。
return data[sessionID];
}
else
{
IDictionary
<string, object> session = new Dictionary<string, object>();
data[sessionID]
= session; //以传过来的SessionID创建一个Dictionary。
return session;
}
}
}

然后在用户访问的时候产生SessionID,创建Session空间。

ContractedBlock.gifExpandedBlockStart.gif设置,读取Session
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["MySessionID"] == null) //在网站主页(入口)设置SessionID。
{
string sessionID = Guid.NewGuid().ToString(); //随机产生一个ID,并保存到cookie中。
Response.SetCookie(new HttpCookie("MySessionID",sessionID));
}
}
protected void SetSession_Click(object sender, EventArgs e)
{
string sessionID=Request.Cookies["MySessionID"].Value; //从cookie中读取SessionID
IDictionary<string, object> session = SessinManager.GetSession(sessionID);
//根据cookie中保存的SessionID访问服务端的开辟的内存空间。
session["UserMessage"] = "小小鸟";//设置Session中的值
}
protected void GetSession_Click(object sender, EventArgs e)
{
string sessionID=Request.Cookies["MySessionID"].Value;
IDictionary
<string, object> session = SessinManager.GetSession(sessionID);
Button2.Text
=session["UserMessage"].ToString();//读取Session中的值
}
欢迎各位高手指点。谢谢!!

转载于:https://www.cnblogs.com/YangFengHui/archive/2011/04/29/2032907.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值