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()方法中的本地变量只能每响应一次请求就重建一次。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • TCP Flags标志位介绍[通俗易懂]

    TCP Flags标志位介绍[通俗易懂]传输控制协议(TransmissionControlProtocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40字节的可选数据字段组成。如下图所示:来自于https://www.geeksforgeeks.org1.源端口号(SourcePort):16bits,该字段标识发送方应用程序的端口号。2.目…

  • Android开发之模板模式初探

    Android开发之模板模式初探

    2021年12月13日
  • python中modulenotfounderror_esxi安装报错

    python中modulenotfounderror_esxi安装报错1.下载安装包https://www.python.org/ftp/python/该目录下选择所需要的版本进行下载、解压。wgethttps://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgztar-xzvfPython-3.7.1.tgz2.二进制文件安装  1.创建存放目录mkdir/usr/l…

  • linux修改文件没有权限设置,Linux下修改文件权限(所有权)

    linux修改文件没有权限设置,Linux下修改文件权限(所有权)Linux与Unix是多用户操作系统,所以文件的权限与所有权的实现就显得很有必要;每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other)用户(u)是文件的所有者,通常有所有的文件的操作权限用户组(g)是多个用户的集合,可能有文件的部分访问权,相当于各用户之间的共享文件其他(o)是指文件所有者和用户组成员之外的任何人使用ls-l可以显示出当前目录下的文件…

  • 网闸上数据库同步

    网闸上数据库同步最近要实施数据库架构调整。1.数据库服务器要加台内网服务器,使用网闸隔离。中间有台文件中转服务器。要求实现数据库复制到内网服务器上供应用使用。考虑的方案有如下: 1.使用中转服务器作复制桥接。先从外网服务器同步到中转服务器,再同步到内网服务器。 2.貌似有的网闸产品支持数据库同步,如果本次上的产品支持,就不用什么桥接了,直接复制到内网服务器就OK了。  等待方案确认中

  • 树莓派3B安装ffmpeg[通俗易懂]

    树莓派3B安装ffmpeg[通俗易懂]树莓派3B安装ffmpeg树莓派型号:3b操作系统:ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img如果只使用基础功能可以参考https://blog.csdn.net/qq_28877125/article/details/70186287用这里边的配置文件,编译起来的确比较快,十分钟内编译完成,但是,这个只包含了基础功能,我使…

发表回复

您的电子邮箱地址不会被公开。

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