溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

J2ee中struts結(jié)構(gòu)不能解決的問題有哪些

發(fā)布時間:2021-12-03 09:30:38 來源:億速云 閱讀:100 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)J2ee中struts結(jié)構(gòu)不能解決的問題有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

第一:用戶重復(fù)登錄的問題

關(guān)于這個問題我考慮了兩種解決方法:

1:可以使用session來實(shí)現(xiàn),具體的實(shí)現(xiàn)可能要用到session的監(jiān)聽listener,我想這樣是可以實(shí)現(xiàn)的(參考所有的偵聽事件都必須在session的監(jiān)聽這篇文章),我們可以把所有登錄的用戶名保存在一個ArrayList中,這樣可以在用戶登錄的時候,先判斷ArrayList中是否存在此用戶名,if 存在則說明已經(jīng)登錄,else 則還沒有登錄,把用戶名存在ArrayList中,按照這樣的思路,似乎可以解決重復(fù)登錄,但是還存在一個問題,那就是如果用戶登錄后非正常退出即session沒有銷毀那么用戶在session-timeout(系統(tǒng)銷毀session的時間)的時間內(nèi)是不能登錄的,可參考session祥解,session祥解中提到session銷毀需要調(diào)用HttpSession.invalidate();或者是距離上一次收到客戶端發(fā)送的session id時間間隔超過了session的超時設(shè)置,在瀏覽器關(guān)閉時是不能刪除session的,從這個角度我們考慮,如果用戶關(guān)閉瀏覽器后,session還是存在的,即使用戶沒有登錄,那么用戶就要等待很長一段時間才能登錄;如何解決這個問題?

2:可以采用數(shù)據(jù)庫臨時表的方式來解決,但是此方法需要保持?jǐn)?shù)據(jù)庫連接的事務(wù)會話長期存在,因?yàn)榕R時表是在事務(wù)會話結(jié)束的時候銷毀的,采用struts的mvc結(jié)構(gòu)如何保持一個會話或事務(wù)在用戶操作系統(tǒng)期間不銷毀?數(shù)據(jù)庫事務(wù)會話的建里是不是在連接數(shù)據(jù)庫的時候建里?是不是只要保持?jǐn)?shù)據(jù)庫的連接就可以?

第二:數(shù)據(jù)的修改問題

在我們的系統(tǒng)中數(shù)據(jù)的修改是先查找到一筆記錄,然后在jsp中顯示出來,修改后再提交,可是這樣不能避免多個人同時在修改這條數(shù)據(jù);我們可以使用行鎖的辦法來鎖定這條記錄,即select for update的方式來鎖定這條記錄,可是前提是要把提取數(shù)據(jù)和修改數(shù)據(jù)作為同一個事務(wù)來處理,但是在struts結(jié)構(gòu)里面現(xiàn)在采用的是把提取數(shù)據(jù)和修改數(shù)據(jù)獨(dú)立開來了,如何可以做到把提取數(shù)據(jù)和修改數(shù)據(jù)作為同一個事務(wù)??是不是和臨時表一樣保持一個連接不斷開就可以啦?應(yīng)該如何做?

感謝各位的閱讀!關(guān)于“J2ee中struts結(jié)構(gòu)不能解決的問題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI