繁体   English   中英

如何调用另一个HTML页面Java Servlet

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM