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

关于jsp的一个计数器
我用tomcat配置了一个服务器,然后在里面写了这样一个jsp网页:  
<%@   page   contentType= "text/html;charset=gb2312 "%>  
<html>  
<body>  
<%!int   counter=0;  
synchronized   void   counterFunction()  
{  
counter++;  
}  
%>  
<%counterFunction();%>  
网站计数器 <br>  
您是第 <%=counter%> 位访问者  
</body>  
</html>  
,然后用127.0.0.1:8080访问该网页,可是怎么搞网页只是显示”您是第0位访问者"怎么刷新还是访问者为零,我觉得synchronized   void   counterFunction()  
{  
counter++;  
}  
这个函数没有得到执行.好奇怪哦.有人知道原因么?

------解决方案--------------------
to nighteagle82 :
synchronized是用实现同步,避免几个用户同一时间实现counter++,

to for_cyan :
jsp 最终是转化为 servlet , <%! ... %>最终是转化为servlet的init()方法,而servlet是单态的,因而其只进行一次初始化,因而只会运行一次int counter = 0 进行初始化,下一个用户来访问时只是直接调用<%..%>里面的方法,而不会再调用int counter = 0 ;


LZ,你的代码没错,我运行了,正常