Как вызвать другую HTML-страницу Java-сервлетов

0

привет, у меня есть простой проект входа с использованием сервлетов Java. У меня есть главная страница index.html, 2 сервлета сначала Login.java servlet, обслуживающий index.html, второй сервлет UserInfo.java. Я хочу, чтобы меня перенаправляли, когда нажата кнопка отправки, и файл jquery с методом, который отправил значения в Login.java servlet, когда я нажимаю кнопку входа, ничего не происходит. здесь исходники

index.html

Username:<input type="text" id="username_field" value="" class="round_border"/>
Password:<input type="password" id="password_field" value="" class="round_border"/>
<input onclick="login()" type="submit" value="Submit" id="login_button" class="btn" />

login.js

function login(){


    var username = document.getElementById("username_field");
    var password = document.getElementById("password_field");

    var params = {
        username: username.value, 
        password: password.value
    };


    $.post("Login", params, function(data){alert(data);}
            );
}

Login.java

    RequestDispatcher requestDispatcher  = request.getRequestDispatcher("UserInfo");
    requestDispatcher.forward(request, response);

UserInfo.java

try (PrintWriter out = response.getWriter()) {

            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet UserInfo</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet UserInfo at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
  • 0
    вы получаете alert(data); ?
  • 0
    именно я получаю исходный код в alertbox. Кстати, я удалил предупреждение (данные), но тогда ничего не происходит
Показать ещё 2 комментария
Теги:
servlets

1 ответ

0
Лучший ответ

нормально, проблема в том, что вы отправляете аякс- вызов на сервер по этой строке:

$.post("Login", params, function(data){alert(data);}
        );

если вы выполняете вызов ajax, ваш браузер не перейдет на новую страницу, ваш сервер только перенаправит вызов ajax на другой сервлет. Поэтому, если вы хотите перенаправить после вызова ajax, вам придется перенаправить javascript.

если ваш loginServlet отправит ошибку следующим образом:

Login.java

if(!password.equals("123456") //check if password is wrong
    out.println("{\"error\": \"wrong password\"}"); //write error to response. notice, we don't need server-redirect, since we will redirect by the client if the error exists

в вашем клиенте вы можете сделать что-то вроде этого:

$.post("Login", params, function(data){
            if(!data.error)
                window.location.href = "http://example.com/UserInfo/";
            else
                alert(data.error);
        });

функция будет выполнена, если ваш ajax-вызов прошел успешно и перенаправит браузер на сервлет UserInfo

Изменение: добавлена проверка успеха

Edit2: добавлена ошибка печати для ответа

  • 0
    он перенаправляет меня, даже если пароль или имя пользователя неверны или не заполнены. Я хотел, чтобы сервлет перенаправил меня, когда имя пользователя и пароль верны.
  • 0
    конечно, он будет перенаправлять вас, если имя пользователя неверно. Вы можете отправить какую-то ошибку в качестве результата и проверить ее перед перенаправлением
Показать ещё 1 комментарий
Сообщество Overcoder
Наверх
Меню