Author: Muscle 2021-01-02 11:09:25 Session成功销毁,但检测结果为false

毕业设计的程序开发过程中,当退出管理员的时候,后台销毁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;
}
返回顶部