1. 程式人生 > >javaee中web的四大容器簡介

javaee中web的四大容器簡介

在Servlet中,存在四種容器:

(1)page-pageContext

(2)request-HttpRequest

(3)session-HttpSession

(4)application-ServletContext

1.首先我們簡單介紹第一個容器:pageContext

每一個容器都存在著不同的範圍,顧名思義,pageContext的範圍作用域是整個頁面。pageContext物件存在兩個常用的方法:setAddribute()和getAddribute()方法。

其中第一個方法是將以個物件值存放到pageContext中。第二個方法是從pageContext中取出對應key的值。下面我們舉個例子來說明:

在JSP頁面中通過setAddribute方法在pageContext中設定一個值,然後在該頁面中通過getAddribute方法獲取剛才設定的值,這時在該頁面輸出時是可以取到值的。

我們重新再新建一個JSP頁面,在此頁面中同樣適用getgetAddribute方法來根據key獲取在第一個JSP中設定的屬性值,得到的結果是獲取不到的。

結論:pageContext的作用域範圍只是在整個頁面內有效。

2.request

request代表了一次客戶端對伺服器的請求,該物件同樣有setAddribute()和getAddribute()方法來從request中設定和獲取值。request的作用域是在請求發出和請求結束之間存在。

即簡單的可以理解為:當客戶端向伺服器發出請求後,將引數設定到了request中,當重定向到另外的JSP頁面或發出了新的請求後該引數將會隨著request的結束而消失。

3.session

session是一個很好的容器,好多地方都會用到session來管理資料,上次我寫的一篇文章就是基於session來實現簡單的購物車,原理大家看過後肯能都會明白:在此附加下該連結:http://blog.csdn.net/u013718120/article/details/41759759。好多人有時候覺得session很好用,就開始濫用session來儲存資料,結果當一個專案的規模逐漸增大時,就會分不清楚儲存了哪些資料。並且session代表了一次使用者會話,一般在瀏覽器開啟時,session就會建立。當用戶訪問量相對較大時,效率的問題就變的相當不客觀了。session的作用域即代表了一次使用者會話,當瀏覽器開啟時session建立,不要認為瀏覽器關閉時session就會消失。這是很多人都會誤解的一個問題。session是受伺服器Cookie來管理的,我在我的關於session的介紹一篇文章中有所提及,此處就不再多說。好多人感覺session在瀏覽器關閉再開啟時就訪問不到資料了,就覺得是瀏覽器關閉時session就結束了,其實不然。出現這種假象的原因就是session的生存時間,預設可能就是和瀏覽器的一次使用者會話時間是相同的,但是資料的消失並不代表了session立即消亡。

4.application

application是代表了整個web。即作用域佔據了整個web應用。

application為幾個頁面共享資料提供了可能。如果有幾個頁面想同時共享資料,可以將該屬性值存放到application中。

舉例說明:在web.xml中我們可以使用<context-param>來設定一個全域性上下文的引數,在JSP頁面中我們可以利用application.getAddribute()來獲取該引數的值,不會區分在哪個頁面來訪問該引數,即該應用中每個頁面都可以訪問該引數。