zoukankan      html  css  js  c++  java
  • 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>

    执行效果:



  • 相关阅读:
    防盗链(三)nginx实现图片防盗链(referer指令)
    防盗链(二)nginx secure_link下载防盗链
    防盗链(一)资料整理
    如何实现 token 加密
    Socket编程(三)demo举例
    Socket编程-(二)tcp三次握手与四次挥手
    Spring的事务控制,注解和xml配置以及解释
    SpringAop的核心概念和使用,表达式匹配刨析,xml配置通知和环绕通知
    SpringAop的简介
    Spring整合JUnit测试单元
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7109414.html
Copyright © 2011-2022 走看看