在JSP開(kāi)發(fā)中的對(duì)象和范圍屬性
在JSP頁(yè)面中的對(duì)象,包括用戶(hù)創(chuàng)建的對(duì)象(例如,JavaBean對(duì)象)和JSP的隱含對(duì)象,都有一個(gè)范圍屬性。
范圍定義了在什么時(shí)間內(nèi),在哪一個(gè)JSP頁(yè)面中可以訪(fǎng)問(wèn)這些對(duì)象。
例如,session對(duì)象在會(huì)話(huà)期間內(nèi),可以在多個(gè)頁(yè)面中被訪(fǎng)問(wèn)。application對(duì)象在整個(gè)Web應(yīng)用程序的生命周期中都可以被訪(fǎng)問(wèn)。
在JSP中,有4種范圍,如下所示。
page范圍
具有page范圍的對(duì)象被綁定到j(luò)avax.servlet.jsp.PageContext對(duì)象中。在這個(gè)范圍內(nèi)的對(duì)象,只能在創(chuàng)建對(duì)象的頁(yè)面中訪(fǎng)問(wèn)。可以調(diào)用pageContext這個(gè)隱含對(duì)象的getAttribute()方法來(lái)訪(fǎng)問(wèn)具有這種范圍類(lèi)型的對(duì)象(pageContext對(duì)象還提供了訪(fǎng)問(wèn)其他范圍對(duì)象的getAttribute方法),pageContext對(duì)象本身也屬于page范圍。當(dāng)Servlet類(lèi)的_jspService()方法執(zhí)行完畢,屬于page范圍的對(duì)象的引用將被丟棄。page范圍內(nèi)的對(duì)象,在客戶(hù)端每次請(qǐng)求JSP頁(yè)面時(shí)創(chuàng)建,在頁(yè)面向客戶(hù)端發(fā)送回響應(yīng)或請(qǐng)求被轉(zhuǎn)發(fā)(forward)到其他的資源后被刪除。
request范圍
具有request范圍的對(duì)象被綁定到j(luò)avax.servlet.ServletRequest對(duì)象中,可以調(diào)用request這個(gè)隱含對(duì)象的getAttribute()方法來(lái)訪(fǎng)問(wèn)具有這種范圍類(lèi)型的對(duì)象。在調(diào)用forward()方法轉(zhuǎn)向的頁(yè)面或者調(diào)用include()方法包含的頁(yè)面中,都可以訪(fǎng)問(wèn)這個(gè)范圍內(nèi)的對(duì)象。要注意的是,因?yàn)檎?qǐng)求對(duì)象對(duì)于每一個(gè)客戶(hù)請(qǐng)求都是不同的,所以對(duì)于每一個(gè)新的請(qǐng)求,都要重新創(chuàng)建和刪除這個(gè)范圍內(nèi)的對(duì)象。
session范圍
具有session范圍的對(duì)象被綁定到j(luò)avax.servlet.http.HttpSession對(duì)象中,可以調(diào)用session這個(gè)隱含對(duì)象的getAttribute()方法來(lái)訪(fǎng)問(wèn)具有這種范圍類(lèi)型的對(duì)象。JSP容器為每一次會(huì)話(huà),創(chuàng)建一個(gè)HttpSession對(duì)象,在會(huì)話(huà)期間,可以訪(fǎng)問(wèn)session范圍內(nèi)的對(duì)象。
application范圍
具有application范圍的對(duì)象被綁定到j(luò)avax.servlet.ServletContext中,可以調(diào)用application這個(gè)隱含對(duì)象的getAttribute()方法來(lái)訪(fǎng)問(wèn)具有這種范圍類(lèi)型的對(duì)象。在Web應(yīng)用程序運(yùn)行期間,所有的頁(yè)面都可以訪(fǎng)問(wèn)在這個(gè)范圍內(nèi)的對(duì)象。
posted on 2008-04-13 13:03 做強(qiáng)大的自己 閱讀(209) 評(píng)論(1) 編輯 收藏