我的class是这样定义的
public class CData
{

public  static int sum=0;

public CData()
{

}

public static int Init()
{

sum++;
return sum;
}
}
然后在jsp使用该类
<%
out.println(CData.Init());
%>
然后是每刷新一次jsp页面sum就会不断的累加!!!!

解决方案 »

  1.   

    这根回收没有关系,你最好不用static类型的变量。
      

  2.   

    同意楼上,你还没有理解static的含义。
      

  3.   

    可否解释清楚?
    按道理static sum 的生命周期当JSP 运行完毕应该就算结束
    之所以出现这种情况
    我的理解是sum没有被回收掉,还位于JSP服务器的缓冲区中
    所以还可以继续引用.
    我做了个试验,当打开其它的JSP网页后
    再次刷新第一个JSP 网页
    sum的值就为1
      

  4.   

    static 的含义在C++ 中
    我的理解是多个对象共同引用和维护同一个变量
    难道JAVA 中有其他含义吗?
      

  5.   


    一个jsp结束只是它的一个线程结束,并不是这个对象消失了。所以static仍存在的。在java中static与c++中一样,但是在servlet(jsp也是servlet的一种),这就有点不一样的。当一个servlet从init开始就一直存在,只到server被重启。
      

  6.   

    是不是可以这么说,JSP中不要使用static?
      

  7.   

    上面的程序调用时会出下面的错误!!!!
    D:\weblogic\wlserver6.0\config\examples\applications\DefaultWebApp\WEB-INF\_tmp_war_examplesServer_examplesServer_DefaultWebApp\jsp_servlet\_t.java:48: inner classes cannot have static declarations
    probably occurred due to an error in /t.jsp line 10:
    public static int sum=0;D:\weblogic\wlserver6.0\config\examples\applications\DefaultWebApp\WEB-INF\_tmp_war_examplesServer_examplesServer_DefaultWebApp\jsp_servlet\_t.java:55: inner classes cannot have static declarations
    probably occurred due to an error in /t.jsp line 17:
    public static int Init()
      

  8.   

    你用javac 编译CData.java
    而后
    在jsp中
    <%@page import="CData" %>
    <%
    out.println(CData.Init());
    %>