jsp的全局變量和局部變量ZT


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

hitywt 04-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>標簽中時,應注意以上的規則。

 

結論:<%里面聲明變量是線程安全的%>

<%!  全局變量當然線程不安全了  %>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM