部署用户名,密码,验证码项目的改进点

将错误提示信息存入到request域中共享,而不是存入cookie中

在做一个验证验证码,及用户名是否正确的小项目时,要求将错误信息展示在登录界面,当时以为页面会跳转就把错误信息存入到了cookie当中,并交由登录界面jsp进行输出显示。后来知道页面不会跳转,那么就相当于在一次请求范围内,用request域进行数据共享即可

  if (rightcode==null||!(checkcode.equalsIgnoreCase(rightcode))) {
            //设置request域中共享数据
            request.setAttribute("message","验证码错误");
            //转发至登录页面
            request.getRequestDispatcher("/index.jsp").forward(request,response);

        } else {

            //验证码获取用户输入的用户名及密码
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            //调用登录方法并返回查询对象
            user getuser = Login.getuser(username, password);

            if (getuser == null) {
                //设置request域中共享数据
                request.setAttribute("message","用户名或密码错误");
                //转发至登录页面
                request.getRequestDispatcher("/index.jsp").forward(request,response);
            
        }

而下方用户名,密码,验证码 全部正确后要求的时跳转至success.jsp,不在一次请求的范围内,且涉及到存储了用户对象,在success.jsp页面显示,所以将对象存入session中而不是cookie中,并利用重定向对页面进行了跳转

  //用户存在,往session中存入用户对象
                session.setAttribute("user",getuser);
                //跳转至success.jsp
                response.sendRedirect(request.getContextPath()+"/Success.jsp");

在登陆界面中对错误 信息的输出做了处理,防止在没有错误信息,自动在页面上输出null

<div><%=
    //获取域中的错误信息并输出,无信息时不显示任何数据
    request.getAttribute("message")==null?"":request.getAttribute("message")
  %>
  </div>

防止登录成功后,后退至登录界面,只需要输入密码而不需要输入验证码,对验证码造成了重复利用

HttpSession session = request.getSession();
        String rightcode = (String)session.getAttribute("checkcode");
        //获取验证码完毕后将session中的验证码删除防止验证码重复利用
        session.removeAttribute("checkcode");
        //若验证码错误或验证码为空 跳转至首页并提醒验证码错误 忽略验证码大小写
        if (rightcode==null||!(checkcode.equalsIgnoreCase(rightcode))) {
            //设置request域中共享数据
            request.setAttribute("message","验证码错误");
            //转发至登录页面
            request.getRequestDispatcher("/index.jsp").forward(request,response);

        }

在session中获取正确的验证码后,直接将session中的验证码数据删除,那么后退登录界面重新登录时,进行判断 验证码为null 提示验证码错误需要重新输入解决

猜你喜欢

转载自blog.csdn.net/lvyangxue/article/details/107324332