JSP定义_JSP声明变量与普通脚本变量的区别

JSP定义_JSP声明变量与普通脚本变量的区别JSP两种声明变量的区别在JSP中用两种声明变量的方法,一种是在内,一种是在内。他们之间有什么区别呢?我们直接看一个JSP文件来理解。代码如下:JSPDeclarationsJSPDeclarationsintcount=0;//声明在!>内的变量voidmethod(){}%>int

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

JSP两种声明变量的区别

在JSP中用两种声明变量的方法,一种是在<%! %>内,一种是在<% %>内。他们之间有什么区别呢?我们直接看一个JSP文件来理解。

代码如下:

<HTML>

<TITLE>JSP Declarations</TITLE>

<BODY>

<H1>JSP Declarations</H1>

<%! 

 int count = 0;      //声明在<%!>内的变量     

  void method(){}     

%>

<%

  int i= 0;         //声明在<% >内的变量

%>

<H1>

count:<%= ++count %></H1>

<br/>

<H1>i:<%= ++i %></H1>    
 

</BODY>

</HTML>

启动tomcat运行这个jsp会发现当我们不断刷新页面时count的值会不断增加 而i的值始终不变,也就是说定义在<%!%>内的变量会累加,而定义在<%%>内的变量不会累加。

这是为什么呢?

声明在<%! %>内的变量和方法是一个类内的变量和方法也就是成员变量和成员方法。声明在<%%>内的变量是一个方法的变量也就是局部变量。

我们学习JAVA的时候就知道成员变量会被多个对象共享,而局部变量单独对象访问。所以count会自动增加,i不对递增。

在这里还有个问题要告诉读者,如果在<% %>内添加一个method()方法那么该程序就会报错,其实原因不难想象,这样声明一个方法等于就是一个类里的方法里又声明了个方法。结果肯定是错误的。

注:jsp页面中<%! %>内定义的是全局变量。使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一次。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180144.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux之文本编辑器

    linux之文本编辑器【目标】管理员在进行系统操作的时候,不可避免地会对文本进行修改,如进行各种服务程序配置文件的改动,使程序对用户提供不同的服务效果。在本章我们向大家介绍Linux上常见的编辑器ed、vi、emacs,同时以vi为例,讲解Linux中的文本编辑,为大家成为优秀的系统管理员打下基础。 【重点内容】Ø       Linux编辑器简介Ø       vi的打开和退出Ø

    2022年7月26日
    6
  • 面试官:你说熟悉MySQL,那来谈谈InnoDB怎么解决幻读的?

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:Aaron_涛 blog.csdn.net/qq_33330687/article/details/89004…

    2021年6月25日
    81
  • python读取txt文件,将文件中第一列显示出来「建议收藏」

    python读取txt文件,将文件中第一列显示出来「建议收藏」文件:代码:try:file=open(‘food.txt’,"r")#以读模式打开文件exceptFileNotFoundError:#如果文件不存在,给提示print("fileisnotfound")else:contents=file.readlines()#读取全部行forconten…

    2022年5月7日
    165
  • java单例模式_Java单例模式

    java单例模式_Java单例模式单例(Singleton)模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。这种模式涉及一个类,它负责创建一个对象,同时确保只创建一个对象。这个类提供了一种方法来访问它的唯一对象,可以直接访问,而不需要实例化类的对象。实现实例我们将创建一个单一对象类-SingleObject。单个对象(SingleObject)类的构造函数是私有的,…

    2022年7月8日
    24
  • windows命令行查看盘符列表_命令提示符怎么切换目录

    windows命令行查看盘符列表_命令提示符怎么切换目录1、windows系统使用快捷键:WIN+R,调出运行命令窗口,并输入CMD,回车进入dos界面:如下图所示:如上图所示可以看出我我所在目录是在C盘,现在我想要切换到D盘的某一个指定目录下,如:D:\software\back\java\tools\RabbitMQ\rabbitmq_server-3.7.3步骤1如下及步骤配图:相关命令#先从C盘切换至D盘

    2022年10月15日
    1
  • linux socket udp编程_linux网络编程socket

    linux socket udp编程_linux网络编程socket浅谈UDP。UDP是一种不可靠的、无连接的、数据报服务。发送端应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报发送。接收端必须及时针对每一个UDP数据报执行读操作,否则就会丢包。并且,如果用户没有指定足够的应用程序缓冲区来读取UDP数据,则UDP数据将被截断。因此,采用UDP协议时必须要求接收端可以一次性收取完发送端一次发送的数据,不然就会造成数据丢失。2.客户端3.输出结果UDP是一种无连接的传输方式,所以可以多个客户端同时发送。服务器端关闭立马重启,客户

    2022年9月8日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号