Я совершенно новичок в JSP и создаю простую форму и проверяю ее через JSP. Вот мой код: -
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<%@page import="java.io.* , java.sql.* , java.util.* , javax.servlet.*" %>
<body>
<h1>Login Page by JSP</h1>
<hr>
<form method="post" action="index_jsp">
Enter name : <input type="text" name="user">
Enter password : <input type="password" name="pass">
<input type="submit" value="login">
</form>
<%
String user = request.getParameter("user");
String pass = request.getParameter("pass");
if(user.equals("admin") && pass.equals("admin"))
{
response.sendRedirect("wel.html");
}
%>
<br>
<a href="new.jsp">Click here !</a>
</body>
</html>
Но каждый раз, когда я запускаю его, я получаю исключение NullPointerException. Что я делаю не так? Немедленная помощь будет оценена!
Благодарю!
Сначала совет, поскольку вы новичок в JSP: не пишите сценарий сценария. Это все вещи между <%
и %>
. Это старинная технология 1998 года, которая должна быть обескуражена. Изучите JSTL и Model-2 MVC.
Вам нужен сервлет, чтобы организовать эти JSP. Каждая веб-структура MVC, о которой я знаю, имеет то, что называется сервлетом переднего контроллера для управления связью и оркестровкой. Вы тоже должны.
У вас есть форма POST в этом JSP, отправив HTTP-запрос index_jsp (плохое имя). Он выполняется в браузере на клиентской машине.
Я ожидаю, что вы отправите это сервлету на стороне сервера, который получает HTTP-запрос, получает имя пользователя и пароль, сравнивает значения с базой данных, чтобы узнать, действительно ли пользователь зарегистрирован. Затем я отправил следующий вид или маршрут на страницу "извините". Это не то, что вы делаете.
Не делайте равных проверок переменных, а делайте их против констант:
if("admin".equals(user) && "admin".equals(pass)) {
response.sendRedirect("wel.html");
}
Таким образом, вы не сможете получить NPE.
изменить код:
if("admin".equals(user) && "admin".equals(pass)) {
response.sendRedirect("wel.html");
}
Когда вы сначала запускаете jsp, он будет выполнять код, но пользователь и пароль имеют значение null.
Вы не проверяете значение null для атрибутов запроса.
замещать
String user = request.getParameter("user");
String pass = request.getParameter("pass");
с
String user = request.getParameter("user") != null ? request.getParameter("user") : "";
String pass = request.getParameter("pass") != null ? request.getParameter("pass") : "";
Изменить эту строку
if(user.equals("admin") && pass.equals("admin"))
{
response.sendRedirect("wel.html");
}
с
if(user!=null){
if(user.equals("admin") && pass.equals("admin"))
{
response.sendRedirect("wel.html");
}
}