Ajax发送请求 经过SpringMVC拦截器重定向其他页面失败

借鉴出处

Ajax是通过异步请求后台,获取数据,局部刷新页面,因此,即使后台进行页面跳转的编码,前台请求完毕以后,只会执行ajax的回调函数,后台执行的逻辑,拦截器虽然拦截处理器,但是不会进行页面重定向。

—— 解决方法

注意:ajaxSetup() 当js全局属性放置


<script type="text/javascript">
$.ajaxSetup( {//设置ajax请求结束后的执行动作complete :function(XMLHttpRequest, textStatus) {// 通过XMLHttpRequest取得响应头,sessionstatusvar sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");if (sessionstatus == "TIMEOUT") {var win = window;while (win != win.top){win = win.top;}win.location.href= XMLHttpRequest.getResponseHeader("CONTEXTPATH");}}
});
</script>

~这段代码的含义,大抵就是,在 ajax请求完成以后,执行 complete 回调方法,里面进行一些逻辑的判断;
~这里判断 session 的状态,如果是超时被销毁了,则进行页面的跳转,跳到 CONTEXTPATH 的值那 ;
~session 的状态以及 CONTEXTPATH 的值,由我们后台同学定义;

注意:request.getHeader(“x-requested-with”)作用是: 判断Ajax请求是否是异步

HttpSession session = request.getSession();String userSessionId = (String)session.getAttribute("userSessionId");if(userSessionId == null || "".equals(userSessionId)) {// 获取到项目名,以便下面进行重定向String homeUrl = request.getContextPath();// 如果是 ajax 请求,则设置 session 状态 、CONTEXTPATH 的路径值// 如果是ajax请求响应头会有,x-requested-withif (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){response.setHeader("SESSIONSTATUS", "TIMEOUT");response.setHeader("CONTEXTPATH", homeUrl+"/jsp/login.jsp");// FORBIDDEN,forbidden。也就是禁止、403response.setStatus(HttpServletResponse.SC_FORBIDDEN);}else{// 如果不是 ajax 请求,则直接跳转即可response.sendRedirect(homeUrl+"/jsp/login.jsp");}return false;}else{System.out.println("通过拦截器 ... ");return true;}

AJAX,SpringMVC,拦截器(Ajax发送请求 经过SpringMVC拦截器重定向其他页面失败)相关推荐

  1. axios拦截器阻止发送请求

    axios拦截器 import axios from "axios"; import { config } from "vue/types/umd";const ...

  2. vue 无法进入response拦截器_Vue添加请求拦截器

    一.现象 统一处理错误及配置请求信息 二.解决 1.安装 axios  , 命令: npm install axios --save-dev 2.在根目录的config目录下新建文件 axios.js ...

  3. 修改拦截器里的请求头_OkHttp4 源码分析(1) 请求流程分析

    square/okhttp​github.com 本文基于OkHttp4.7.1分析 同步请求示例代码 OkHttpClient client = new OkHttpClient.Builder() ...

  4. java拦截器_springMVC入门(八)------拦截器

    SSM框架是java开发最常用的框架组合,作为视图层的框架SPring MVC框架有着极其广泛的应用,很多的小可爱在Java学习的框架阶段存在着诸多的迷茫,今天小编将手把手的带领大家进行三大框架之一的 ...

  5. java struts 拦截器_java框架篇---struts实现拦截器

    Struts2的拦截器和Servlet过滤器类似.在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept ...

  6. springboot2.0版本后配置拦截器会导致静态资源被拦截

    转载:https://blog.csdn.net/wangfuxu14/article/details/80670648 springboot2.0版本后配置拦截器会导致静态资源被拦截 解决办法: 分 ...

  7. struts 修改拦截器修改返回值_Struts2自定义拦截器

    自定义拦截器 1). 具体步骤 I. 定义一个拦截器的类 > 可以实现 Interceptor 接口 > 继承 AbstractInterceptor 抽象类 II然后在拦截器类的inte ...

  8. Ajax学习系列——向服务器发送请求

    1.如何发送请求? 如果需要向服务器发送请求,我们使用的是XMLHttpRequest对象中的open()和send()方法. var xhr = new XMLHttpRequest();//具体创 ...

  9. springmvc拦截器对请求参数解密_SpringMVC拦截器如何修改请求参数

    拦截器1,基本拦截器: package cn.ijava.interceptor; import javax.servlet.http.HttpServletRequest; import javax ...

最新文章

  1. 多项式回归、分位数回归(Quantile Regression)、保序回归(Isotonic Regression)、RANSAC回归、核岭回归、基准回归模型(baseline)
  2. python统计文件行数检测字符串_python统计文件中的字符串数目示例
  3. Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的基本操作
  4. Insert Interval
  5. 【转】维护工厂库存的一般设置
  6. 如何发现假库存照片(并将合适的人归于属性)
  7. jzoj5097-[GDOI2017day1]取石子游戏【并查集,LCA】
  8. asp中日期时间函数介绍
  9. 关于X WindowSystem 、gnome、以及安装vncserver
  10. 毕设题目:Matlab无人机协同任务
  11. 2010 模板下载 罗斯文_纯干货!速卖通运费模板的设置技巧!
  12. 【aws smart home】Aleax skill环境搭建
  13. 金山打字计算机实验报告,打字实训报告总结(共10篇).docx
  14. .Net NPOI Word模板关键内容替换
  15. 影子卫士中文注册版+系统保护的尚方宝剑、、
  16. Redis面试宝典12道法
  17. ubuntu 16.04 + GTX1050安装nvidia驱动
  18. 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)
  19. SendMessage实现进程间通信
  20. 曙光服务器怎么外接显示器,教您显示器外接方法

热门文章

  1. CentOS Rescure救援模式恢复数据记录
  2. 2020.9.28--PS--色阶、色阶上色、曲线
  3. subversion的配置与使用
  4. 视频标准 - CCIR601,CCIR656
  5. MultipleOutputFormat和MultipleOutputs
  6. linux终端设备:pty设备初始化、创建过程
  7. 微信小程序之录音与播放
  8. 竞赛图强连通分量大小幂和计数 - 组合计数 - 多项式
  9. iOS Zip文件压缩
  10. Chapter_one