今天我尝试了这个kind of code ...登录后我用FF浏览器删除了所有的cookie,然后我刷新了网页,我得到了NPE:P 所以我一直在想如果有一个简单的方法来“恢复”或任何会话,如果在客户端上手动删除cookie或者在这种情况下最优化的方式是什么,特别是如果有一些数据(与session属性相关的)仍然在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?由于
答案 0 :(得分:0)
Servlet环境使用URL重写或Cookie来跟踪用户会话(这是HTTP的事情)。如果您删除浏览器上的cookie,您(必须)最终会丢失用户浏览器和Web应用程序之间的所有连接。
如果您想记住用户,则需要使用Cookie。您获得的NPE只是cookie缺失的反映(以及程序中缺少的位)。
因此,你应该检查cookie和/或会话是否存在(验证NPE),如果你找不到任何一个,那么你将无法跟踪你的用户(并且应该将他重定向到你的登录页面 - 如果适用的话。)