• 模拟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中的值
    }
    欢迎各位高手指点。谢谢!!
    作者:GY小小鸟
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    文件遍历
    小记——LocalFree与指针
    小记——遍历文件2
    数据库索引
    easyui验证
    JDBC事务
    ajax登录跳转实现
    dom解析xml
    kindeditor使用
    log4j的配置
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/2032907.html
Copyright © 2020-2023  润新知