jsp 中声明方法的使用

Posted lxjshuju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 中声明方法的使用的主要内容,如果未能解决你的问题,请参考以下文章

JSP 语法

JSP是一种语言

写出java中定义方法的语法格式,并说明一个方法可以有多少个参数,多少个返回值?

JSP中的声明语句块和表达式块

在 JSP 中的 <% %> 代码片段中添加链接

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js