response.sendRedirect 在 Servlet 过滤器中不起作用
Posted
技术标签:
【中文标题】response.sendRedirect 在 Servlet 过滤器中不起作用【英文标题】:response.sendRedirect is not working in Servlet Filter 【发布时间】:2015-07-15 05:58:04 【问题描述】:以下过滤器在我的prj2
中。从prj2
开始,我正在检查会话是否不存在,我想重定向到prj1
的登录页面,该页面的URL 为/prj1/sessionexpiry
。在以下场景中,它不会重定向到登录页面,也不会抛出任何异常。
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException
HttpServletResponse hsr = (HttpServletResponse) res;
HttpServletRequest hreq = (HttpServletRequest) req;
HttpSession session = hreq.getSession(false);
if (session == null)
hsr.sendRedirect("/prj1/sessionexpiry");
return;
else
chain.doFilter(req, res);
任何帮助将不胜感激
【问题讨论】:
删除return
声明
删除return语句后也不起作用
发生了什么?如有异常或错误请发帖。
不,它没有抛出任何异常。它根本不是重定向,注意:sessionexpiry 在不同的应用程序中
您在网络服务器的日志中看到什么了吗?
【参考方案1】:
您是否在注销 servlet 或其他地方使会话无效?否则,会话将永远不会为空。
request.getSession().invalidate();
使用它使会话无效,然后下次检查会话是否有效时,它将获得空值。
【讨论】:
以上是关于response.sendRedirect 在 Servlet 过滤器中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
我遇到的response.sendRedirect跳转不了问题
求jsp中response.sendRedirect()实例;
response.sendRedirect() 和 request.getRequestDispatcher().forward(request,response) 有啥区别 [重复]