在java中定义全局变量
public class Aclass{
    public static String ID_3 = "3"; 
}
在某个servlet中我通过Aclass.ID_3='4',对其引用修改ID_3这个值,其他用户在别的机器上访问Aclass.ID_3的值也变成‘4’了。
我想知道如何能够定义一个变量在我的机器运行Aclass.ID_3=4值改变但不影响在其他机器上运行的用户。就象session中保存的变量一样,各用户之间户不影响。在对自己来说是全局有效的。
请高手指点,谢谢。请说的详细些,本人java水平不高。

解决方案 »

  1.   

    这个我没试过
    试试ThreadLoacl这个类,可以保存当前线程的变量,查查API
      

  2.   

    public class Aclass{
        public String ID_3 = "3"; 
    }
    引用时候 new Aclass().ID_3即可
    public class Aclass{
        public static String ID_3 = "3"; 
    }
    这样写就是类变量,你改了,别人也变
      

  3.   

    因为Aclass是放在服务器上,那么无论你客户端有多少个,Aclass只有一个,存在于服务器程序的jvm的生命周期中,它的静态变量的生命周期也和class的生命周期一样长,而且和class一样,只有一份,大家共用。为了让大家互相不影响,那么必须要区别各个client,所以出现了session这个容器。web服务器自动为我们创建了很多份实例。如果要自己用,不让别人用,只好自己做一个copy,和别人无关。不能把变量定义成static,否则大家都在用。
      

  4.   

    session对你来说就已经差不多算是全局的了,定义成static总是要小心,就如同楼上所说,Aclass只有一个,你的变量有时累级别的。
      

  5.   

    你定的是static静态变量,是属于类的层面的,而不是类的实例,所以这个类里所有的实例都会变。
      

  6.   

    首先在java中不要提全局变量,一个类的static变量在jvm范围内是唯一的,你的要求是相当于对每一个客户维护一个客户信息,直接放到session里就是了。
      

  7.   

    不能用session,因为我做的是wap应用,有时我发现session在有的手机上不能用
      

  8.   

    public ConstVar {
       public static HashMap<Aclass> ConstVarMap = new HashMap<Aclass>();
    }public class Aclass{
        public String ID_3 = "3"; 
    }用户登陆的时候
    Aclass aclass = new Aclass();
    aclass.ID_3 = "你需要的值";
    ConstVar.ConstVarMap.put(userid,aclass);用的时候
    System.out.println(ConstVar.ConstVarMap.get(userid).ID_3);退出的时候
    ConstVar.ConstVarMap.remove(userid);
      

  9.   

    public ConstVar {
        public static HashMap<> ConstVarMap = new HashMap<>();
    }public class Aclass{
        public String ID_3 = "3"; 
    }登陆的时候
    Aclass aclass = new Aclass();
    aclass.ID_3 = "what you want!";
    ConstVar.ConstVarMap.put(userid,aclass);使用的时候
    System.out.println(ConstVar.ConstVarMap.get(userid).ID3);退出的时候
    ConstVar.ConstVarMap.remove(userid);
      

  10.   

    wdman(只会Java,郁闷!) 写的正确
      

  11.   

    先谢谢wdman(只会Java,郁闷!) ,
    用户登陆的时候我能判断出来,可是用户退出的时候我如何判断。比如用户直接关闭网页,我如何判断是退出了。
      

  12.   

    可以设置session的过期时间吧,如果多长时间没有响应session就自动过期。
      

  13.   

    直接关闭可以相应窗口关闭事件,js或者VBS
      

  14.   

    静态变量的问题恐怕直接解决不了只能做个key-value的值对,用户名或者server---静态变量这样一一对应的HashMap,没啥更好的办法
      

  15.   

    有两个方案,要么不做成员变量(或称为属性)还有呢去掉前面的static不要做静态的类变量,做对象变量,就没有事了,