静态变量和Session的使用

最近做一个项目,一个表格的数据需要在会话过程中一直存在。因为接手的是别人做过的东西,按照原来的风格沿用了上面的静态变量来存储数据的方法:

public static List<Word> Words=wordrList;

后来测试时发现用Chrome和IE同时打开这个项目,数据会被覆盖掉,比方说Chrome传进来了数据A,然后IE传进来数据B。

此时Chrome什么都不做,只刷新一下,会发现原来的数据A变成了数据B,也就是说静态变量被新传来的数据给覆盖了。要是用静态变量来用户变量岂不是乱套了?

这时候应该用Session来取代静态变量:Session["WordList"]=wodrlist;

Session是服务端专门存放用户变量的一种机制,不同的用户使用的Session是相互独立,互不干扰的。而静态变量则是单独存放在共享内存中,也就是任何用户使用的静态变量其实是同一个,用户B改变了它的值,用户A之前赋的值就被覆盖了,看到的也是用户B赋的值。

所有说,一般的网站开发中,用户的个人数据都用cookie或者session这累变量来存放。而静态变量用于公共数据,比方说门户网站的访问量或者聊天网站的聊天记录等

时间: 2024-11-17 07:09:51

静态变量和Session的使用的相关文章

c#静态变量和非静态变量的区别

静态变量的类型说明符是static.静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量. 详解: 一,静态资源在首次访问时会调用静态构造器创建类类型对象(静态属于类,动态属于对象,静态被静态构造器创建,动态被普通构造创建,所以实例对象的时候,静态不会被重新构造), 二,类型对象的生存周期是整个应用程序域的生存周期,也就说被访问过的静态资源,只有它所在的

java线程安全问题之静态变量、实例变量、局部变量

Java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如:"一个类在可以被多个线程安全调用时就是线程安全的". 此处不赘述了,首先给出静态变量.实例变量.局部变量在多线程环境下的线程安全问题结论,然后用示例验证,请大家擦亮眼睛,有错必究,否则误人子弟! 静态变量:线程非安全. 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态

静态变量导致的内存泄露

public  class MainActivity extends Activity{                private static final String TAG = "MainActivity";             private static Context sContext;                   @Override             protected void onCreate(Bundle savedInstanceState)

在activity之间通过静态变量传递数据

在activity之间通过静态变量传递数据 一.简介 主要作用:解决intent不能传递非序列化的对象 评价:简单方便,不过intent方式更加简单和方便 二.具体操作 1.在传输数据的页面弄好数据,传递给接收数据的页面 Obj1 obj=new Obj1("fry",22); Activity01.obj=obj; 2.在接收数据的页面显示数据 输出obj即可 3.具体代码 传输数据的页面 Intent intent=new Intent();//初始化intent intent.s

Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)

1.执行顺序 1.1.一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 1.2.两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量.初始化块.构造器). 示例如下:(结果见注释) 1 class A { 2 public A() { 3 System.out.println("Constructor A."); 4 } 5

关于一个静态变量的计算

代码如下: <?php $count = 5; function get_count(){ static $count = 0; return $count++; } echo $count; //5 ++$count; echo get_count(); //0 echo get_count(); //1 echo $count; //6 关于静态变量的说法可以参看C++的:static静态变量的理解

static、静态变量、静态方法

1 静态:static 1.1 用法 是一个修饰符:用于修饰成员(成员变量和成员函数) 1.2 好处 当成员变量被静态static修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用格式:类名.静态成员,也就变成了类变量 2 静态的特点 2.1 随着类的加载而加载,也就是,说静态会随着类的消失而消失,说明静态的生命周期最长 2.2 优先于对象的存在 明确一点:静态是先存在的对象是后存在的 2.3 被所有对象共享 2.4 可以直接用 类名. 调用 3 实例变量和类变量的区别 3.

(转)面试题--JAVA中静态块、静态变量加载顺序详解

1 public class Test { //1.第一步,准备加载类 2 3 public static void main(String[] args) { 4 new Test(); //4.第四步,new一个类,但在new之前要处理匿名代码块 5 } 6 7 static int num = 4; //2.第二步,静态变量和静态代码块的加载顺序由编写先后决定 8 9 { 10 num += 3; 11 System.out.println("b"); //5.第五步,按照顺序加

android产品研发(十)--&gt;不使用静态变量保存数据

转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了Android中的几种常见网络协议:xml,json,protobuf等,以及各自的优缺点,一般而言主要我们的App涉及到了网络传输都会有这方面的内容,具体可根据项目的需求确定各自的网络传输协议.这里可参考android产品研发(九)–>App网络传输协议 而本文讲解的其实并不是一个技术方面,而是一个android产品研发过程中的技巧:尽量不使用静态变量保存核心数据.这是为什么呢?这是因为android的进程并不是安全的,包括applicat