来自servlet的警报返回空白页面

时间:2015-12-10 05:23:28

标签: javascript java jsp servlets

我有一个带登录servlet的登录页面,如果用户输入了错误的凭据,则会发出警报:

PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<script type=\"text/javascript\">");
        out.println("alert('User or password incorrect, please try again');");
        out.println("</script>");
        out.println("</head>");
        out.println("</html>");

警报工作正常,但在提醒后,它会显示一个空白页面,其中包含以下链接:

http://localhost:8080/AWSCustomerJavaWebFinal/LoginServlet

对此可能的解决方案是什么,以便在警报之后,页面保留在login.jsp上或在警报之后转发到login.jsp,而不是向前移动到登录servlet,我尝试请求调度程序但是然后它没有显示警报并再次移至login.jsp。

3 个答案:

答案 0 :(得分:2)

基本思想是,当您将表单POST到servlet时,servelt将验证数据。如果失败则servlet将向会话添加一个属性并重定向回jsp页面,否则它将重定向到主页面

在所有情况下,JSP都会检查此会话属性,如果它不存在,那么这意味着它是正常的(首先尝试登录),否则意味着它已经尝试过并且失败并且它将显示错误。

如果你真的想要一个警报,那么设置一个带有此会话属性值的隐藏字段(带有html id)。 Javascript(onLoad / ready)将检查此html元素并在必要时显示警告。

答案 1 :(得分:1)

如果坚持因此POST操作而向用户显示警告,您应该考虑在javascript中执行重定向:

    out.println("<script type=\"text/javascript\">");
    out.println("alert('User or password incorrect, please try again');");
    out.println("window.location = 'login.jsp';");
    out.println("</script>");

您可能还想考虑添加至少一个基本的&lt; body&gt;回应。

答案 2 :(得分:0)

当您提交表单时,您提供了action属性的网址。提交后,表格将发送到该网址。这意味着你现在被引导到那个网址。所以它会留在你提供的网址上。

提供相同的操作URL(login.jsp),如果经过身份验证,则将用户重定向到另一个页面 或者使用ajax来做这些事情。