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>

执行效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3Vhbmp1bmdhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

jsp 中声明方法的使用的更多相关文章

  1. MVC,如何在视图中声明方法,调用方法?

    <div> <!--在视图中申明方法,此方法的类型已经固定为HelperResult--> @helper ShowHello(string s) { <div> ...

  2. JSP中声明变量、方法

    在JSP页面中声明局部变量,全局变量,方法等 代码示例: <%@ page language="java" contentType="text/html; char ...

  3. main方法中声明8种基本数据类型的变量并赋值

    main方法中声明8种基本数据类型的变量并赋值  char→  int→ long→ float→ double byte→ short→ 

  4. jsp中四种传递参数的方法

    jsp中四种传递参数的方法如下: 1.form表单 2.request.setAttribute();和request.getAttribute(); 3.超链接:<a herf="i ...

  5. jsp中怎么调用java类中的方法

    在jsp页面中先要,引入java类 例如: <%@page import="javabean.DbConn"%><!-- 引入包中的"类" - ...

  6. Jsp中如何通过Jsp调用Java类中的方法

    Jsp中如何通过Jsp调用Java类中的方法 1.新建一个项目,在src文件夹下添加一个包:如:cn.tianaoweb.com; 2.再在包中添加一个类:如 package com; public ...

  7. C#中方法,方法声明,方法调用和方法重载!

      一,定义:方法是具有名称的可执行代码块. 二,方法的声明:声明方法的语法包括以下五个部分: 1,访问权限修饰符,这个是可选的参数,默认值是私有访问private,即只能从声明它的类的内部访问. 2 ...

  8. 在IDEA中使用JSP中的out内置对象,out.println()——println红色解决方法

    今天在学习JSP的时候,在jsp中使用out内置对象,开发工具用的是IDEA,结果如下图所示 郁闷了半天找度娘,可能关键字输的不准确,乱七八糟的方法一大堆,什么加依赖啊啥的,反正都不管用,最后找到一篇 ...

  9. JSP中获取各种路径的方法

    我们当中可能有很多人不知道如何获得jsp中的路径怎么获取 方法一: <a href ="test.jsp?p=fuck">跳转到test2</a> 方法二: ...

随机推荐

  1. Sonar 规则

    bug类型: 1.".equals()" should not be used to test the values of "Atomic" classes. ...

  2. interface与抽象类

    抽象类: 定义:在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类 抽象类不能被实例化. 抽象类被继承之后,子类必 ...

  3. vc++中 .H 头文件引用的顺序与符号关系

    在使用 #include "math.h"  和 #include <math.h>时,引号 与尖括号的区别如下 此时math.h_1 在工程文件中 math.h_2 ...

  4. oracle数据库定时备份

    现有需求,设计一批处理文件,实现周一全部备份,周二周三周五周六增量备份,周四周日累计备份.并且每日将上个月本日数据删除(如今日8月7号,则删除7月7号的数据).并将备份压缩以减小所占空间. 思路: 备 ...

  5. Java基础——接口

    一:接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数. 在封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部细节,只提供给用户接口(int ...

  6. Colletions工具类常用方法

    Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合 排序操作 void reverse(List list)/ ...

  7. DBDA

    <?php class DBDA{ public $host = "localhost"; //服务器地址 public $uid = "root"; / ...

  8. Window下的———TOMCAT环境的配置

    1. 先去官方网站下载需要的猫(tomcat) http://tomcat.apache.org/ 2.下载好包,然后解压出来,放在你需要的位置上 3.去到配环境变量的地方,进行相应的环境配置     ...

  9. Python3.0科学计算学习之类

    类: Python中的类是一个抽象的概念,甚至比函数还要抽象.可以把它简单的看作是数据以及由存取.操作这些数据的方法所组成的一个集合.类是Python的核心概念,是面向对象编程的基础. 类有如下的优点 ...

  10. LINUX-文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消

    ls -lh 显示权限 ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 chmod ugo+rwx directory1 设置目录的所有人(u).群组(g)以及其他人(o ...