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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm 安装库_基础笼安装视频

    pycharm 安装库_基础笼安装视频进入Settings打开选项卡,库右侧有一个加号,点击加号在输入框里搜索要安装的库就行(已经安装过的颜色会改变)点击会出现这里面是一些常用库的下载地址,可以自己添加附上我的常用地址:http://mirrors.aliyun.com/pypi/simple/https://pypi.tuna.tsinghua.edu.cn/simple/以上,就是Pycharm安装库的…

    2022年8月25日
    10
  • pytest skipif_skip的中文是什么

    pytest skipif_skip的中文是什么前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月31日
    4
  • cxf框架调用webservice_webservice json

    cxf框架调用webservice_webservice json本文主要包括以下内容ant工具的使用利用cxf实现webservicecxf与spring整合ajax访问webserviceant工具1、为什么要用到ant这个工具呢?Ant做为一种工具已经广泛被使用,并且历史悠久。使用ant的内置命令,可以编译java源文件(javac),运行java文件(java),给class文件打包(jar、war、ear),也可以创建(mkdir)、删除…

    2025年11月23日
    3
  • setContentView剖析[通俗易懂]

    setContentView剖析[通俗易懂]1、setContentView的作用是将View加载到根view之上,这样当显示view时,先显示根view,然后在显示子view,以此类推,最终将所有view显示出来。2、setContentView必须要放在findviewbyid之前,因为view在加载之前是无法引用的。3、setContentView最本质的作用是为要显示的view分配内存。4、act

    2022年6月26日
    32
  • 项目接入即时聊天客服系统(环信系统)PHP后端操作

    项目接入即时聊天客服系统(环信系统)PHP后端操作

    2021年10月31日
    51
  • 软件项目版本命名规范

    软件项目版本命名规范

    2021年5月11日
    116

发表回复

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

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