Ajax 请求session过期的统一处理】的更多相关文章

public class LoginInterceptor extends HandlerInterceptorAdapter { @SuppressWarnings("unused") private static final Logger log = Logger.getLogger(LoginInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletR…
首先需要在拦截器中判断是否是ajax请求,如果是 if(isAjaxRequest(request)){//ajax请求 response.setHeader("sessionstatus", "timeout"); response.setHeader("redirectUrl", request.getContextPath()+Constant.LOGIN); }else{//form请求 response.sendRedirect(req…
对于页面来说,处理session过期比较简单,一般只需在过滤器里面判断session用户是否存在,不存在则跳转页面到登陆页即可. 对于Ajax请求来说,这个办法则无效,只能获取到登录页的html代码.原因在于Ajax请求是XMLHTTPRequest对象发起的而不是浏览器,而服务器返回的信息接收者也是XMLHTTPRequest,非浏览器. 解决办法: 服务器端 可在返回的ResponseHeader里添加一个标识变量,以便在Javascript里处理.以Java为例,可在过滤器里进行如下处理:…
对于页面来说,处理session过期比较简单,一般只需在过滤器里面判断session用户是否存在,不存在则跳转页面到登陆页即可. 对于Ajax请求来说,这个办法则无效,只能获取到登录页的html代码.原因在于Ajax请求是XMLHTTPRequest对象发起的而不是浏览器,而服务器返回的信息接收者也是XMLHTTPRequest,非浏览器. 解决办法: 服务器端 可在返回的ResponseHeader里添加一个标识变量,以便在Javascript里处理.以Java为例,可在过滤器里进行如下处理:…
问题的产生: 现如今Ajax在Web项目中应用广泛,几乎可以说无处不在. 有时会碰到这样个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不是浏览器,在验证失败后的页面跳转无法反应到浏览器中,因为服务器返回(或输出)的信息被JavaScript(XMLHTTPRequest对象)接到了. 那么应该怎么处理这种情况呢? 问题的解决之法: 既然服务器返回的消息被XMLHTTPRequest对象…
jQuery(function($){ var _ajax=$.ajax; // 备份jquery的ajax方法 $.ajax=function(opt){ var _success = opt && opt.success || function(a, b){}; //获取ajax请求参数中的success方法: var _opt = $.extend(opt, { success:function(data, textStatus){ // 如果后台将请求重定向到了登录页,则data里…
第一篇博文,mark一下zhq[0]. 问题描述:用户页面,当session过期或都session注销后,普通页面后端都会有过滤器,session过期Redirect到登录页面,但是ajax请求后端只会返回登录页面源码并不跳转. 网上有很多方法1.返回的字符串附加登录状态2.修改http头信息:3.修改jquery源文件判断;综合比较还是以下方法最方便更易维护.个中缺点大家应该都明了就不赘述. 解决方案: jQuery(function($){ // 备份jquery的ajax方法 var _a…
一般我们会在过滤器里判断登录状态,如果没登录就跳转登录页面,过滤器java核心代码如下: UserItem loginUser = (UserItem)request.getSession().getAttribute("loginUser"); if(loginUser == null) { response.sendRedirect("/login.action"); } UserItem loginUser = (UserItem)request.getSes…
在ajax请求的页面引入一个自定义的AjaxRedirect.js的文件 AjaxRedirect.js的代码如下: $(function(){ $.ajaxSetup({ type: 'POST', complete: function(xhr,status) { var sessionStatus = xhr.getResponseHeader('sessionstatus'); if(sessionStatus == 'timeout') { var top = getTopWinow()…
web前端js代码: $.ajaxSetup({ contentType : "application/x-www-form-urlencoded;charset=utf-8", complete : function(xhr, textStatus) { if (xhr.status == 520) {//如果返回状态码是520 window.location..reload();//刷新页面,执行登录逻辑 return; } } }); java代码: 1. 写一个filter i…
jQuery(function($){ // 备份jquery的ajax方法 var _ajax=$.ajax; // 重写ajax方法, $.ajax=function(opt){ var _success = opt && opt.success || function(a, b){}; var _error = opt && opt.error || function(a, b){}; var _opt = $.extend(opt, { success:functi…
目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题. 可能需要处理的问题:Session超时.系统500错误.普通的业务错误.权限不足. 同步请求:            Session超时,登录拦截器,重定向到登录页面.           500等系统错误,SpringMVC自定义ExceptionHanlder,跳转到系统错误页面,给访客友好的提示.             业务错误和权限不足,与500类似. 相对而言,同步方式,处理起来还是比较容易的. 异步请求: 2…
ajax前置处理实现异步请求session过期时跳转登录页面 function checkLogin(json) { if (typeof(json) === 'string' && ~json.indexOf('<!DOCTYPE html>')) { window.location.href = $('base').attr('href') + 'auth/login' } }…
项目需要做一个自动登出的功能,查询了网上的资料,一开始准备用session监听做,按照下面方式配置监听器 1.在项目的web.xml文件中添加如下代码: <!--添加Session监听器--> <listener> <listener-class> 监听器路径 </listener-class> </listener> 2.编写java类. public class SessionListener implements HttpSessionLi…
1.在项目的web.xml文件中添加如下代码: ? 1 2 3 4 <!--添加Session监听器--> <listener> <listener-class> 监听器路径 </listener-class> </listener> 2.编写java类. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class SessionListener implements HttpSessionL…
简单封装了一个ajax请求,做一下统一处理,少写重复代码,只是一个初步的代码,没有经过优化. $.extend({ myAjax: function (option, rollBack) { var that = this; var myOption = { type: "post", timeout: 10000, success: function (data) { data = $.eval(data); if (data.hasOwnProperty("Success…
后台增加filter,注意不要把druid也屏蔽了 import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.S…
Session引发的异常 其中一个bug是这样的: 使用Firefox登录进入系统后,再打开一个Tab,进入系统页面,点击logout. 在回到前一个tab页面,点击Save按钮,出现了js错误.这个时候应当将用户转到登陆页. 小王看到这个bug,有些目瞪口呆,没想到QA用这么"暴力"的方式来测试自己的程序.在另一个Tab上点击logout, 会导致session清空的,这样再点击第一个tab上的Save按钮,调用的Ajax方法会出现异常的. 但是如何处理这种”非正常”操作引发的异常呢…
过滤器常用来对Session过期做判断 Layout.js 1.为ajax请求添加标识 2.无论ajax请求成功与否,complete函数终会执行 // 全局Ajax设置, 用于session过期后的跳转 function ajaxSetup() { $.ajaxSetup({ timeout : 10000, beforeSend : function(xhr) { //添加ajax请求标识 xhr.setRequestHeader("ajaxReq", "ajax&quo…
一.状态保持的概述 http协议是无状态的.下一次去访问一个页面时并不知道上一次对这个页面做了什么.因此引入了cookie.session两种方式来配合解决此问题. Duplicate entry:重复条目 二.Cookie(存储在客户端) cookie是由服务器生成,存储在浏览器端的一小段文本信息. 1.1 cookie的特点: 0) 服务器通过HttpRessponse的对象set_cookie设置cookie:HttpRessponse.set_cookie 1) 浏览器以键值对方式进行存…
女朋友不是想抛就抛,但异常却可以,不信请往下看. 今天在MVC Controller中写代码时,纠结了一下: public async Task<ActionResult> Save(int? postId) { if(!IsOwner(postId.Value, userId)) { //抛不抛异常呢? } } 在这个地方要不要抛异常呢? 如果不抛异常,就得这么写: public async Task<ActionResult> Save(int? postId) { if(!I…
使用技术:HTML + Servlet + Filter + jQuery 一般来说我们的项目都有登录过滤器,一般请求足以搞定.但是AJAX却是例外的,所以解决方法是设置响应为session失效. 一共分为过滤器和页面JS两个部分的设置,先看过滤器的修改: import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterCon…
当前端在用ajax请求时,如果没有设置session超时时间并且做跳转到登录界面的处理,那么只是靠后台是很难完成超时的一系列动作的:但是如果后台 没有封装一个ajax请求公共类,那么在ajax请求上下功夫解决session超时的问题是不行的,只有考虑在后台或者前台通过全局来进行对ajax请求超时的 处理了. 本人用的是spring security来处理的,想只通过后台来进行处理,但是尝试了很多种办法,但是一直没有成功,session一超时,前台页面就一直显示遮 罩层,只有在刷新后才能正常操作.…
public class BaseController : Controller { protected User UserInfo { set { Session["UserInfo"] = value; } get { if (Session["UserInfo"] == null) { return null; } else { return (User)Session["UserInfo"]; } } } protected overri…
开始时, 代码是这样的: $.ajax({ type : "POST", url : sSource, cache : false, dataType : "json", data : aoData, success : function(resp) { alert(11) fnCallback(resp); $.dialog.tips('数据加载完毕', 1, 'success.gif', function() { }); } }); spring-securit…
当登录的Session失效后,采用ajax请求数据时会没有反应,这时候应该自动跳转到登录页面,让用户重新登录. 全局配置以下可实现 $(function() { $.ajaxSetup({ complete:function(XMLHttpRequest,textStatus){ if(textStatus=="parsererror"){ window.location.href = '../login.html'; } else if(textStatus=="error…
当jQuery ajax向服务器发送请求,服务器发生异常,比如:400.403.404.500等异常,服务器将异常响应给客户端,此时的ajax可以获取异常信息并进行处理,但此时我们一般是跳转到与异常编码对应的异常页面,对异常集中展现与处理. 首先,发送ajax请求: $.ajax({ type: ‘POST’, url: url, data: data, success: success, dataType: dataType }); 然后,服务发生异常,将对应的异常编码响应给客户端: resp…
通常SpringMVC对异常的配置都是返回某个jsp视图给用户,但是通过ajax方式发起请求,即使发生异常,前台也无法获得任何异常提示信息.因此需要对异常进行统一的处理,对于普通请求以及ajax请求的异常都有效. 1.Spring MVC的异常处理机制 Spring MVC 通过HandlerExceptionResolver处理程序的异常,包括处理器映射,数据绑定以及处理器执行时发生的异常.HandlerExceptionResolver仅有一个接口方法: ModelAndView resol…
在登录过滤器中.推断请求是ajax请求还是超链接或者地址栏变化的请求 if (httpServletReq.getHeader("x-requested-with") != null                             && httpServletReq.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest"))              …
Laravel 解决在ajax 请求下不能保存session的问题 \Session::put('isLogin',true); // 你要保存的session key \Session::put('uid',$user->id); // 你要保存的session key \Session::save();…