用浏览器手动删除cookie后的请求

时间:2013-11-12 20:13:40

标签: java java-ee servlets

今天我尝试了这个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);

如果

,如何删除用户(以避免重复)
  • A)没有Cookie ,因为它们已被手动删除
  • B)和session.getAttribute("id");抛出NPE?

由于

1 个答案:

答案 0 :(得分:0)

Servlet环境使用URL重写或Cookie来跟踪用户会话(这是HTTP的事情)。如果您删除浏览器上的cookie,您(必须)最终会丢失用户浏览器和Web应用程序之间的所有连接。

如果您想记住用户,则需要使用Cookie。您获得的NPE只是cookie缺失的反映(以及程序中缺少的位)。

因此,你应该检查cookie和/或会话是否存在(验证NPE),如果你找不到任何一个,那么你将无法跟踪你的用户(并且应该将他重定向到你的登录页面 - 如果适用的话。)