模拟Session原理

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

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

管理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空间。

设置,读取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中的值
}
欢迎各位高手指点。谢谢!!

你可能感兴趣的:(session)