2012-05-16 51 views
0

我正在使用struts 1(在傳統項目上執行維護任務)。該應用程序分層在ActionClasses調用管理器類和管理器類實例化和使用DAO層類我必須編寫條件邏輯,其中基於會話變量,我希望DAO層在不同的DB2模式之間切換。Struts 1:我如何在DAO層獲取會話變量

如何閱讀DAO java類中的會話? 一個顯而易見的方法是重構經理/ DAO類構造函數都是通過在Struts 2調用鏈

沿着會話變量傳遞,我們使用ActionContext.getContext().getSession();

有類似的東西,我可以在支柱1嗎?

---編輯所有的純粹主義者(包括我)-------------

我工作的這個代碼庫,用於原型更新的業務邏輯。這是一個繼承的代碼,在2003 - 2004年寫回。在原型設計之後,這些代碼將不會被直接用於回收站。

我知道DAO不需要訪問HTTP會話,這就是我在編寫代碼時所遵循的。

但我的問題是,是否有訪問會話中DAO在struts框架1(過濾器/黑客?)

+1

爲什麼你不只是傳遞一個你需要的值的變量? –

+1

DAO層不應該訪問上下文信息,例如HTTP會話,因爲Paul評論說它應該是一個很好的選擇,可以將此值作爲參數傳遞給您的dao方法 –

+0

我現在正在傳遞變量,但有100多個類需要重構。這就是爲什麼我發佈了這個問題,如果有辦法在DAO中獲取會話,那樣我可以限制對DAO的更改,而不是重構鏈中的所有類。 – Satish

回答

1

最簡單的方法是在本地創建一個線程,也許將其設置在過濾器或簡單定製的請求處理器中,通過靜態方法訪問。我覺得很骯髒。

0

你不這樣做的一種方式。你將在未來面臨巨大的麻煩。相反,通過調用鏈傳遞值。

+0

編輯上面的問題,在我的原型後,沒有未來,代碼直接回收站。有一個更好的「Spring」版本已經在開發中。 – Satish

+0

好的。我已經聽過這麼多次了,反正我總是以正確的方式去做。讓我心痛。 ymmv –

+0

+1「好的,我已經聽過這麼多次了,反正我總是這樣做」 –

相關問題