Java jsp和.equals与.trim()空指针异常

Java jsp和.equals与.trim()空指针异常,java,jsp,Java,Jsp,这可能是一个相当愚蠢的问题,我正在试图弄清楚为什么我会得到一个空异常,请帮助 String username = (String)session.getAttribute("username"); if (!username.equals("ADMIN")) { request.setAttribute("Error", "You are not the admin"); RequestDispatcher rd = request.getRequestDispatcher("Lo

这可能是一个相当愚蠢的问题,我正在试图弄清楚为什么我会得到一个空异常,请帮助

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")) {

谢谢

那是因为
用户名
为空

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

由于常量字符串“ADMIN”是非空值,因此对其调用
equals()
不会导致任何错误,而且是安全的

或者在比较之前,对
用户名
执行空检查:

if (username != null && !username.equals("ADMIN"))

看起来
username
为空,即未存储在会话中。如果使用像Eclipse这样的IDE,您可以在中放置断点,用鼠标悬停在术语上,然后查看空值。

看起来您在会话中没有名为
用户名的属性。可能您将会话属性与请求参数混淆了。