如何在一个servlet中弹出警告窗口并重定向到另一个jsp页面?

4
我尝试了这个方法,但是它只是重定向而没有显示消息。这是关于“login.jsp”的内容。
<form method="post" action="Login_Servlet" >
  <input name="idUsuario" type="text"/>
  <input  name="password" type="password" />
  <button type="submit">Entrar</button>
</form>

Login_Servlet

response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String userid= request.getParameter("idUser");        
String password = request.getParameter("password");
Login_Service login_Service = new Login_Service();
boolean result = login_Servicio.aut(userid, password);
Usuario user = login_Servicio.getUsuariosByUsuario(userid);
    if(result == true){
       request.getSession().setAttribute("user", user);            
       response.sendRedirect("vistas/Inicio.jsp");
    }
     else{
       out.println("<script type=\"text/javascript\">");
       out.println("alert('User or password incorrect');");
       out.println("</script>");
       response.sendRedirect("index.jsp");    
    }

有没有可能显示这样的消息?如果可以,那我做错了什么?


你声明了 login_Service 但使用了 login_servicio,这是一个打字错误吗? - Cédric Couralet
本身就是一个错误,当它没问题时,我去发布它。boolean result = login_Service.aut(userid, password);Usuario user = login_Service.getUsuariosByUsuario(userid); - Xaul Omar Tobar
4个回答

19
你可以尝试这样做:
else
{
   out.println("<script type=\"text/javascript\">");
   out.println("alert('User or password incorrect');");
   out.println("location='index.jsp';");
   out.println("</script>");
}

编辑:2018年3月20日,印度标准时间08:19

或者 不使用js

else {
   out.println("<meta http-equiv='refresh' content='3;URL=index.jsp'>");//redirects after 3 seconds
   out.println("<p style='color:red;'>User or password incorrect!</p>");
}

1
我会尝试这种方式,如果不行就用ajax尝试,但现在的问题是如何重定向到另一个jsp以获得相同的行为。response.sendRedirect(); - Xaul Omar Tobar

4
您可以重定向到您的JSP页面,但是要传递要显示的消息:
request.setAttribute("loginError","Incorrect password");

然后在 JSP 中:
 <c:if test="${not empty loginError}">
    <script>
    window.addEventListener("load",function(){
         alert("${loginError}");
    }
    </script>
</c:if>

非空语法允许检查参数是否存在。

我必须说,我认为用户并不喜欢一直收到警报,最好在页面上显示一条消息。 - Si Kelly

2
response.setContentType("text/html");
PrintWriter pw=response.getWriter();
pw.println("<script type=\"text/javascript\">");
pw.println("alert('Invalid Username or Password');");
pw.println("</script>");
RequestDispatcher rd=request.getRequestDispatcher("userlogin.jsp");
rd.include(request, response);

0
从Servlet重定向到另一个JSP,就像通常做的那样,在JSP的“onload”事件中调用一个JavaScript函数,该函数将提供您所需的警报.....

所以我已经有它了,但如果有人重新加载页面或再次给我,那么该消息就不应再出现。 - Xaul Omar Tobar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接