静态变量和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


目录
相关文章
|
7月前
解决用@value从配置文件中给静态变量赋值的问题
解决用@value从配置文件中给静态变量赋值的问题
56 0
|
10月前
|
Java
Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)
Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)
104 0
|
10月前
|
SQL Java 数据库连接
Hibernate中的Session对象
Hibernate中的Session对象
57 0
|
存储 Java 开发者
session对象
session对象
85 0
|
Java
Java中 类变量(static静态变量)和实例变量(非静态变量)的区别
Java中 类变量(static静态变量)和实例变量(非静态变量)的区别
231 0
|
PHP
【PHP工具类】SESSION
【PHP工具类】SESSION
85 0
|
安全 Java 数据库连接
Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?
SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。
1339 0
静态变量和实例变量的区别
静态变量是被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。
1202 0