response重定向后,为何页面需要刷新后才会跳转

yanxin9210 2015-12-06 07:11:05
现在在做一个web应用系统,前端框架是Extjs5.1,后端框架是spring+springMVC+hibernate。

加了一个登录过滤器,当session失效后,再点击页面中的任意功能菜单就要跳转到登录页面,
我在验证session为空后,用response.sendRedirect()重定向到登录页面,

但是现在的问题是:
session失效后,我点击任意功能菜单不会显示数据,页面不跳转,地址栏网址也不会变,必须要按F5刷新后才会跳转到登录页面,在fireBug里面重定向会显示。


登录过滤器:

public class LoginFilter implements Filter {

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;

String contextPath = request.getContextPath();
String url = request.getRequestURI();
url = url.replace(contextPath, "");

if ((url.startsWith("/sys") || url.startsWith("/bus")) &&
!url.contains("/sys/sysuser/login") )) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(Constant.SESSION_SYS_USER);

if (null == sysUser) {
response.sendRedirect(contextPath + "/login.jsp");
return;
}
}
if (request.getMethod().equalsIgnoreCase("get")) {
request = new GetHttpServletRequestWrapper(request, "UTF-8");
}
filterChain.doFilter(request, response);


}

@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}

}


fireBug截图:
...全文
853 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
◔▽◔程序媛 2018-11-23
  • 打赏
  • 举报
回复
我也遇到了同样的问题,我也查了很多资料,并没有这样的实现方式。 后来,我转换了一下思路,就解决问题了了。 seesion超时后,后端返回301超时状态码,前端js根据状态码判断是否跳转到登录页面。 这样的好处是,不需要java控制前端页面,只需要前端js控制就行了。逻辑清晰又好处理。
gzkg1992 2017-03-27
  • 打赏
  • 举报
回复
楼主怎么解决的这个问题,我也遇到了
to be number two 2016-08-12
  • 打赏
  • 举报
回复
楼主怎么解决的这个问题,我也遇到了

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧