2012-08-31 19 views
0

我是Java編程的新手,我試圖用JNDI實現方法開發一個帶有Struts2,JSP和jQuery的Web應用程序,並通過手動JDBC連接到PLSQL。Struts2 SessionAware&ServletRequestAware

我想了解如何在Struts 2中實現會話管理。我看到一些例子,其中Action類實現了SessionAware攔截器,如this和另一個example,其中實現了ServletRequestAware攔截器。

有人可以向我解釋使用哪種方法。這兩者之間的區別是什麼,你會使用哪些,爲什麼?我的要求很簡單。我有一個完全基於登錄的Web應用程序。因爲只有登錄頁面是公開的,而且全部都在用戶身份驗證之下。有2個用戶角色 - 管理員和常規。基於登錄角色,它們被定向到僅爲管理員的第1,2頁或只是通用的第3,4頁。我如何在Struts2中使用會話管理概念來實現這一點?

謝謝!

回答

0

SessionAware給你一個會話屬性映射。

ServletRequestAware給你一個HttpServletRequest

有點像他們的名字暗示。通過閱讀文檔瞭解差異。

有許多方法可以實現登錄/ etc。在S2中,您可以通過在登錄過程中將用戶對象放入會話中並在註銷期間將其刪除並擁有攔截器來檢查會話中是否存在有效的用戶對象,從而扮演自己的角色。

您可以使用Spring Security並保存一些關於角色等的工作,儘管說實話,如果您不使用Spring,那麼編寫一些非常簡單的註釋並讓攔截器處理這些註釋幾乎是一件容易的事情。

+0

因此,我使用ServletRequestAware進行大部分數據庫操作和SessionAware來維護我的用戶日誌信息和其他我想通過「用戶會話與Web應用程序」保持的事情。 **你可以給我一個例子,說明如何使用你提到的方法實現登錄,攔截器和將用戶對象添加到會話中。** – rr87

+0

@ rr87這是一個問題嗎?你幾乎不需要*需要ServletRequestAware,它將你的行爲與servlet規範聯繫起來,使得幾乎所有的事情都不必要的刺激。我不知道什麼是HttpServletRequest與數據庫操作。 –

+0

嗯,這是一個基於這裏的另一個問題的答案的假設[鏈接](http://stackoverflow.com/questions/4640721/servlets-setattribute-in-httpservletrequest-vs-setattribute-in-httpsession) – rr87