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小小鸟
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    SQL左右连接中的on and和on where的区别
    Eclipse项目左侧调整显示或者不显示路径
    Java中 Tomcat 是干什么的?
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    Oracle中判断(case when),截取(substr),位置(instr)用法
    Eclipse 隐藏已关闭的项目
    项目关闭和开启
    提交代码有冲突,解决方法
    OC基础:Date 分类: ios学习 OC 2015-06-22 19:16 158人阅读 评论(0) 收藏
    OC基础:block.字面量 分类: ios学习 OC 2015-06-22 19:08 155人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/2032907.html
Copyright © 2011-2022 走看看