问题描述
- response重定向后,为何页面需要刷新后才会跳转?
- 现在在做一个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(requestUTF-8""); } filterChain.doFilter(request response); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub }}
解决方案
ajax请求浏览器不理会服务器端302响应头,需要自己判断内容后用js跳转
解决方案二:
if (null == sysUser) {
response.sendRedirect(contextPath + ""/login.jsp"");
return;
}
这些有问题。 return ?当然不会往下执行。你 用户为空的时候只是把地址改变但没有执行下一步操作啊。把return这行删除就OK了。
解决方案三:
如果是用的ajax请求url,redirect是不会自动跳转的,必须通过location.href=""xxx.jsp""来实现、
解决方案四:
我做过一个短信验证码的可以实现效果后面那个return不需要。而且我用的是ajax发送请求。
时间: 2024-08-29 05:40:00