zoukankan      html  css  js  c++  java
  • 静态变量和Session

    静态变量: Application级别的,不同客户端访问同一个变量。

    Session:对于每个访问的客户端是独立的,都有一个唯一的SessionID。也就是说,不同客户端下,都可以有一个Session["SessionStr"],数据不互通

    所以当使用静态变量保存一些数据的时候要考虑不同客户端访问的时候的安全问题。

    举例:  .net MVC

    view:

        <p>SessionStr:@ViewBag.SessionStr</p>
        <p>StaticStr:@ViewBag.StaticStr</p>
    
        <form action="@Url.Action("test")" method="post">
            <input type="text" name="str" />
            <input type="submit" value="submit" />
        </form>

    新建form, 用于输入并提交一个字符串。提交后将这个字符串分别保存至Session["SessionStr"]和 static string StaticStr

    两个P标签, 分别用于显示Session["SessionStr"]和 static string StaticStr的值。

    下面是Controller中的简单存储逻辑:

    
    

            public static string StaticStr = "";

    
    

            [HttpPost]
            public ActionResult test(string str)
            {
                Session["SessionStr"] = str;
                StaticStr = str;

    
    

                return RedirectToAction("Index");
            }

    
    

            public ActionResult Index()
            {
                ViewBag.SessionStr = Session["SessionStr"] == null ? "": Session["SessionStr"].ToString();
                ViewBag.StaticStr = StaticStr;
                return View();
            }

    
    

    IE页面如下图:

    这两个值都是空的。输入hello提交,结果如下

     打开另一个浏览器Firefox或者在另一台电脑访问该页面

    可见Static是application级别的, 但Session是不通的。

    同样在此页面输入world

    两个浏览器页面中的StaticStr都会显示为world。 但Session分别为hello 和world

  • 相关阅读:
    调试导论
    CSP-S2 2020 游记
    【题解】51nod 1327 棋盘游戏
    基础数学专题复习
    ubuntu 下 zsh 插件及安装方式
    ubuntu 下 Deepin-TIM 折腾笔记
    微服务学习笔记
    使用 Portainer 管理 Docker 笔记(含本地和远程)
    博客收藏
    定制unittest测试报告【转】
  • 原文地址:https://www.cnblogs.com/FlyLolo/p/6743771.html
Copyright © 2011-2022 走看看