Spring MVC 下,不使用AJAX 登录时的错误提示的实现

来源:互联网 发布:大数据的技术架构 编辑:程序博客网 时间:2024/06/15 15:15

背景: 最近在写项目时,登录时,碰到用户名或密码错误时,只是简单的刷新一下页面,没有任何提示(用户看到的效果),用户体验极其不好. 后台代码当然是重定向.

看代码(修改前)

@RequestMapping("/login")    public String login(HttpServletRequest req, HttpServletResponse res,                        User user) {        String username = user.getUsername();        UsernamePasswordToken token = new UsernamePasswordToken(username,                user.getPassword());        Session session = ForwardUtils.getSession();        session.setAttribute("lguser", user);        try {            SecurityUtils.getSubject().login(token);        } catch (UnknownAccountException e) {// 没找到帐号            e.printStackTrace();            return "redirect:/toLogin";        } catch (LockedAccountException e) {// 帐号锁定            e.printStackTrace();            return "redirect:/toLogin";        } catch (Exception e) {// 凭证有误            e.printStackTrace();            return "redirect:/toLogin";//登录失败,,重定向到登录界面        }        return "redirect:/toHome"; //登录成功     }

错误提示这东西就没了.楼主学术尚浅,用了简单的session 实现, (登录失败时,把错误信息保存到session, jsp页面使用el表达式获取错误信息,登录成功时销毁session),这样做的话,实现了登录错误提示,,但是用户在登录页面刷新页面时,错误信息还是存在. 这样就很监介了. 身为一个强迫症患者,这样是不行的.

废话说多了, 最后使用了RedirectAttributes 

这个类就是spring mvc 给的了,,需要3.1 以上的哦...他的作用就是在重定向的时候顺便把想要传的值传过去了,  好吧 直接上代码

@RequestMapping("/login")    public String login(HttpServletRequest req, HttpServletResponse res,                        User user , RedirectAttributes attr) {        String username = user.getUsername();        UsernamePasswordToken token = new UsernamePasswordToken(username,                user.getPassword());        Session session = ForwardUtils.getSession();        session.setAttribute("lguser", user);        try {            SecurityUtils.getSubject().login(token);        } catch (UnknownAccountException e) {// 没找到帐号            e.printStackTrace();            attr.addFlashAttribute("login_error_alert","用户名或密码错误");            return "redirect:/toLogin";        } catch (LockedAccountException e) {// 帐号锁定            e.printStackTrace();            attr.addFlashAttribute("login_error_alert","用户名或密码错误"); //登录失败时把提示信息存入            return "redirect:/toLogin";        } catch (Exception e) {// 凭证有误            e.printStackTrace();            attr.addFlashAttribute("login_error_alert","用户名或密码错误");            return "redirect:/toLogin";        }        return "redirect:/toHome";    }

jsp页面当然还是el表达式了

<span style="color: #f00">${login_error_alert}</span>


阅读全文
0 0
原创粉丝点击