【问题标题】:How to call another html page java servlets如何调用另一个html页面java servlet
【发布时间】:2014-04-28 11:58:30
【问题描述】:

你好,我有一个使用 java servlet 的简单登录项目。我有 index.html 主页,2 个 servlet 第一个 Login.java servlet 服务 index.html,第二个 UserInfo.java servlet 我想成为重定向到当提交按钮被按下和 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>");
        }

【问题讨论】:

  • 你收到alert(data);了吗?
  • 正是我在警报框中获取源代码。顺便说一句,我删除了警报(数据),但什么也没发生
  • 那个警报箱里到底有什么?
  • 用户信息源代码

标签: java jquery html servlets


【解决方案1】:

好的,问题是,您通过此行向服务器发送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:在响应中添加了打印错误

【讨论】:

  • 即使密码或用户名不正确或未填写,它也会重定向我。当用户名和密码正确时,我希望 servlet 重定向我。
  • 当然如果用户名错误它会重定向你。您可以发送某种错误作为结果并在重定向之前检查它
猜你喜欢
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 2014-09-04
相关资源
最近更新 更多