2013-04-01 19 views
1

我有一個正在運行的JSF2應用程序,現在想添加請求記錄功能。爲jsf頁面請求記錄IP地址

日誌記錄將被保存到數據庫,並由標準用戶/頁面/ IP三重組與其他生成的內容組成。

現在在託管bean中@PostConstruct註釋的方法中調用dao方法,但這看起來像代碼重複。

@PostConstruct 
public void init() { 
    loggingDao.save(user,page,ip); 
} 

如何使用託管bean在jsf端集中記錄/審計進程?由於這是一個橫切的場景,我不想將此代碼添加到每個託管bean。

編輯 這個問題有很多意見,這意味着它沒有以正確的方式問。

最後一次機會:我需要在我的網站上登錄/觀看用戶交互,可以是登錄操作,也可以是點擊按鈕以列出項目(映射到支持bean方法)或頁面導航/重定向。

我還假設我可以使用這個相同的體系結構來決定用戶是否擁有網站上特定操作的權限,但這是另一個故事,因爲它的結果會有所不同。

+1

那麼你的問題到底是什麼?我不明白你的問題是什麼。 – chkal

+0

我也沒有。我會在託管bean的操作方法中登錄並註銷HTTP會話偵聽器。 Servlet過濾器是處理該問題的錯誤方法,因爲不應對每個請求都進行審計。 – skuntsel

+0

@chkal編輯了這個問題,省略了servlet過濾器部分 –

回答

0

您可以爲此使用servlet篩選器或JSF階段偵聽器。如果要記錄每個請求(包括CSS和JavaScript資源),請使用過濾器。如果您只是對JSF請求感興趣,則可以使用階段偵聽器。只需勾選「恢復視圖」階段並記錄任何你想要的內容。

+0

看看http://stackoverflow.com/a/9844616/305142(最後一段),我明白,如果我使用dao方法,postconstruct是首選方式。你對此有何看法? –