zoukankan      html  css  js  c++  java
  • jsp的全局变量和局部变量ZT

    原来回答https://bbs.csdn.net/wap/topics/30102676

    hitywt04-22 09:33
    等级 Bbs5 5楼

    在<% .... %>定义的变量是JSP的本地变量,它们对于外部函数是不可见的,即使这些函数和变量在同一页面中声明。如: 

    <%
    int evilVariable = "666";
    %>
    ...
    function testFunction() {
    //在函数内部,变量evilVariable是不可见的
    }
    为什么呢?这是因为变量evilVariable最终成为结果servlet中service()方法的一个本地变量,因此它不能被结果servlet的其它方法存取。

    对于在<%! %>中声明的变量将作为全局变量。如:

    <%!
    int evilVariable = "666";
    %>
    ...
    function testFunction() {
    int x = evilVariable; //能够使用变量evilVariable
    }
    这是因为通过这种方式定义的evilVariable变量变为了结果servlet的一个私有成员变量,因此它可以被servlet中的所有的方法存取。

    结论

    理解以上的概念是很重要的,因为在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,而service()方法中的本地变量只能每响应一次请求就重建一次。故我们将变量放置到<SERVER></SERVER>标签中时,应注意以上的规则。

     

    结论:<%里面声明变量是线程安全的%>

    <%!  全局变量当然线程不安全了  %>

     

  • 相关阅读:
    正则表达式实例
    正则表达式理解
    Git初体验
    浏览器加载解析HTML、JS、CSS的过程
    iframe
    纯前端,html页面间传值方式:
    Visual Code 之使用
    seajs使用记
    VBA中Dictionary对象使用(Key,Value)
    存储过程和存储函数和触发器示例
  • 原文地址:https://www.cnblogs.com/wtjqs/p/10899178.html
Copyright © 2011-2022 走看看