您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關J2ee中struts結構不能解決的問題有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
第一:用戶重復登錄的問題
關于這個問題我考慮了兩種解決方法:
1:可以使用session來實現,具體的實現可能要用到session的監聽listener,我想這樣是可以實現的(參考所有的偵聽事件都必須在session的監聽這篇文章),我們可以把所有登錄的用戶名保存在一個ArrayList中,這樣可以在用戶登錄的時候,先判斷ArrayList中是否存在此用戶名,if 存在則說明已經登錄,else 則還沒有登錄,把用戶名存在ArrayList中,按照這樣的思路,似乎可以解決重復登錄,但是還存在一個問題,那就是如果用戶登錄后非正常退出即session沒有銷毀那么用戶在session-timeout(系統銷毀session的時間)的時間內是不能登錄的,可參考session祥解,session祥解中提到session銷毀需要調用HttpSession.invalidate();或者是距離上一次收到客戶端發送的session id時間間隔超過了session的超時設置,在瀏覽器關閉時是不能刪除session的,從這個角度我們考慮,如果用戶關閉瀏覽器后,session還是存在的,即使用戶沒有登錄,那么用戶就要等待很長一段時間才能登錄;如何解決這個問題?
2:可以采用數據庫臨時表的方式來解決,但是此方法需要保持數據庫連接的事務會話長期存在,因為臨時表是在事務會話結束的時候銷毀的,采用struts的mvc結構如何保持一個會話或事務在用戶操作系統期間不銷毀?數據庫事務會話的建里是不是在連接數據庫的時候建里?是不是只要保持數據庫的連接就可以?
第二:數據的修改問題
在我們的系統中數據的修改是先查找到一筆記錄,然后在jsp中顯示出來,修改后再提交,可是這樣不能避免多個人同時在修改這條數據;我們可以使用行鎖的辦法來鎖定這條記錄,即select for update的方式來鎖定這條記錄,可是前提是要把提取數據和修改數據作為同一個事務來處理,但是在struts結構里面現在采用的是把提取數據和修改數據獨立開來了,如何可以做到把提取數據和修改數據作為同一個事務??是不是和臨時表一樣保持一個連接不斷開就可以啦?應該如何做?
感謝各位的閱讀!關于“J2ee中struts結構不能解決的問題有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。