java 获取session为空_为什么在JAVA中session.invalidate()之后会话不为空?

调用session.invalidate()会从注册表中删除该会话.之后调用getSession(false)将返回null(请注意,在这种情况下,getSession()或getSession(true)将创建一个新会话).调用invalidate()还将删除绑定到会话的所有会话属性.但是,如果您的代码仍然具有对会话或其任何属性的引用,那么这些仍然可以访问:

// create session if none exists (default) and obtain reference

HttpSession session = request.getSession();

// add a session attribute

session.setAttribute("lollypop", "it's my party");

// obtain reference to session attribute

Object lollypop = session.getAttribute("lollypop");

// print session ID and attribute

System.out.println(session.getId());

System.out.println(lollypop);

session.invalidate();

// session invalidated but reference to it still exists

if (session == null) {

System.out.println("This will never happen!");

}

// print ID and attribute from invalidated session (will be same as before)

System.out.println(session.getId());

System.out.println(lollypop);

// print 'null' (create=false makes sure no new session is created)

System.out.println(request.getSession(false));

输出示例:

1k47acjdelzeinpcbtczf2o9t

it's my party

1k47acjdelzeinpcbtczf2o9t

it's my party

null

到目前为止的解释.要解决您的问题,您应该:

HttpSession existingSession = request.getSession(false);

if (existingSession != null && existingSession.getAttribute("loginToken") != null){

//do something

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值