今天,我尝试了这种代码...登录后,用FF浏览器删除了所有cookie,然后刷新了网页,得到了NPE:P,所以我一直在想是否有一种简单的“恢复”方法或其他方法会话,如果在客户端上手动删除了cookie或在这种情况下最最佳的方法是什么,特别是如果servlet上下文范围中仍然有一些数据(与会话属性有关)?
例如,如果我在会话中有一些ID
session.setAttribute("id","hello world");
...而且我的代码像
String userID=null;
Cookie []cookies=req.getCookies();
for(Cookie cookie:cookies)
{
if(cookie.getName().equals("id")){userID=cookie.getValue();}
}
String id=session.getAttribute("id");
User user=((MyUsers)context.getAttribute("Users")).getUser(id);
我如何删除用户(以避免重复),如果
session.getAttribute("id");
抛出NPE?谢谢
Servlet环境使用URL重写或Cookies来跟踪用户会话(这是HTTP内容)。如果删除浏览器上的cookie,您(很可能)最终将失去用户浏览器与Web应用程序之间的所有连接。
如果您想记住用户,则需要Cookie。您得到的NPE只是缺少cookie(以及程序中缺少位)的反映。
因此,您应该检查cookie和/或会话是否存在(验证NPE),如果找不到它们,则将无法跟踪用户(并且应将其重定向到登录页面-如果它适用)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句