zoukankan      html  css  js  c++  java
  • 模拟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小小鸟
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    python input and output and cpickle
    NS3中文教程:3下载及编译软件
    Wireshark Display fliters
    Python 中的几种copy用法
    python func for shell operation
    关于AX的临时表
    关于AX中的Query是如何查询记录
    POJ 2996, Help Me with the Game
    POJ 1328, Radar Installation
    POJ 3295, Tautology
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/2032907.html
Copyright © 2011-2022 走看看