Filter中重定向问题
老师,我想使用一个LoginFilter过滤器来防止用户在未登录的情况下通过url地址直接访问其他页面(比如修改信息,未登录留言等情况),但在过滤器中判断Session域中“user”是否为空后通过转发能够实现想要的结果,但浏览器的URL地址并没有发生变化,用户体验不佳;如果使用重定向功能,浏览器并不会跳转页面,抛出异常,500错误。请问老师,使用重定向功能应该怎么实现?
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; User user = (User) request.getSession().getAttribute("user"); if (user == null){ request.getRequestDispatcher("/message/list.do").forward(request,response); //response.sendRedirect(request.getContextPath()+"/message/list.do"); } chain.doFilter(req,resp); }
9
收起
正在回答
1回答
从你的错误提示看,在forward之前是否进行了其他重定向操作呢,你检查一下过滤器的代码,如果还有其他重定向或者转发的语句,最好在语句后面写上return,代码就不会再往下执行了。
如果还有问题,建议把相关代码贴全
祝学习愉快!
Java数据库开发与实战应用2018版
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星