毕业设计的程序开发过程中,当退出管理员的时候,后台销毁Session,销毁成功但是返回的内容确实false,只是因为没有设置这个!
功能描述
在设计开发的过程中,在销毁Session后,检测Session是否成功销毁,是则返回true,否则返回false
问题描述
在检测Session销毁的过程中,发现程序执行过程中,Session被正常销毁,但是返回值是false
再次执行程序,才返回true
错误代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @Override public Boolean deleteSession(HttpServletResponse httpServletResponse, HttpServletRequest httpServletRequest) throws IOException { HttpSession httpSession = httpServletRequest.getSession(false); System.out.println(httpSession); if(httpSession != null){ System.out.println(httpSession + "正在被销毁"); httpSession.removeAttribute("username"); httpSession.invalidate(); } if(httpSession == null){ System.out.println("销毁成功"); return true; } return false; }
|
原因分析
在上述代码中,httpSession被成功销毁之后,并不是直接将httpSession的内容设置为null,这个对象不会随着Session.invalidate()而消失。
解决方法
在检测之前,重新给httpSession赋值,然后判断它的内容
1 2 3 4 5 6 7
| httpSession = httpServletRequest.getSession(false);
if(httpSession == null){ System.out.println("销毁成功"); return true; }
|