JSP声明用于声明变量和方法。在JSP声明中声明方法看起来很特别,似乎没有类,只有方法定义,方法似乎可以脱离类独立存在。实际上,JSP声明将会转换成Servlet的成员变量或成员方法,因此JSP声明依然符合Java语法。
JSP声明的语法格式如下:
<%! 声明部分 %>
看下面使用JSP声明的示例页面。
程序清单:codes\02\2.2\jspPrinciple\declare.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>声明测试< /TITLE></HEAD><!-- 下面是JSP声明部分 --><%!//声明一个整型变量public int count;//声明一个方法public String info(){return "hello";}%><BODY><%//将count的值输出后再加 1out.println(count++);%><br><%//输出info()方法的返回值 out.println(info());%></BODY></HTML>
在浏览器中测试该页面时,可以看到正常输出了count值,每刷新一次,count值将加1,同时也可以看到正常输出了info方法的返回值。
上面粗体字代码部分声明了一个整型变量和一个普通方法,表面上看起来这个变量和方法不属于任何类,似乎可以独立存在,但这只是一个假象。打开Tomcat的 work\Catalina\localhost\jspPrinciple\org\apache\jsp目录下declare_jsp.java文件,看到如下代码片段:
public final class declare_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent {//声明一个整型变量public int count;//声明一个方法public String info(){return "hello";}...}
上面的粗体字代码与JSP页面的声明部分完全对应,这表明JSP页面的声明部分将转换成对应Servlet的成员变量或成员方法。
由于JSP声明语法定义的变量和方法对应于Servlet的成员变量和方法,所以JSP声明部分定义的变量和方法可以使用private、public等访问控制符修饰,也可使用static修饰,将其变成类属性和类方法。但不能使用abstract修饰声明部分的方法,因为抽象方法将导致JSP对应 Servlet变成抽象类,从而导致无法实例化。
打开多个浏览器,甚至可以在不同的机器上打开浏览器来刷新该页面,将发现所有客户端访问的count值是连续的,即所有客户端共享了同一个count变量。这是因为:JSP页面会编译成一个Servlet类,每个Servlet在容器中只有一个实例;在JSP中声明的变量是成员变量,成员变量只在创建实例时初始化,该变量的值将一直保存,直到实例销毁。
值得注意的是,info()的值也可正常输出。因为JSP声明的方法其实是在JSP编译生成的Servlet的实例方法——Java里的方法是不能独立存在的,即使在JSP页面中也不行。
JSP声明中独立存在的方法,只是一种假象。
分享到:
相关推荐
JSP实例入门 JSP实例入门 JSP实例入门 JSP实例入门 JSP实例入门
第一个JSP JSP由浅入深(3)—— 通过表达式增加动态内容 JSP由浅入深(4)—— Scriptlets JSP由浅入深(5)—— Scriptlets和HTML的混合 JSP由浅入深(6)—— JSP声明 JSP由浅入深(7)—— JSP Directives...
JSP声明;Java程序片段;JSP中的Java程序片段和模板文本;查看对应的servlet代码;练习;Java表达式;JSP中的注释—Java注释;JSP中的注释--HTML注释;使用<!-- --> 将java代码和HTML标签 全部注释掉,部署应用, 访问该页面...
这是个实现ComputeSimpleTag标记的文件,该标记可以实现两个数字的加减乘除。自定义为,然后再输入两个数字就可以实现
JSP中的脚本和动作标签,非常详细,通俗易懂,希望对你有所帮助。
本文实例讲述了jsp中变量及方法的声明与使用。分享给大家供大家参考,具体如下: <%@ page language=java import=java.util.* contentType=text/html;charset=GBK%> <% String path = request....
jsp一些关键语法 jsp声明 表达式 对初学jsp很有帮助
现在你所编写的JSP要变成一个类的定义。所有你编写的scriptlets要放置到这个类的一个方法中。同样,你可以增加变量和方法声明到这个类中。当然你也可以从scriptlets和表达式中使用这些变量和方法。为了增加一个声明...
使用JSP技术通过js+servlet+tag+dao对留言板进行分页处理。有无参、有参等方式访问jsp页面实现
>熟悉JSP服务器 >通过表达式增加动态内容 >Scriptlets >JSP声明 .... 》表单编辑
JSP内置对象有些成员变量不用声明就可以在JSP页面的脚本(Java程序片和Java表达式)中使用,这就是所谓的内置对象。
5.3.3.JSP声明 5.3.4.JSP表达式语言(EL) 5.3.5 实例:用EL函数替换HTML中的特殊字符 5.3.6 JSP页面中的注释 5.4 JSP指令 5.4.1 JSP指令简介 5.4.2 page页面指令 5.4.3 include加入指令 5.5.JSP的...
a-shanchu.jsp / a-shanchu1.jsp 管理员删除商品。 a-tianjia.html / a-tianjia.jsp 管理员添加商品。 a-xiugai.jsp / a-xiugai1.jsp 管理员修改商品价格。 denglu.html / denglu.jsp 用户的登录与验证。 index.jsp...
本文介绍了JSP经典学习笔记。...JSP声明将会转换成Servlet中的成员变量或成员方法,因此,JSP声明依然符合Java语法。 格式: <%! 声明部分 %> <%! //声明一个整型变量 public int count; //声明
为简化Web页面的开发过程,JSP提供了一些由服务器实现和管理的内置对象,这些内置对象在JSP页面中不用声明就可以使用。 内置对象是服务器JSP引擎自动创建的Java类实例 通过存取这些内置对象实现与JSP页面和Servlet...
2.1.1 JSP 语法之声明 21 2.1.2 JSP 语法之表达式 21 2.1.3 JSP 语法之Scriptlet 21 2.2 JSP的指令 22 2.2.1 page指令(Directive) 22 2.2.2 include指令(Directive) 24 2.3 JSP的动作 25 ...
jsp2.0表达式教程,pdf格式的
5、在页面中通过声明标识声明的变量和方法的有效范围为(整个页面),他们将成为JSP页面被转换成Java类后类中的(属性)和(方法)。 6、通常应用(<jsp:useBean>)动作标识可以在JSP页面中创建一个Bean实例,并且通过属性的...
jsp中变量及方法的声明与使用.docx