欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

模拟Session原理

程序员文章站 2022-06-10 16:37:20
session是保存在服务器端的,关于用户个人信息的一个小容器!用来保存每一个用户的关键信息!每个用户访问时候,都会创建一个sessionid,这个sessionid会保存到的cookie中。服务器...
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"] = "小小鸟"
点击复制链接 与好友分享!
相关tag标签
上一篇:fck在线编辑器上传图片加入水印功能
下一篇:防止get和post方式引起的sql注入攻击asp程序
相关文章
热门专题推荐 android sdk
图文推荐
文章
推荐
点击排行