[英]How to call another html page java servlets
你好,我有一个使用Java Servlet的简单登录项目。 我有index.html主页,有2个servlet,第一个是Login.java servlet,服务于index.html,第二个是UserInfo.java servlet,我想在按下“提交”按钮时重定向到,并使用将输入值发布到Login.java servlet的方法的jquery文件。 当我按下登录按钮时,什么也没有发生。 这是源代码
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>");
}
好的,问题是,您通过以下行将ajax调用发送到服务器:
$.post("Login", params, function(data){alert(data);}
);
如果执行ajax调用,则浏览器将不会转到新页面,服务器仅将ajax调用重定向到另一个servlet。 因此,如果要在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 servlet
编辑:添加成功检查
Edit2:添加打印错误以响应
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.