首页 > 解决方案 > 如何在 html 中显示“登录失败”消息,具体取决于 servlet 响应

问题描述

简单的布局(将在一个复杂的项目中实现) 我有一个简单的用户密码登录页面。单击提交将带有这些参数的请求发送到 LoginServlet。此 servlet 检查数据库是否匹配——如果它以 positivley 结束,则用户将被重定向到下一页。

但是,如果结果很糟糕 - 用户将被重定向到同一页面 Login.html

我正在寻找一种方法来为这个重定向“添加”一些额外的权重,当用户多次访问登录页面时,表单上会出现一条警告,指出“登录详细信息错误”或其他内容...

我怎样才能做到这一点?从 servlet-response.SendRedirect? 或转发(请求,响应)?

在 html 上,如何使用 java 脚本实现这种行为?我尝试探索 XMLHttpRequest 对象,但他的方法似乎没有检索到我试图附加到响应标头的任何有用的东西。

附上我的 servlet 代码——只是为了给你一些参考——但我愿意接受建议,谢谢。

try {
            AdminFacade af = (AdminFacade) CouponSystem.getInstance().login(name, password, type);

            HttpSession session = request.getSession();
            System.out.println("LOGIN SERVLET:session id: " + session.getId());

            session.setAttribute("facade", af);
            System.out.println("LOGIN SERVLET:facade id: " + af);

            session.setAttribute("userType", "admin");
            response.setHeader("test1", "this is a test header");
             response.sendRedirect(response.encodeRedirectURL("login.html"));

标签: javascriptjavaservletslogin

解决方案


在 servlet 中,如果登录凭据错误,则执行以下操作:

request.setAttribute("messageResponse","Login failed: wrong login credentials");

您需要在页面中检查此值,如下所示:

if(request.getAttribute("messageResponse")!=null){
      out.println(request.getAttribute("messageResponse"));
}

您需要在页面中编写上述 java 代码。


推荐阅读