静态变量和Session

简介: 静态变量和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)
        {undefined
            Session["SessionStr"] = str;
            StaticStr = str;
            return RedirectToAction("Index");
        }
        public ActionResult Index()
        {undefined
            ViewBag.SessionStr = Session["SessionStr"] == null ? "": Session["SessionStr"].ToString();
            ViewBag.StaticStr = StaticStr;
            return View();
        }

 


IE页面如下图:

image.png



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

image.png



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

image.png



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


同样在此页面输入world

image.png


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


目录
相关文章
解决用@value从配置文件中给静态变量赋值的问题
解决用@value从配置文件中给静态变量赋值的问题
265 0
|
16天前
|
存储 Java
静态变量与实例变量的区别
【10月更文挑战第15天】总之,静态变量和实例变量在 Java 中具有不同的特性和用途。理解它们的区别对于正确设计和编写代码至关重要。
|
14小时前
|
Java
静态变量和实例变量区别
静态变量: 静态变量由于不属于任何实例对象,属于类的,所以在内存中只会有一份,在类的加载过程中,JVM只为静态变量分配一次内存空间。 实例变量: 每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。
|
1月前
使用静态变量和方法
使用静态变量和方法
12 1
|
4月前
|
存储 缓存 算法
同时使用线程本地变量以及对象缓存的问题
【7月更文挑战第15天】同时使用线程本地变量和对象缓存需小心处理以避免数据不一致、竞争条件及内存泄漏等问题。线程本地变量使各线程拥有独立存储,但若与对象缓存关联,可能导致多线程环境下访问旧数据。缺乏同步机制时,多线程并发修改缓存中的共享对象还会引起数据混乱。此外,若线程结束时未释放对象引用,可能导致内存泄漏。例如,在Web服务器场景下,若一更新缓存而另一线程仍获取旧数据,则可能返回错误信息;在图像处理应用中,若多线程无序修改算法对象则可能产生错误处理结果。因此,需确保数据一致性、避免竞争条件并妥善管理内存。
|
6月前
|
安全 Java
JSP中的隐式对象和四种会话作用域
JSP中的隐式对象和四种会话作用域
114 0
|
存储 Java 开发者
session对象
session对象
109 0
|
Java
Java中 类变量(static静态变量)和实例变量(非静态变量)的区别
Java中 类变量(static静态变量)和实例变量(非静态变量)的区别
313 0
|
PHP
【PHP工具类】SESSION
【PHP工具类】SESSION
114 0