`

spring mvc session超时,处理ajax请求

 
阅读更多
spring mvc session超时,处理ajax请求
2014-09-30  web综合  1条评论  729次浏览
原文:http://my.oschina.net/zhk/blog/323452
做web开发时,当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面。但是ajax请求就会有问题。session超时的时候,点击到ajax请求就会弹出一些页面源码文件。

首先建了个拦截器,来判断session超时。用户登录后会保存用户信息在一个session里,在session的监听里,session超时会销毁保存在session里的用户信息,而拦截器就通过session里是否有用户信息来判断session超时。

拦截器是spring-mvc的拦截器,在拦截器里判断是不是ajax请求:

public class LoginInterceptor extends HandlerInterceptorAdapter{
public boolean preHandle(HttpServletRequest request, 
            HttpServletResponse response, Object handler) throws Exception {
    Object obj = request.getSession().getAttribute(SecurityConstants.LOGIN_USER); 
        if (null == obj) { //未登录
        if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //如果是ajax请求响应头会有,x-requested-with 
            response.setHeader("sessionstatus", "timeout");//在响应头设置session状态 
        }else{
        response.sendRedirect(request.getContextPath()+"/account/login");
        } 
        return false;
        }
        return super.preHandle(request, response, handler);
}
}
这样,如果session超时,而且是ajax请求,就会在响应头里,sessionstatus有一个timeout;

再用一个全局的方法来处理,session超时要跳转的页面。

jquery 可以用$.ajaxSetup 方法,ext也有类似的方法

   $.ajaxSetup({  
       contentType:"application/x-www-form-urlencoded;charset=utf-8",  
       complete:function(XMLHttpRequest,textStatus){
         var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus, 
         if(sessionstatus=="timeout"){
        alert("登录超时,请重新登录!");
         //如果超时就处理 ,指定要跳转的页面 
           window.location.replace(webPath.webRoot + "account/login");  
         }  
          }  
     });
分享到:
评论

相关推荐

    精通Spring MVC 4

    本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...

    SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    主要介绍了SpringBoot+SpringSecurity处理Ajax登录请求问题,本文给大家介绍的非常不错,具有参考借鉴价值,需要的朋友可以参考下

    一个实用了spring mvc和ajax异步请求的例子

    一个实用了spring mvc和ajax异步请求的例子

    Spring MVC入门教程

    十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、...

    Spring MVC 教程 快速入门 深入分析

    十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作

    SpringMVCDemo:Spring MVC 框架知识案例

    1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 5.Spring MVC @ModelAttribute 注解案例 ...15.Spring MVC 异常处理案例

    最全的Spring MVC注解例子,异步请求,错误处理

    最全的Spring MVC注解例子,异步请求,错误处理,是基于maven工程,很帮的一个Spring mvc注解例子。

    SpringMVC框架架构介绍

    十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作 二十...

    Spring Boot Redis Session 共享(Ajax 跨域)

    Spring Boot 使用 Redis 进行配置 Session 共享(Ajax 跨域) 源码下载。

    基于Spring MVC接收并处理HTTP请求

    NULL 博文链接:https://ajita.iteye.com/blog/1396264

    spring mvc统一处理异常

    spring mvc统一处理异常,通过@ControllerAdvice+@ExceptionHandler

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    Spring MVC请求参数与响应结果全局加密和解密详解

    主要给大家介绍了关于Spring MVC请求参数与响应结果全局加密和解密的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    spring mvc异常处理

    spring mvc异常处理,详细参考http://blog.csdn.net/xiejx618/article/details/41918611

    spring mvc+ajax

    NULL 博文链接:https://xkorey.iteye.com/blog/726146

    Spring MVC+MyBatis开发从入门到项目实战

    第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

Global site tag (gtag.js) - Google Analytics