jsp中声明⽅法的使⽤
1、在”<%!”和”%>”之间声明⽅法,该⽅法在整个JSP页⾯有效。可是该⽅法内定义的变量仅仅在该⽅法内有效。
这些⽅法将在Java程序⽚中被调⽤,当⽅法被调⽤时,⽅法内定义的变量被分配内存,调⽤完成就可以释放内存。当多个客户同⼀时候请求⼀个JSP页⾯时,他们可能⽤法操作成员变量,对这样的情况应给予重视。
解决的⽅法:通过synchronized⽅法操作⼀个成员变量来实现⼀个计数器
<%@ page contentType="text/html;charset=GB2312"%>
<HTML>
<BODY BGCOLOR=cyan>
<FONT Size=4>
<%!
int number=0;
synchronized void countPeople()
{
number++;
}
%>
<%
countPeople();
%>
<p>您是第
<%=number%>
个訪问本站的客户。
<p>
</FONT>
</BODY>
</HTML>
执⾏效果:
上⾯这个样例,假设Tomcatserver⼜⼀次启动就会刷新计数器,因此计数⼜重0開始。在以下这个样例。我们使⽤Java的输⼊输出流技术。将计数保存到⽂件,当客户訪问该JSP页⾯时,就去读取这个⽂件,将server⼜⼀次启动之前的计数读⼊。并在次基础上添加1,然后将新的计数写⼊到⽂件。
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.io.*"%>
<HTML>
<BODY BGCOLOR=cyan>
<FONT Size=4>
<%!
int number=0;
File file=new File("");
synchronized void countPeople()
{
if(!ists()){
number++;
try{
FileOutputStream out=new FileOutputStream("");
DataOutputStream dataOut=new DataOutputStream(out);
dataOut.writeInt(number);
out.close();
dataOut.close();
}catch(IOException ee){}
}
else{
try{
FileInputStream in=new FileInputStream("");
DataInputStream dataIn=new DataInputStream(in);
adInt();
number++;
in.close();
dataIn.close();
FileOutputStream out=new FileOutputStream("");
DataOutputStream dataOut=new DataOutputStream(out);
dataOut.writeInt(number);
out.close();
dataOut.close();
}catch(IOException ee){}
}
jsp页面输出的三种方式
}
%>
<%
countPeople(); %>
<p>您是第
<%=number%>个訪问本站的客户。<p>
</FONT>
</BODY>
</HTML>
执⾏效果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。