初学JSP 绝对基础的问题
<%@ page contentType= "text/html; charset=GBK " %>
<html>
<head>
<title> jshell ver 0.1 </title>
</head>
<body>
<%!
int i=0;
%>
<%
out.println(i++);
%>
</body>
</html>
上面这些代码 我用ie浏览
一直手动刷新 每刷一次 i的值就会加1
可是 我这里出现了一个问题
有的时候 我刷着刷着 i 的值突然就变成了0! 这是为啥!?
------解决方案--------------------我觉得可能是由于SERVLET的多线程的安全问题造成的,因为使用 <%! %> 声明的变量是Servlet的实例变量,不是线程安全的,比 <%!int i=0;%> 如果你改成 <% int i=0;%> 则是线程安全的,这样你的问题也许就解决了。
线程安全问题主要是由实例变量造成的,不管在Servlet还是JSP,或者在Struts的Action里面,不要使用实例变量,任何方法里面都不要出现实例变量,你的程序就是线程安全的,就不会出现类似你说的这些问题,你可以试试看。