java ajax无权限跳转_ajax请求重定向后页面不跳转问题 (使用拦截器)
一、ajax重定向的问题。
默认ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的。如果需要用到重定向可以通过以下方法:
第一步:后端代码改造。
在后端(大部分情况都是拦截器)中判断是否需要重定向。
Eg:session过期判断,当判断session已经过期了,就先判断此次请求是否是ajax的请求。
方法:
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object arg2) throws Exception {
User u = (User) request.getSession().getAttribute("USER");
String type = request.getHeader("X-Requested-With");// XMLHttpRequest
if (u == null) {
// 重定向
String path = request.getContextPath();
String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";
//response.sendRedirect(contextPath+"/index.jsp");
// System.err.println("sendRedirect");
// 转发
if (StringUtils.equals("XMLHttpRequest", type)) {
// ajax请求
response.setHeader("SESSIONSTATUS", "TIMEOUT");
response.setHeader("CONTEXTPATH", basePath+"index.jsp");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return false;
} else {
response.sendRedirect(basePath+"index.jsp");
return false;
}
}
return true;
}
第二步:前段改造ajax属性。
通过$.ajaxSetup()方法给ajax方法统一添加请求执行结束后,执行的操作。
$.ajaxSetup( {
//设置ajax请求结束后的执行动作
complete :
function(XMLHttpRequest, textStatus) {
// 通过XMLHttpRequest取得响应头,sessionstatus
var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
if (sessionstatus == "TIMEOUT") {
var win = window;
while (win != win.top){
win = win.top;
}
win.location.href= XMLHttpRequest.getResponseHeader("CONTEXTPATH");
}
}
});
java ajax无权限跳转_ajax请求重定向后页面不跳转问题 (使用拦截器)相关推荐
- java ajax无权限跳转_如何在ajax权限判断后跳转?
经常会遇到一种场景,直接访问某些权限被拒绝后跳转登陆页面,然而ajax不会跳转 这个时候使用全局的: $(function(){ //全局的ajax访问,处理ajax清求时sesion超时 $.aja ...
- Ajax请求成功后页面跳转
文章目录 Ajax实现页面局部刷新 Ajax请求成功后页面跳转 Ajax实现页面局部刷新 这里通过点击一个按钮,然后下面产生一段文字,而整个页面不用刷新 <!DOCTYPE html> & ...
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】
[Java EE (Struts2 + Spring + Hibernate)开发]:Struts2(二)之[拦截器机制] 本文地址:http://blog.csdn.net/shanglianlm/ ...
- java ajax无刷分页_简单实现Ajax无刷新分页效果
Ajax无刷新分页效果,如下代码实现 Ajax无刷新分页效果 function showpage(url) { var xhr = new XMLHttpRequest(); xhr.onreadys ...
- 请求转发、请求重定向与页面跳转问题
请求转发 请求转发是服务器行为,即用户向服务器发送了一次http请求,该请求可能会经过多个信息资源处理以后返回给用户,各个信息资源使用请求转发机制互相转发请求,从用户的感官上来看,是感觉不到请求转发的 ...
- ajax请求成功后打开新开窗口(window.open())被拦截的解决方法
问题:今天在做项目时需要在ajax请求成功后打开一个新的窗口,此时遇到浏览拦截了新窗口的问题,尝试在ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('clic ...
- java中注解动态传参_SpringMVC之注解、传参、返回值及拦截器
1. 注解式开发之annotation-driven解释 (1) mvc注解驱动在哪个文件中配置? Springmvc.xml (2) 配置mvc注解驱动使用哪个标签? 2. 注解式开发之视图解析器 ...
- html 自动跳转手机版,HTML实现页面自动跳转的五种方法
在上篇文章给大家介绍了HTML页面3秒后自动跳转的三种常见方法,本文继续给大家介绍有关html页面跳转相关知识,一起学习吧. 下面列了五个例子来详细说明,这几个例子的主要功能是:在5秒后,自动跳转到同 ...
- ajax 执行成功 modal 关闭_Ajax请求中的async:false/true的作用
前言: 昨天在做倒计时修改的时候,发现多次点击按钮,我明明做了限制,点击多次的时候发现怎么都会请求了两次,然后我写的是请求成功添加文字,结果总是会添加两次文字, 说明ajax请求了两次了,在网上查了下 ...
最新文章
- 结巴分词jieba添加自定义词典
- docker修改镜像的存储位置_Docker存储原理
- spring boot使用外置tomcat部署需要排除的依赖
- 程序员怎么样保证自己的程序没有BUG
- Nancy简单实战之NancyMusicStore(四):实现购物车
- 第五十九期:如何在Windows 10中执行Windows Defender离线扫描?
- 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形
- 基于CompletableFuture并发任务编排实现
- USACO-Section2.2 Subset Sums
- XFire WebService开发快速起步
- java第三次实验作业
- Django 模板中使用 Ajax POST
- 我用 Python 集齐了支付宝五福!
- linux libpng dev,linux下实用图形库--libpng下载地址及说明
- No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration.特殊处理
- 入秋的第一篇数据结构算法:看看归并与快排的风采,三面蚂蚁金服成功拿到offer
- API的小结===一定要看
- JavaScript格式化字符串为指定长度
- win10自带sftp服务器_如何使用OpenSSH在Win10中设置SFTP服务器
- CISCO CDP邻居发现协议