亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我一個退出登錄頁面都會報越界的?

為什么我一個退出登錄頁面都會報越界的?

一只名叫tom的貓 2022-06-01 19:07:26
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub// 步驟1:通過session獲取登錄的賬號HttpSession session = request.getSession();Student student = (Student) session.getAttribute("student");// 步驟2:銷毀sessionsession.invalidate();// 步驟3:從在線列表中移除當前登錄賬號@SuppressWarnings("unchecked")List<Integer> sidOnLineList = (List<Integer>) this.getServletContext().getAttribute("sidOnLineList");sidOnLineList.remove(student.getSid()); // 移除this.getServletContext().setAttribute("sidOnLineList",sidOnLineList); // 刷新在線列表// 步驟4:頁面跳轉response.sendRedirect("jsp/login.jsp");}}。
查看完整描述

4 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

你的代碼有三個問題:
1,數組越界問題 ,sidOnLineList.remove(student.getSid()); // 移除
這個E remove(int index);是位置,還不是學生的號碼,這直接導至這個異常。
2,多線程并發問題,List<Integer> sidOnLineList 這列表如果選用非線程安全實現,那當多個用戶并發登錄注消就會有問題 。如果選用線程安全實現,則性能會有問題 。推薦使用ConcurrentHashMap。
3,內容泄漏問題,如果用戶不是主動退出(如超時或直接關掉瀏覽器),則會有內存溢出問題 。所以隊列需要有超時或先進先出機制。

查看完整回答
反對 回復 2022-06-06
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

是因為存在數據,而今天沒有數據了,你的數組length為0,而你還在取array[0],當然就數組下標越界了。

(1)看到上述報錯的第一反應是,越界了。List.size()為0,但卻引用了index為0的值,并且此時List不為空。

(2)那什么情況下會出現List不為null,但是List.size() == 0呢?下面給出示例:

List list = new ArrayList();

此時list被創建,即list不為null,但是還沒有被賦值,則list.size() == 0。

所以在使用List時應當同時判斷(list != null && list.size() > 0)。

(3)此種問題的解決方案:在使用list.get(0 ...... N)進行取值前對list和list.size()進行判斷。


查看完整回答
反對 回復 2022-06-06
?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

索引越界了吧
比如String[] a=new String[5]; 你調用了String[10]
List list=new Arraylist();
list.add("123");
list.get(10)
又或者String a="abc"; 你調用了a.substring(0,10)
就是這些問題唄


查看完整回答
反對 回復 2022-06-06
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

sidOnLineList.remove(student.getSid()); // 移除 你看一下 sidOnLineList 這個List 里面有沒有東西,然后看一下student.getSid() 這個出的的什么? 要不不好判斷

查看完整回答
反對 回復 2022-06-06
  • 4 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號