2011-11-16 83 views
0

控制Java EE項目中的範圍的方法是什麼?我正在閱讀有關會話,請求,應用程序範圍以及某些bean應該被限制在一個或另一個的限制。這通常如何完成?它是由什麼類型的項目創建的,特殊的註釋或其他方法?根據我的經驗,我注意到,除了相同的包之外,我的bean,servlet或DAO都無法訪問對方,除非我注入或導入相關的類。Java EE項目中的控制範圍

回答

1

我認爲你是混合的東西。列出的作用域用於JSF支持bean,通常與HTTP會話或請求相關。在這種情況下,EJB-s沒有範圍。要使用它們,必須使用DI註釋(或通過JNDI上下文查找)注入它們。

+0

在使用數據庫和實體,EJB和servlets/jsp實現了MVC形式後,我開始學習JSF。我正努力在這個模型中融入JSF。 – Randnum

+0

它們不適合JSF模型,至少不夠緊密。 JSF組件可以使用EJB組件,但在關係的兩端都是可選的。基本上JSF只是具有生命週期模型,依賴注入和一些新標籤的JSP ......你應該瞭解的是依賴注入是如何工作的,因爲它連接了這兩種獨立的技術。 – zeller

+0

你的意思是像@EJB MyEJB myejb; ? – Randnum

1

範圍是指變量的壽命和可用時間。在Java Web應用程序中,有四個範圍:頁面,請求,會話和應用程序。對於具有Page範圍的變量/對象,它們僅存在於JSP頁面中。默認情況下,在JSP中創建的任何對象或變量都具有Page範圍。

只要請求有效,請求範圍變量/對象即可生效 - 請記住請求可能跨越多個JSP/Servlet。

會話作用域對象存在並且可以在會話持續期間通過所有請求,JSP和Servlet訪問。 '會話'通常是用戶在登錄會話期間查看的所有頁面。

應用程序作用域對象和變量是全局範圍的,並且只要應用程序正在運行即可。他們可以從所有的請求,JSP,Servlets等訪問。

0

您正在將EE範圍與class/package/etc混淆。範圍。

通過將對象放置到您提到的其中一個示波器中,可以將對象暴露給JSP頁面(或其他視圖層技術)。它與Java程序包/類的可見性無關,但該對象是否可用於整個application,當前用戶的session,當前request或當前page

應用程序範圍在應用程序期間持續存在。會話範圍特定於特定用戶與應用程序的「對話」 - 這就是爲什麼我們需要會話cookie或URL重寫(jsessionid的事)。請求範圍持續用戶特定請求的持續時間,也是特定用戶特有的。頁面範圍...說實話,我不知道它的使用頻率。