2011-06-06 36 views
-1

我希望能夠重用我現有的控制器邏輯,而不管是否已經從Flex客戶端發送請求(在後端使用BlazeDS + Spring),或者作爲簡單的HTTP POST/GET請求。對於簡單的情況,事情工作正常,但是,有時我需要訪問某些會話屬性。起初,我幾乎完全使用FlexContext類,但後來我意識到,當發送HTTP請求時,Flex上下文顯然是未定義的。重用客戶端會話提取邏輯

我的問題是,無論請求的類型如何,抽象會話提取邏輯的最佳方法是什麼。換句話說,我將創建一個名爲SessionManager的類,該類具有getSession方法。該類將檢查是否存在Flex上下文,如果有,它將返回該上下文的會話。如果沒有,它會簡單地返回當前的HTTP會話(我認爲它與Flex客戶端會話相同,但我不確定)

有何意見?

+0

通過會話屬性,我的意思是一些數據,我存儲在會話,而我只需要訪問服務器端 - 爲了必要時進行一些檢查。至於費率,我真的想保持它,但爲了實現這一點,我需要得到一些體面的答案,你知道如果你有以前的問題的「更好」的答案比在這個網站上提供的答案,你知道的 – xantrus 2011-06-06 13:24:57

+3

。你應該自己回答他們,並將他們標記爲「已回答」。這就是說,我認爲你沒有回答我的問題。 「會話屬性是指存儲在會話中的數據。」你在談論服務器會話嗎?或者客戶端變量? – JeffryHouser 2011-06-06 13:50:21

回答

2

不知道我是否理解你的問題的權利。當Flex客戶端訪問服務器時,您是否嘗試從FlexSession讀取數據,如果使用非Flex客戶端,您是否嘗試從HttpSession讀取數據?如果是這樣,也許你可以嘗試這樣的事情...我目前沒有安裝程序來測試它,所以如果它不起作用,或者如果這不是你所問的,那麼很抱歉。

String attributeValue = null; 
FlexSession fSession = FlexContext.getFlexSession(); 
if (fSession != null) 
{ 
    attributeValue = (String)fSession.getAttribute(attributeKey); 
} 
else // No flex session 
{ 
    HttpSession hSession = request.getSession(); 
     // Where request is the HttpServletRequest 
    attributeValue = (String)hSession.getAttribute(attributeKey); 
} 
+0

類似的東西 – xantrus 2011-06-06 20:51:26

+0

好的,謝謝!如果這回答你的問題,你能把它標記爲正確答案嗎?謝謝 – Sai 2011-06-06 20:59:12

+0

剩下的唯一問題是如果我發出Flex請求,我會從哪裏獲取請求對象? – xantrus 2011-06-06 21:08:22