`
newLinuxJava
  • 浏览: 44535 次
  • 性别: 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由浅入深(6)—— JSP声明

    在深入探讨JSP声明之前,我们首先需要理解JSP的基本工作原理。JSP(JavaServer Pages)是一种基于Java的服务器端脚本语言,用于创建动态Web内容。当JSP页面被请求时,它会被JSP引擎转换成一个Servlet类,然后编译成...

    JSP学习课件ppt

    - **JSP声明**:`!...%&gt;`,声明变量或方法。 - **JSP动作**:如`&lt;jsp:action&gt;`,调用JavaBean或其他组件。 - **JSP内置对象**:如`request`、`response`、`session`等,提供了与HTTP请求和响应交互的能力。 JSP与...

    JSP笔记,JSP笔记

    %&gt;`:这是JSP声明部分,用于声明变量或方法。这些声明被放入生成的Servlet类中,且可以包含实例变量。需要注意的是,非静态成员变量可能会被多个客户端共享,因此如果不处理线程安全问题,可能会引发问题。 2. **...

    jsp_demo1.zip

    1. **JSP声明**:在JSP页面中,可以使用`! %&gt;`标记来声明变量或方法。这些声明在JSP被翻译成Servlet时会成为Servlet类的一部分。例如,你可以声明一个变量或方法供整个JSP页面使用: ```jsp ! int counter = 0; ...

    JSP经典学习笔记(包含各种入门常用语法)

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

    JSP试卷及答案

    2. **JSP声明**:如`!...%&gt;`,用于声明变量或方法,这些声明会被转换为Servlet的成员变量和方法。 3. **JSP表达式**:如`&lt;%=...%&gt;`,将Java表达式的值转换为字符串并插入到HTML输出中。 4. **JSP指令**:如`&lt;%@...%&gt;...

    JSP脚本元素.ppt

    在JSP声明中,用户可以一次性声明多个变量和方法,也可以一次只声明一个变量和方法,但是这些声明在Java语言中必须是合法的。 2. JSP表达式(Expression) JSP表达式用于把Java数据直接插入到输出。其语法如下:。...

    JSP程序设计从入门到精通

    JSP声明用于定义全局变量或方法,表达式用于输出,而Scriptlet则可以包含多个Java语句。 #### JSP语法概要 JSP的基本语法与Java语言类似,但它增加了特定的指令和动作标签,例如page指令用于设置页面依赖属性,...

    jsp面试题题库

    在这篇文章中,我们将对 JSP 面试题库进行总结和分析,从中我们可以看到 JSP 的基本概念、JSP 声明、JDBC、JavaBean 等知识点。 首先,让我们来看一下 JSP 的基本概念。JSP(Java Server Pages)是一种动态网页技术...

    jsp播客文章实现

    1. **JSP声明**:在JSP页面中声明Java变量或方法,例如定义一个用来存储文章数据的类。 ```jsp ! class Article { String title; String content; // getters and setters } %&gt; ``` 2. **JSP表达式**:用于...

    JSP基本语法

    声明变量或方法 %),允许用户定义插入 Servlet 中的变量、方法等,使用 JSP 声明并结合 Scriptlet 与表达式可以显示输出结果,每条语句要以分号结尾。 * Scriptlet 代码片段:代码 %),每条语句以分号结尾。 3. ...

    JSP WEB 编程指南

    JSP声明(Declarations)** `! Java declaration %&gt;`用于声明变量或方法,这些声明属于JSP页面的类。 **6. JSP动作(Actions)** 比如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:params&gt;`等,它们控制页面流程,...

    JSP制作计数器代码

    1. **JSP声明(Declarations)**:在JSP中,我们可以声明变量或者方法,这些声明的代码会转换为Servlet的成员变量或方法。例如,我们可能会声明一个`int counter`变量来保存计数器的值: ```jsp ! int counter =...

    jsp编写简单的学生信息注册界面

    1. **JSP声明和指令**: - `@page` 指令:在给出的代码中,`; charset=UTF-8" pageEncoding="UTF-8"%&gt;` 是JSP的`@page`指令,用于设置JSP页面的基本属性。这里设置了语言为Java,内容类型为HTML,字符编码为UTF-8。 ...

    JSP入门教程 word版本

    - **JSP声明**: `%@ page info="a hello world example"` 是一个JSP声明,用于设置页面属性。在这里,它只是一个简单的注释,说明这是一个Hello World示例。 - **HTML元素**: JSP可以包含标准的HTML标签,用于构建...

    jsp留言板源代码.rar

    3. **JSP声明式编程**:在JSP中,可以使用`! %&gt;`声明变量和方法,这被称为声明式编程。例如,我们可能看到数据库连接和SQL查询的代码在这部分。 4. **JSP表达式**:`&lt;%= %&gt;`用于插入表达式的值到输出流,常用于显示...

    JSP api html格式

    2. **JSP声明**(! declaration %&gt;):在页面中声明变量或方法。 3. **JSP脚本片段**():包含任意Java代码块。 了解并熟练使用这些JSP API,可以帮助开发者更高效地编写JSP页面,实现动态功能。HTML格式的文档...

    jsp语法 jsp相关语法

    在本篇中,我们将深入探讨JSP的关键语法,包括`jsp声明`、`表达式`以及它们对初学者的重要性。 1. **JSP声明** JSP声明用于在页面范围内声明变量或方法。这些声明会被转换成Servlet的成员变量或方法。声明部分通常...

    10-JSP-Scripting-Elements-Chinese.pdf

    JSP 声明用于定义变量或方法,并将它们添加到 JSP 页面的作用域中。例如: ```jsp ! String getGreeting() { return "Hello"; } %&gt; ``` ### JSP 构造的应用 文档还提到了不同类型的 JSP 构造方法的应用场景,包括...

Global site tag (gtag.js) - Google Analytics