我在做一个商城项目的时候,下部分代码是在用户登录的时候,勾选记住我的时候,servlet层所要做的是将用户名保存在cookie中,然后将cookie返回给浏览器,页面回显cookie中的数据。
String rememberme = request.getParameter("rememberme");
if("ok".equals(rememberme)){
Cookie remembermeCookie = new Cookie("remembermeCookie", existUser.getUsername());
remembermeCookie.setPath("/");
remembermeCookie.setMaxAge(60*60*24*7);
response.addCookie(remembermeCookie);
}else {
Cookie remembermeCookie = new Cookie("remembermeCookie", "");
remembermeCookie.setPath("/");
remembermeCookie.setMaxAge(0);
response.addCookie(remembermeCookie);
}
但是我一直进行登陆的时候,总是报出了空指针异常,最后debug发现原来是判断条件写错了。
原本我写的是如下
if(rememberme.equals("ok")){
...
}
但是之后我改为这样
if("ok".equals(rememberme)){
...
}
就好了,不会报空指针异常,经历了这次错误,我知道了这两种写法的区别。
这种空指针异常的出现是因为equals方法导致的。
例如
rememberme.equals("ok")
rememberme可能出现null值,用null调用equals方法当然是不可行的,因为这是String实例对象的方法,所以会出现空指针异常。
我先把这部分全部代码贴过来