首页 > 代码库 > jsp 中声明方法的使用
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("count.txt"); synchronized void countPeople() { if(!file.exists()){ number++; try{ file.createNewFile(); FileOutputStream out=new FileOutputStream("count.txt"); DataOutputStream dataOut=new DataOutputStream(out); dataOut.writeInt(number); out.close(); dataOut.close(); }catch(IOException ee){} } else{ try{ 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(); }catch(IOException ee){} } } %> <% countPeople(); %> <p>您是第 <%=number%> 个訪问本站的客户。 <p> </FONT> </BODY> </HTML>
执行效果:
jsp 中声明方法的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。