привет, у меня есть простой проект входа с использованием сервлетов 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>");
}
нормально, проблема в том, что вы отправляете аякс- вызов на сервер по этой строке:
$.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: добавлена ошибка печати для ответа
alert(data);
?