`
newLinuxJava
  • 浏览: 42981 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多
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声明中独立存在的方法,只是一种假象。
0
0
分享到:
评论

相关推荐

    JSP实例入门-JSP实例入门

    JSP实例入门 JSP实例入门 JSP实例入门 JSP实例入门 JSP实例入门

    JSP教程

    第一个JSP JSP由浅入深(3)—— 通过表达式增加动态内容 JSP由浅入深(4)—— Scriptlets JSP由浅入深(5)—— Scriptlets和HTML的混合 JSP由浅入深(6)—— JSP声明 JSP由浅入深(7)—— JSP Directives...

    Java Web应用开发:JSP技术基础.pptx

    JSP声明;Java程序片段;JSP中的Java程序片段和模板文本;查看对应的servlet代码;练习;Java表达式;JSP中的注释—Java注释;JSP中的注释--HTML注释;使用&lt;!-- --&gt; 将java代码和HTML标签 全部注释掉,部署应用, 访问该页面...

    JSP自定义标记(四则运算)

    这是个实现ComputeSimpleTag标记的文件,该标记可以实现两个数字的加减乘除。自定义为,然后再输入两个数字就可以实现

    JSP中的脚本和动作标签

    JSP中的脚本和动作标签,非常详细,通俗易懂,希望对你有所帮助。

    jsp中变量及方法的声明与使用

    本文实例讲述了jsp中变量及方法的声明与使用。分享给大家供大家参考,具体如下: &lt;&#37;@ page language=java import=java.util.* contentType=text/html;charset=GBK%&gt; &lt;&#37; String path = request....

    jsp语法 jsp相关语法

    jsp一些关键语法 jsp声明 表达式 对初学jsp很有帮助

    JSP由浅入深(6)—— JSP声明

    现在你所编写的JSP要变成一个类的定义。所有你编写的scriptlets要放置到这个类的一个方法中。同样,你可以增加变量和方法声明到这个类中。当然你也可以从scriptlets和表达式中使用这些变量和方法。为了增加一个声明...

    JSP(有参、无参等方式)访问Web留言板分页

    使用JSP技术通过js+servlet+tag+dao对留言板进行分页处理。有无参、有参等方式访问jsp页面实现

    JSP由浅入深(CHM)

    &gt;熟悉JSP服务器 &gt;通过表达式增加动态内容 &gt;Scriptlets &gt;JSP声明 .... 》表单编辑

    JSP内置对象

    JSP内置对象有些成员变量不用声明就可以在JSP页面的脚本(Java程序片和Java表达式)中使用,这就是所谓的内置对象。

    java web技术开发大全(最全最新)

    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的...

    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经典学习笔记。...JSP声明将会转换成Servlet中的成员变量或成员方法,因此,JSP声明依然符合Java语法。 格式: &lt;&#37;! 声明部分 %&gt; &lt;&#37;! //声明一个整型变量 public int count; //声明

    jsp内置对象

    为简化Web页面的开发过程,JSP提供了一些由服务器实现和管理的内置对象,这些内置对象在JSP页面中不用声明就可以使用。 内置对象是服务器JSP引擎自动创建的Java类实例 通过存取这些内置对象实现与JSP页面和Servlet...

    JSP 程序设计从入门到精通 PDF 教程

     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表达式

    jsp2.0表达式教程,pdf格式的

    JSP期末考试试卷及参考答案

    5、在页面中通过声明标识声明的变量和方法的有效范围为(整个页面),他们将成为JSP页面被转换成Java类后类中的(属性)和(方法)。 6、通常应用(&lt;jsp:useBean&gt;)动作标识可以在JSP页面中创建一个Bean实例,并且通过属性的...

    jsp中变量及方法的声明与使用.docx

    jsp中变量及方法的声明与使用.docx

Global site tag (gtag.js) - Google Analytics