0

这可能是一个非常愚蠢的问题,我试图弄清楚为什么我得到一个空异常,请帮忙。

String username = (String)session.getAttribute("username");

if (!username.equals("ADMIN")) {
   request.setAttribute("Error", "You are not the admin");
   RequestDispatcher rd = request.getRequestDispatcher("LoginPage.jsp");
   rd.forward(request,response);
}

我试图让 jsp 检查用户名是否等于“ADMIN”,如果它不等于 admin,那么它将给出一个错误,然后请求登录页面。

但我得到一个空指针异常的行:

if (!username.equals("ADMIN")) {

谢谢

4

2 回答 2

2

那是因为username为空

最佳做法是说if (!"ADMIN".equals(username))

由于常量字符串“ADMIN”是一个非空值,调用equals()它不会导致任何错误并且是安全的

或者在比较之前做一个空检查username

if (username != null && !username.equals("ADMIN"))
于 2013-04-28T13:51:02.333 回答
0

看起来username是空的,即没有存储在会话中。如果使用 Eclipse 之类的 IDE,您可以在其中设置一个断点,将鼠标悬停在该术语上,然后查看什么是 null。

于 2013-04-28T13:51:30.560 回答