gpt4 book ai didi

java - 为什么在 jsp 中使用 if 语句会出现此错误?

转载 作者:行者123 更新时间:2023-12-02 03:20:15 25 4
gpt4 key购买 nike

这是我的 LoginServlet 类的代码。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String userName = request.getParameter("username");
String password = request.getParameter("password");

boolean loginFailed;

User user = null;

user = loginService.getUser(userName);

if(user != null && user.getPassword().equals(password)){

userType = loginService.getUserType(user).getUser_type();

if(userType.equals(USER_TYPE_CUSTOMER)){
HttpSession session = request.getSession();
session.setAttribute("username", user.getUsername());
response.sendRedirect("home_customer.jsp");
}else{

}
}else{
loginFailed = true;

request.setAttribute("username", userName);
request.setAttribute("loginFailed", loginFailed);
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/login.jsp");
dispatcher.forward(request, response);
}
}

我有一个名为loginFailed的 boolean 值。当用户没有帐户时,它将被赋予 true 值。我在 jsp 页面中编写了一段代码来检查这个变量。这是我的 jsp 代码。

<body>
<div class="container container-table" id="login">
<div class="row vertical-center-row">
<div class="col-md-4 col-md-offset-4">
<div style="background-color: #297f56; padding: 15px; border-radius: 5%;">
<h1 style="text-align: center; color: white;">JJ STORE</h1>
<% Boolean loginFailed = (Boolean) request.getAttribute("loginFailed");
if(loginFailed){
out.println("<div class='alert alert-warning'>Warning! Dont submit this.</div>");
}%>
<form action="processLogin" method="post">
<div class="form-group" >
<label for="email" style="color: white;">Username:</label>
<input type="text" class="form-control" name="username" value="${username}">
</div>
<div class="form-group">
<label for="pwd" style="color: white;">Password:</label>
<input type="password" class="form-control" name="password">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
</div>
</div>

我不确定这里出了什么问题。我尝试通过输入“true”来更改 if block 中的条件,并且代码顺利进行。但是,如果我输入从 servlet 获得的 boolean 值,则会出现此错误。

enter image description here

我做错了什么?

最佳答案

您仅在失败时设置loginFailed。当成功时,您不会设置该属性,因此您会在 JSP 中获得 null 值,从而在调用 if(loginFailed) 时导致 NullPointerException

解决该问题的一种方法是在不拆箱的情况下测试 Boolean 对象:

if (Boolean.TRUE.equals(loginFailed))

另一个选项是确保设置该属性,无论成功还是失败:

if (user != null && user.getPassword().equals(password)) {
//...
loginFailed = false;
} else {
//...
loginFailed = true;
}
request.setAttribute("loginFailed", loginFailed);

关于java - 为什么在 jsp 中使用 if 语句会出现此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39715872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com