如何在JSP页面中声明变量?
声明语法:<%! 声明部分 %>
输出表达式:<%=表达式%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!-- JSP申明变量 -->
</head>
<!-- JSP申明变量语法: -->
<%!
//声明一个变量
public int count;
//声明一个方法
public String info(){
return "hello";
}
%>
<body>
<%
//将count的输出后再加1
out.println(count++);
%>
<br/>
<%
//输出info()方法的返回值
out.println(info());
%>
<%=count %>
</body>
</html>
浏览器打开页面,可以看到输出结果:
0
hello
1
每刷新一次页面,count值将加1。而且,打开浏览器,甚至在不同的机器上访问该页面,count值都是连续的,因为所有的客户端都共享了同一个count变量。JSP页面会编译成一个Servlet类,每个Servlet在容器中只有一个实例;在JSP中声明的变量是成员变量,成员变量只在创建实例的时候初始化,该变量的值将一直保存,直到实例销毁。
乍一看这个变量和方法不属于任何类,似乎可以独立存在。打开Tomcat的work\Catalina\。。。目录下的declare_jsp.java文件,看到如下代码片段:
这表明JSP页面的声明部分将转换成对应的Servlet的成员变量和成员方法。
注:由于JSP声明语法定义的变量和方法对应于Servlet类的成员变量和方法,所以JSP声明部分定义的变量和方法可以使用private、public等访问控制符修饰,也可以使用static修饰,将其变成类属性和方法。但不能使用abstract修饰声明部分的方法,因为抽象方法将导致JSP对应的Servlet变成抽象类,从而导致不能实例化。