日期:2014-05-18  浏览次数:20770 次

关于JSP使用静态static方法的问题
我写了一个自己的类,里面有一个静态的方法:

private static FileInputStream pfile;
public static String getColor(String key){ 
  if(pfile == null){
  pfile = new FileInputStream("111.property");
  .....
  ....
  ...
  }


运行环境是WebSphere,具体的配置搞不清=_=!!
我理解就是这个class放在那个web-inf/class 什么目录里面就能调用了
因为是静态的可以直接使用: XXXXX.getColor("red_1022")
我想问的就是那个static FileInputStream pfile 这个变量
是不是正常情况下,第一次在使用getColor的时候这个变量就读到文件,然后就不为null值,以后就不读了
那么pfile 这个变量保存在什么地方?


------解决方案--------------------
保存在服务器端的堆或者栈里面,具体不记得了。
第一次访问的时候判断是否为空,为空才去读,以后就不读了。

------解决方案--------------------
印象是中栈中
------解决方案--------------------
我觉得,pfile保存在哪里不重要,因为它是静态变量,在java中变量一旦被定义成static,那么在你的web项目里的jsp页面、java类中这个变量是共用的;
建议把private static FileInputStream pfile; => private static FileInputStream pfile=null;

------解决方案--------------------
对象在堆里,引用在栈里