JSP的变量声明以及输出表达式

来源:互联网 发布:倚天指标源码 编辑:程序博客网 时间:2024/05/21 11:23

如何在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声明部分定义的变量和方法可以使用privatepublic等访问控制符修饰,也可以使用static修饰,将其变成类属性和方法。但不能使abstract修饰声明部分的方法,因为抽象方法将导致JSP对应的Servlet变成抽象类,从而导致不能实例化。

0 0
原创粉丝点击