Filter过滤器——一定要用重定向

今天使用Fliter过滤器校验登录,功能是:登录后点击注销,返回到登录界面,点击返回,不能返回到之前的界面,返回到指定的界面提醒用户进行登录。在最开始,我的登录和注销使用的是

 req.getRequestDispatcher("sys/success.jsp").forward(req,resp);

  造成的问题是,Filter过滤器只过滤一次,单机返回时,他会自动提交之前表单提交过的内容,会报错空指针(因为注销时session对象已经被remove掉了),查了很久最后发现要用

 resp.sendRedirect(req.getContextPath() +"/sys/success.jsp");

  进行重定向(req.getContextPath() 根据自己情况,我的不加项目名称定向不过去。)

重定向之后点击返回,页面不会二次提交界面中的表单内容,就不会报错空指针,这时候过滤器发挥效果,将用户名为空时,重定向到新的界面提醒用户进行登录。

 

再提一句,必须把过滤器中的servletRequest和servletResponse转换成HttpServletRequest才能获取到session的值,也必须用它才能进行重定向。

posted on 2021-05-12 23:36  王玉昙  阅读(607)  评论(0编辑  收藏  举报

导航