我的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就会不断的累加!!!!
public class CData
{
public static int sum=0;
public CData()
{
}
public static int Init()
{
sum++;
return sum;
}
}
然后在jsp使用该类
<%
out.println(CData.Init());
%>
然后是每刷新一次jsp页面sum就会不断的累加!!!!
按道理static sum 的生命周期当JSP 运行完毕应该就算结束
之所以出现这种情况
我的理解是sum没有被回收掉,还位于JSP服务器的缓冲区中
所以还可以继续引用.
我做了个试验,当打开其它的JSP网页后
再次刷新第一个JSP 网页
sum的值就为1
我的理解是多个对象共同引用和维护同一个变量
难道JAVA 中有其他含义吗?
一个jsp结束只是它的一个线程结束,并不是这个对象消失了。所以static仍存在的。在java中static与c++中一样,但是在servlet(jsp也是servlet的一种),这就有点不一样的。当一个servlet从init开始就一直存在,只到server被重启。
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()
而后
在jsp中
<%@page import="CData" %>
<%
out.println(CData.Init());
%>