Проверка формы с использованием JSP

1

Я совершенно новичок в 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. Что я делаю не так? Немедленная помощь будет оценена!

Благодарю!

  • 0
    Где именно вы берете NPE? TBH, я не изучал код, так как поиск проблемы занял бы больше времени, чем предложение решения, если мы знаем, где проблема. :)
  • 0
    Не пишите код Java внутри JSP . Если вы следуете некоторому руководству, остановитесь прямо сейчас. Не учите вещи, которые более десяти лет считаются плохими.
Теги:
jsp
nullpointerexception

5 ответов

2

Сначала совет, поскольку вы новичок в JSP: не пишите сценарий сценария. Это все вещи между <% и %>. Это старинная технология 1998 года, которая должна быть обескуражена. Изучите JSTL и Model-2 MVC.

Вам нужен сервлет, чтобы организовать эти JSP. Каждая веб-структура MVC, о которой я знаю, имеет то, что называется сервлетом переднего контроллера для управления связью и оркестровкой. Вы тоже должны.

У вас есть форма POST в этом JSP, отправив HTTP-запрос index_jsp (плохое имя). Он выполняется в браузере на клиентской машине.

Я ожидаю, что вы отправите это сервлету на стороне сервера, который получает HTTP-запрос, получает имя пользователя и пароль, сравнивает значения с базой данных, чтобы узнать, действительно ли пользователь зарегистрирован. Затем я отправил следующий вид или маршрут на страницу "извините". Это не то, что вы делаете.

  • 0
    Спасибо ! Я ценю вашу помощь !
1

Не делайте равных проверок переменных, а делайте их против констант:

 if("admin".equals(user) && "admin".equals(pass)) {
    response.sendRedirect("wel.html");
 }

Таким образом, вы не сможете получить NPE.

0

изменить код:

if("admin".equals(user) && "admin".equals(pass))  {
    response.sendRedirect("wel.html");
}

Когда вы сначала запускаете jsp, он будет выполнять код, но пользователь и пароль имеют значение null.

0

Вы не проверяете значение 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") : "";
0

Изменить эту строку

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");
    }
}
  • 0
    Спасибо ! Это сработало ! Но почему я должен проверить на ноль?
  • 0
    вы получаете ноль в пользовательской переменной. Также примите ответ и ответьте также.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню