java.lang.NullPointerException异常处理方法

博主在商城项目用户登录勾选“记住我”时,servlet层将用户名存于cookie并回显数据,却一直报空指针异常。经debug发现是判断条件写错,问题由equals方法导致,修改后异常解决,博主也了解了两种写法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在做一个商城项目的时候,下部分代码是在用户登录的时候,勾选记住我的时候,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实例对象的方法,所以会出现空指针异常。

我先把这部分全部代码贴过来

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值