使用 servlet 在登录页面本身中显示密码错误消息

Display password error message in login page itself using servlet

本文关键字:显示 密码 错误 消息 servlet 登录 使用      更新时间:2023-09-26

我想在登录页面的特定<div>中显示用户名或密码不正确的消息。

这是我的登录.html代码。

<div class="wrapper">
            <form class="form-signin" method="POST" action="j_security_check">       
                <h2 class="form-signin-heading text-center" id="head">Login</h2>
                <input type="text" class="form-control"  id="txtuser" name="j_username" placeholder="Username" required="required" />
            <input type="password" class="form-control" id="txtuser" name="j_password" placeholder="Password" required="required"/>
            <div id="error"></div>  
                <button class="btn btn-lg btn-default btn-block login1" id="txtuser" type="submit"><span class="glyphicon glyphicon-log-in"></span> Login</button>   
            </form>
</div>

这是我的 servlet 代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  RequestDispatcher rd=request.getRequestDispatcher("/login.html");
  out.println("<script>");
  out.println("document.getElementById('error').innerText=Sorry UserName or Password Error");
  out.println("</script>");
  rd.include(request, response);
}

消息未显示在登录文件的<div id="error">

我找到了答案。它正在工作

这是我的 JSP

<%
String login_msg=(String)request.getAttribute("error");  
if(login_msg!=null)
out.println("<font color=red size=4px>"+login_msg+"</font>");
%>

这是我的仆人

request.setAttribute("error","Invalid Username or Password");
RequestDispatcher rd=request.getRequestDispatcher("/login.jsp");            
rd.include(request, response);

只需将请求中的错误消息设置为属性,如果它不为 null,则显示错误div。

Servlet:

request.setAttribute("error","Invalid Username/password");

登录.jsp:

使用 JSTL 和 EL 访问 JSP 中的请求属性。您可以使用<c:if>来测试错误消息。

<c:if test="${not empty requestScope.error}">
      <!-- Show the error div with message-->
</c:if>

使用隐式对象requestScope从请求范围获取属性。


如果您只想使用HTML,请尝试一下。这不是一个好方法,但您可以创建两个单独的HTML页面进行登录.html然后login_error.html然后在出现任何错误时重定向到login_error.html。

request.getRequestDispatcher("/login_error.html");

试试这个:

request.getRequestDispatcher("signin.html").include(request, response);
out.println("<script>document.getElementById('error').innerHTML='Sorry UserName or Password'; </script>");

不要忘记对字符串使用单引号。

只需移动

rd.include(request, response);

在您的打印语句之前,它应该可以工作。这是因为您希望脚本在定义div 后执行。