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

本文介绍了JSP中变量的声明方法及其在页面中的输出表达式。通过示例展示了每次页面刷新,变量count如何累加且在不同客户端间保持连续,这源于JSP页面会被编译为Servlet并共享成员变量。同时,讨论了JSP声明部分如何转换为Servlet的成员变量和方法,并提醒读者注意声明部分不能包含抽象方法,以防Servlet变为抽象类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何在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变成抽象类,从而导致不能实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值