后台增加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.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;import cn.zsmy.constant.Constant;
import cn.zsmy.entity.User;/** * session超时过滤 *  * @date 2016-10-20*/
public class SessionFilter implements Filter {  @Override  public void init(FilterConfig filterConfig) throws ServletException {  }  @Override  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,  ServletException {  HttpServletRequest httpServletRequest = (HttpServletRequest) request;  HttpServletResponse httpServletResponse = (HttpServletResponse) response;  //只过滤了ajax请求时session超时if (httpServletRequest.getHeader("x-requested-with") != null  && httpServletRequest.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {  Subject subject = SecurityUtils.getSubject();User user = (User) subject.getPrincipal();if(user == null){Constant.MY_LOG.debug("filter:sessionstatus timeout!");//如果是ajax请求响应头会有,x-requested-with  httpServletResponse.setHeader("sessionstatus", "timeout");//在响应头设置session状态  return;  }} chain.doFilter(request, response);  }  @Override  public void destroy() {  }  } 

web.xml加入过滤器配置,注意不要把druid也屏蔽了,url-pattern可以指定过滤的东西

<!--session超时过滤处理 --><filter><filter-name>sessionFilter</filter-name><filter-class>cn.zsmy.palmdoctor.filter.SessionFilter</filter-class></filter><filter-mapping><filter-name>sessionFilter</filter-name><!-- <url-pattern>/*</url-pattern> --><url-pattern>*.do</url-pattern></filter-mapping>

在公共的js文件中加入以下全局控制ajax的配置

<c:set var="appPath" value="<%=request.getContextPath()%>"/>

<script type="text/javascript">
$(function(){$.ajaxSetup ({cache: false, //关闭AJAX缓存async:false, //同步请求contentType:"application/x-www-form-urlencoded;charset=utf-8",  complete:function(XMLHttpRequest,textStatus){  //通过XMLHttpRequest取得响应头,sessionstatus,  var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus");   if(sessionstatus=="timeout"){  alert("由于您长时间未操作,登录已失效,请重新登录");parent.location.href = "${appPath}/login.do";}  }  });
});
</script> 

java Servlet Filter 拦截Ajax请求,统一处理session超时的问题相关推荐

  1. java servlet ajax_javaweb中ajax请求后台servlet(实例)

    废话不多说,直接上代码 public class DZFP_jdbc extends HttpServlet{ private static final long serialVersionUID = ...

  2. session会话拦截ajax,session过期,拦截ajax请求并跳转登录页面

    1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...

  3. java nodefilter类,Java Servlet Filter过滤器概述

    Java Servlet Filter过滤器概述 Filter是Servlet的过滤器,是Servlet 2.3规范中新增加的一个功能,主要用于完成一些通用的操作,如编码的过滤.判断用户的登录状态等. ...

  4. android 拦截webview资源请求,Android Webview拦截ajax请求

    Androi基接我果控近础收们,制近础收们,制近础收d Webview虽然提供了页面加载及资源请求的钩子,但是对于h5的ajax请求并没有提供干涉的接口,这意味着我们不能在webview中干涉java ...

  5. Java+Servlet+filter+javascript+html+jsp登入注册更新个人信息

    eclipse+Java+Servlet+filter+javascript+html+jsp+EL登入注册更新个人信息 数据库sql用vs2008或者mysql用mysql 代码粗糙,提示信息未处理 ...

  6. 拦截ajax的请求,拦截ajax请求

    拦截ajax请求 内容精选 换一换 防护网站接入WAF后,您可以通过配置黑白名单规则或精准访问防护规则,使WAF仅允许指定IP访问防护网站,即WAF拦截除指定IP外的所有来源IP.例如,如果您需要放行 ...

  7. 爱上MVC~ajax调用分部视图session超时页面跳转问题

    这个问题出现了很多年了,都没有解决,问题是这样的,有一个需要授权才可以访问的分部视图,在一个view中使用ajax的方法去调用它,然后更新页面的局部DIV,这时,如果你长时间不操作,session会超 ...

  8. SSM拦截ajax请求判断session过期

    项目使用ssm作为后台框架,需要在后台判断session是否过期,并跳转登录页. 1.定义一个filter,拦截所有的请求. package com.acat.filter;import javax. ...

  9. Java Servlet Filter

    做web开发的人对于Filter应该不会陌生,一直在很简单的使用,但是一直没有系统的总结一下,随着年纪的慢慢长大,喜欢总结一些事情,下面说说我对Filter的理解,官方给出的Filter的定义是在请求 ...

最新文章

  1. 关于学习Python的一点学习总结(22->相关的迭代操作)
  2. react-dnd中context丢失解决方法
  3. Linux_NetworkManager_RHEL7
  4. QT判断该文件是否存在
  5. Ansible基本命令
  6. C++primer拾遗(第八章:IO库)
  7. mysql内存数据库性能_Mysql内存表配置及性能测试
  8. php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery
  9. 编写高质量javascript代码的基本要点
  10. static和const关键字
  11. win7 exfat补丁_U盘重装win7系统后必不可少的几大优化
  12. 手写minist的DataLoader
  13. DeepSort轨迹跟踪方法
  14. display属性详解
  15. 封装802.1Q与 ISL的区别
  16. MySql 如何查询某一天内的数据
  17. 查找整数 本题要求从输入的N个整数中查找给定的X
  18. Leetcode-数据结构-217. 存在重复元素
  19. matlab 清除命令,清空工作区代码,关闭所有窗口
  20. php简单的商城系统,DouPHP轻量级商城管理系统

热门文章

  1. java spring maven pdf 导出
  2. 统计的一个小题目python实现
  3. Scala学习 day01 Scala的类/方法/对象/单例对象
  4. You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
  5. Aix netstat命令解析
  6. 甲骨文:正在从SAP手中赢得应用产品市场份额
  7. .net中实现拖拽控件
  8. 剑指offer 算法 (抽象建模能力)
  9. TOPCODER SAM 686 div1 300
  10. Mschat控件示例升级错误处理方法