明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

JSP中變量的定義域

[摘要]在<% .... %>定義的變量是JSP的本地變量,它們對(duì)于外部函數(shù)是不可見的,即使這些函數(shù)和變量在同一頁面中聲明。如: <%int evilVariable = "66...
在<% .... %>定義的變量是JSP的本地變量,它們對(duì)于外部函數(shù)是不可見的,即使這些函數(shù)和變量在同一頁面中聲明。如:

<%
int evilVariable = "666";
%>
...
function testFunction() {
//在函數(shù)內(nèi)部,變量evilVariable是不可見的
}
為什么呢?這是因?yàn)樽兞縠vilVariable最終成為結(jié)果servlet中service()方法的一個(gè)本地變量,因此它不能被結(jié)果servlet的其它方法存取。

對(duì)于在<%! %>中聲明的變量將作為全局變量。如:

<%!
int evilVariable = "666";
%>
...
function testFunction() {
int x = evilVariable; //能夠使用變量evilVariable
}
這是因?yàn)橥ㄟ^這種方式定義的evilVariable變量變?yōu)榱私Y(jié)果servlet的一個(gè)私有成員變量,因此它可以被servlet中的所有的方法存取。

結(jié)論

理解以上的概念是很重要的,因?yàn)樵趕ervlet環(huán)境中,對(duì)于一個(gè)JSP頁只允許有一個(gè)結(jié)果servlet的實(shí)例在運(yùn)行和響應(yīng)所有的頁面請(qǐng)求。因此,在結(jié)果servlet中所有的成員變量可以被所有的請(qǐng)求所共享,而service()方法中的本地變量只能每響應(yīng)一次請(qǐng)求就重建一次。故我們將變量放置到<SERVER></SERVER>標(biāo)簽中時(shí),應(yīng)注意以上的規(guī)則。


標(biāo)簽:JSP中變量的定義域