`

jsp页面的全局变量<%! %>声明

    博客分类:
  • jsp
阅读更多
一般喜欢把页面里多处要用到的变量设置成全局变量,如:

当把该变量赋值后,再次访问该页面时,该变量的值依然保存。这使得想通过用全局变量接受提交的参数时会受到一些迷惑:

if(request.getParameter("operation")!=null)
  ID = request.getParameter("operation").trim();

当ID在前一次赋过初值后,因为另一种原因而再次访问该页面但‘operation'参数为空时,本来希望ID也为空,但实际上ID的值为上次访问该页面时赋的值。当希望通过ID的值做不同的操作时可能引起操作类型的混乱。

原因:使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一次。同时成员变量会自动初始化,所以只要声明后就可以使用;而本地变量在使用前一定要手动初始化,否则编译出错。

解决的办法是将ID用<% %>定义,或在判断ID的操作后重新对ID初始化。
分享到:
评论

相关推荐

    jsp页面笔记

    %&gt;`之间声明的变量称为全局变量,它们在整个JSP生命周期内有效,可供所有用户共享。例如,可以创建一个简单的计数器: ```jsp &lt;%@ page contentType="text/html;charset=GB2312" %&gt; &lt;HTML&gt;&lt;BODY bgcolor=pink&gt; &lt; ...

    web课堂笔记

    - **全局变量声明**:`&lt;%! int number = 1; %&gt;`, 在整个JSP页面内都可见。 - **方法声明**:在`&lt;%! %&gt;`之间声明方法,如`&lt;%! public int counter() { return number++; } %&gt;`, 可在整个JSP页面内使用。 #### 四、...

    java jsp sevelet

    4. **变量声明与生命周期**:在`&lt;%…%&gt;`中声明的变量仅限于当前_jspService()方法内使用,而`&lt;%!…%&gt;`中声明的成员变量和方法则可以在整个JSP页面中使用,甚至在多个请求之间共享,但需注意线程安全问题。 5. **...

    JSP页面与JSP标记.ppt

    %&gt;`中声明,这些变量在整个JSP页面中都可见。 4. **Java程序片**:`&lt;% ... %&gt;`内包含的Java代码,用于执行更复杂的逻辑操作。 5. **Java表达式**:`&lt;%= ... %&gt;`用于输出表达式的计算结果到页面。 **JSP页面的运行...

    jsp语法大全

    声明的变量和方法只在其所在的JSP页面中有效,如果需要跨页面使用,可以考虑将它们放入单独的Java源文件并通过`&lt;%@ include %&gt;`或`&lt;jsp:include&gt;`引入。 ### 表达式 表达式元素 `&lt;%= %&gt;` 用于将Java表达式的值转换...

    Jsp.rar_jsp

    &lt;title&gt;我的第一个JSP页面&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;%@ include file="header.jsp" %&gt; &lt;h1&gt;Hello, &lt;%= request.getParameter("name") %&gt;&lt;/h1&gt; &lt;%! public void init() { System.out.println("JSP页面初始化");...

    JSP基础教程源代码

    %&gt;`, 在这里声明了一个全局变量`i`。 2. **Scriptlet**: `&lt;% ... %&gt;`, 实现了每次访问时`i`自增1的功能。 3. **Expression**: `&lt;%= i %&gt;`, 输出当前的计数值。 ##### 示例3:同步计数器实现(Example2_2.jsp) ```...

    jsp详细的api帮助文档

    ...%&gt;`用于声明变量或方法。 **EL(Expression Language)** 是一种简洁的表达式语法,用于获取和设置JSP页面中的JavaBeans属性。它简化了数据绑定,减少了脚本let的使用。 **JSTL(JavaServer Pages Standard Tag...

    WEB程序设计-JSP(第3章 JSP语法).pdf

    - 定义JSP页面的全局属性。 - 示例: ```jsp &lt;%@ page language="java" contentType="text/html; charset=UTF-8" %&gt; ``` - `language`: 指定脚本语言,默认为Java。 - `contentType`: 设置内容类型及其字符集...

    word jsp 代码

    %&gt;`声明了一个全局变量count,`&lt;%! synchronized void setCount() {...} %&gt;`定义了一个同步方法setCount,确保了在多线程环境下的安全性。 通过这些例子,我们可以了解到JSP的基本元素,如指令、脚本元素、声明...

    j2ee课程设计

    %&gt;`声明一个全局变量`i`。 - 使用`&lt;% %&gt;`进行计数器的递增操作。 **7. example2_3.jsp:计算圆的面积和周长** 这个示例演示了如何使用JSP计算给定半径的圆的面积和周长。 ```jsp &lt;%@ page contentType="text/...

    JSP标签JSP 语法的基本原理

    %&gt;`,声明全局变量和方法,它们会被添加到Servlet类中但不包含在任何方法内。 3. **表达式(Expression)**:`&lt;%= ... %&gt;`,用于将Java表达式的值输出到HTML页面。 4. **程序段(Scriptlet)**:`&lt;% ... %&gt;`,包含...

    JSP网页编程 JSP网页编程,jsp语法,简单的jsp程序,是jsp新手入门的好帮手!!

    %&gt;`定义变量或方法,这些变量和方法在JSP页面的整个生命周期内有效。例如: ```jsp &lt;%! int count = 0; %&gt; ``` 5. **注释(Comments)**:有三种方式,HTML注释、JSP脚本注释和JSP指令注释。例如: ```jsp &lt;!...

    jsp 基础语法(是一个不大的ppt)文件

    声明部分用于在JSP页面中定义变量、方法或类,这些会被转换为Servlet的成员变量和方法。声明必须以分号结尾,语法是`&lt;%! declaration; [ declaration; ]+ ... %&gt;`。如: ```jsp &lt;%! int i = 0; %&gt; &lt;%! int a, b, c; ...

    jsp实例教程(都是实例)

    - `&lt;%@ page %&gt;`: 用于设置整个JSP页面的属性,如字符编码、导入的Java包等。 - `&lt;%@ include %&gt;`: 用于在编译时将另一个文件包含到当前JSP页面中。 - `&lt;%@ taglib %&gt;`: 引入自定义标签库,允许使用自定义的标签来...

    jsp学习之scriptlet的使用方法详解.docx

    声明允许开发者在JSP页面中定义全局变量、方法和类。这些定义在JSP页面的整个生命周期内都是有效的。 **示例代码**: ```jsp &lt;html&gt; &lt;head&gt; &lt;title&gt;This is Java Page&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- 显示解释解释...

    JSP编程

    ...%&gt;`声明变量或方法,可用于整个JSP页面。 - **动作(Actions)**: 如`&lt;jsp:include&gt;`包含其他页面,`&lt;jsp:forward&gt;`转发请求等。 **4. JSP内置对象** JSP提供了九个内置对象,无需手动创建即可直接使用: - **...

    jsp基础语法jsp基础语法

    &lt;title&gt;我的第一个JSP页面&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;% // 动态内容 %&gt; &lt;h1&gt;Hello, JSP!&lt;/h1&gt; &lt;/body&gt; &lt;/html&gt; ``` **2. JSP指令** JSP指令是用于配置整个JSP页面的元信息。主要有以下几种: - `@page`: 配置...

    JSP页面简介

    %&gt;`,用于声明变量或方法,这些变量和方法在整个JSP页面中都可见。 - **Java程序段**:`&lt;% %&gt;`, 可以编写任意的Java代码,如循环、条件判断等。 - **表达式**:`&lt;%=%&gt;`,用于显示表达式的值,等效于调用`out.print...

Global site tag (gtag.js) - Google Analytics