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

问题描述

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    }}

fireBug截图:

解决方案

ajax请求浏览器不理会服务器端302响应头,需要自己判断内容后用js跳转

参考:easyui请求页面拦截跳转超时提示

解决方案二:
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

java-response重定向后,为何页面需要刷新后才会跳转?的相关文章

如何能使GridView的列能拖动,并且在拖动后,页面再次刷新后,列顺序还是拖动后的顺序

问题描述 如何能使GridView的列能拖动,并且在拖动后,页面再次刷新后,列顺序还是拖动后的顺序 解决方案 解决方案二:asp做这个似乎难实现,帮顶,学习.解决方案三:第三方..DWZORjqgrid.

页面已缓存,但是断网后在android webview 上显示找不到页面,刷新后正常

问题描述 页面已缓存,但是断网后在android webview 上显示找不到页面,刷新后正常 页面已缓存,但是断网后在android webview 上显示找不到页面,刷新后页面+正常显示 解决方案 说明你的webview在第一次加载的时候调用的数据不是缓存,你要设置其开始使用cookie缓存加载,断网时刚开始就不会找不到界面了

Jquery提交表单后,页面自动刷新问题

现象: 1.使用jquery体检提交表单后,页面重新加载 2.spring-boot报:o.s.web.servlet.PageNotFound: Request method 'POST' not supported 提交按钮 <button onclick="ligin();">Login</button> Jquery代码 function ligin(){ var data=$('#loginForm').serialize(); //序列化获得表单数据

页面自动刷新,滑动条无法定位

问题描述 自动刷新代码:<headid="Head1"runat="server"><title>无标题页</title><metahttp-equiv="refresh"content="10"/></head>---------------------cs定位代码:protectedvoidPage_Load(objectsender,EventArgse){//

Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法

解决|控件|刷新|页面     随着AJAX.NET BETA 2在今天发布,让我们看到了AJAX与ASP.NET2.0紧密结合的快捷与高效,我们甚至可以无需写一句JS代码即可让ASP.NET的网页得到以往要花上数小时编写的JS代码所实现的无刷新效果.而将这一切结合到ASP.NET也是那么的容易,只需将控件简单地移到UPDATEPANEL控件之内再设置几个参数即可实现.但是,在体验AJAX.NET带给开发者便利的同时,也会发现AJAX.NET有时也并不是十全十美.就像笔者近日遇到ASP.NET2

java web-浏览器清除缓存后访问服务器页面加载超级慢,进个登陆界面就要2分钟

问题描述 浏览器清除缓存后访问服务器页面加载超级慢,进个登陆界面就要2分钟 访问公司服务器上的java web 项目,当浏览器清除缓存后,页面要加载2分钟才好,第二次访问就挺快了,然后再清除缓存又会加载好长时间,但是后来我发现当刷新页面时接着点暂停再点刷新页面立马就加载完了,请问这是怎么一回事,该怎么解决? 解决方案 由于浏览器缓存了一些前端文件,所以你清除缓存后会重新从服务器下载这些文件,导致速度变慢,解决办法可以是加快服务器的性能,还有页面需要优化,一次性少加载一些文件或者先显示页面,后加载

小菜鸟请问jsp页面级联刷新怎么实现java,ssh

问题描述 小菜鸟请问jsp页面级联刷新怎么实现java,ssh jsp页面显示第一个下拉菜单,下拉取值后,使用ajax刷新, 第二个下拉菜单显示刷新后的内容. java,jsp页面,ssh框架,easyui <script type="text/javascript"> function xiaoshou(){ var suoshubumen=document.getElementById("find"); console.info(suoshubume

页面刷新后的问题,大家帮帮忙~

问题描述 开始页面运行很好但是我一个操作后用Response.Write("<script>alert("提交成功!");window.opener.location.reload();</script>");Response.Write("<script>window.close();</script>");刷新下页面中的一个DIV就错位了谁能告诉我为什么? 解决方案 解决方案二:先把<!D

javascript关于open.window子页面执行完成后刷新父页面的问题分析

  这篇文章主要介绍了javascript关于open.window子页面执行完成后刷新父页面的问题,实例分析了javascript操作子页面的执行与父页面的刷新技巧,非常具有实用价值,需要的朋友可以参考下 本文实例分析了javascript关于open.window子页面执行完成后刷新父页面的方法.分享给大家供大家参考.具体分析如下: 主页面: ? 1 <input id="btnAdd" type="button" onclick="openWi