我有一个带登录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。
答案 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来做这些事情。