在JSP中,在"<% %>"之间书写的程序代码称为Java程序片,并且可以在其中插入HTML语句。
一个JSP页面中可以有多个Java程序片。
但是,在Java程序片中声明的变量在它们所在的JSP页面的所用程序片及表达式中都有效。
在程序片中声明的变量只在页面有效,是局部变量,它在不同的客户访问同一个页面的时,此变量是不能共享的。
但如果是在"<%! %>"之间声明的变量就可以在不同的客户之间共享,其有效范围是整个web应用,在服务器关闭时变量才会被释放.
"<%= %>"可以直接输出变量或表达式的值,变量或表达式的值将作为一个字符串在浏览器中输出。
下面是一个简单的计数器,用于统计当前已访问网站的人数:
<%! int counter=0;
void counterFun(){
counter++;
}
%>
<%counterFun(); %>
网站计数器<br>
你是第<%=counter %>位访问者
反复刷新网页,可以看见counter在不断增加,即使同时打开多个页面counter依旧在依次整体增加
但是,我们将服务器关闭之后再打开,counter又回到了1
可见,计数器变量将在客户间共享,直至服务器关闭!
如果我们想要在服务器关闭之后依然保存当前访问次数,并且在下次启动时在此基础上增加
我们可以在服务器端新建一个文本用于保存当前访问次数,每次访问网页时都读取这个文本然后次数加一显示并保存。
//读取
FileInputStream in=new FileInputStream("count.txt");
DataInputStream dataIn=new DataInputStream(in);
number=dataIn.readInt();
//显示当前已访问次数
number++;
in.close();
dataIn.close();
//写入
FileOutputStream out=new FileOutputStream("count.txt");
DataOutputStream dataOut=new DataOutputStream(out);
dataOut.writeInt(number);
out.close();
dataOut.close();
但我感觉应该有更直接的方法。