• 登录失败使用session传数据


    做登录界面失败时想要判断输出失败提示消息
    起初使用页面跳转

                // 失败
                logger.debug("登陆失败");
                request.setAttribute("fail", "fail");
                request.setAttribute("name", username);
                request.getRequestDispatcher("login.jsp").forward(request,response);
                //String resp = "fail";
                //logger.debug("登陆失败");
                //response.sendRedirect("login.jsp?resp=fail");
    

    这样可以成功实现跳转页面,并且通过login页面判断可以弹出登陆失败,只是再刷新页面时会提示是否重新提交表单,其实并没有什么影响
    但是我又想到现在很多登录界面都是失败后只做文字提示
    如图为qq空间登录失败的提示:

    想要实现这种,设想为用一个表单来实现

          <style>
           #tip {
                color: red; /*输入文字、光标颜色*/
                caret-color: red; /*光标颜色*/
                 300px;
                border: none;
                height: 15px;
            }
          </style>
          <body>
                <input type="text" id="tip" name="tip" value="用户名或密码错误,请重新输入" style="display: none" readonly>
          </body>
          <script>
            var fail = "${fail}";
            console.log("fail = " + fail);
            if (fail != null && fail != '') {
                console.log("失败")
                $("#tip").show();
                document.getElementById("username").value = "${name}";
                document.getElementById("password").value = "${psw}";
            }
          </script>
    

    这样基本实现了提示

    但是再刷新页面时出现了问题,由于每次刷新页面都经过了Login.do,fail一直有值,所以相当于刷新失败了


    后来经过老师指导,使用session来传数据,并且在页面定义一个中间变量,每次刷新将之前的session清空来实现
    代码如下:
    Sevlet:

    logger.debug("登陆失败");
    request.getSession().setAttribute("fail", "fail");
    request.getSession().setAttribute("name", username);
    request.getSession().setAttribute("psw", password);
    response.sendRedirect("login.jsp");
    

    Jsp页面:

    <%
    // 临时判断
    if(session.getAttribute("fail")!=null){
       pageContext.setAttribute("loginFail",true);
       session.removeAttribute("fail");
    }
    %>
    

    这里只放了页面刚开始定义存放session数据的中间量和移除session中的对应数据,其余参照上述代面

  • 相关阅读:
    __getattribute__()、__getattr__()、__setattr__()、__delattr__()
    Python: Catch multiple exceptions in one line (except block)
    Python中的__new__和__init__
    使用sphinx生成Python文档
    Windows下干活儿辅助软件
    Python的Descriptor和Property混用
    Solved: Qt Library LNK 2001 staticMetaObject error
    OS sysbench压力测试
    Oracle 数据库 sysbench 压力测试
    MySQL 数据库 Sysbench压力测试
  • 原文地址:https://www.cnblogs.com/cn9826/p/13670049.html
Copyright © 2020-2023  润新知