java Servlet Filter 拦截Ajax请求,统一处理session超时的问题
后台增加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超时的问题相关推荐
- java servlet ajax_javaweb中ajax请求后台servlet(实例)
废话不多说,直接上代码 public class DZFP_jdbc extends HttpServlet{ private static final long serialVersionUID = ...
- session会话拦截ajax,session过期,拦截ajax请求并跳转登录页面
1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...
- java nodefilter类,Java Servlet Filter过滤器概述
Java Servlet Filter过滤器概述 Filter是Servlet的过滤器,是Servlet 2.3规范中新增加的一个功能,主要用于完成一些通用的操作,如编码的过滤.判断用户的登录状态等. ...
- android 拦截webview资源请求,Android Webview拦截ajax请求
Androi基接我果控近础收们,制近础收们,制近础收d Webview虽然提供了页面加载及资源请求的钩子,但是对于h5的ajax请求并没有提供干涉的接口,这意味着我们不能在webview中干涉java ...
- Java+Servlet+filter+javascript+html+jsp登入注册更新个人信息
eclipse+Java+Servlet+filter+javascript+html+jsp+EL登入注册更新个人信息 数据库sql用vs2008或者mysql用mysql 代码粗糙,提示信息未处理 ...
- 拦截ajax的请求,拦截ajax请求
拦截ajax请求 内容精选 换一换 防护网站接入WAF后,您可以通过配置黑白名单规则或精准访问防护规则,使WAF仅允许指定IP访问防护网站,即WAF拦截除指定IP外的所有来源IP.例如,如果您需要放行 ...
- 爱上MVC~ajax调用分部视图session超时页面跳转问题
这个问题出现了很多年了,都没有解决,问题是这样的,有一个需要授权才可以访问的分部视图,在一个view中使用ajax的方法去调用它,然后更新页面的局部DIV,这时,如果你长时间不操作,session会超 ...
- SSM拦截ajax请求判断session过期
项目使用ssm作为后台框架,需要在后台判断session是否过期,并跳转登录页. 1.定义一个filter,拦截所有的请求. package com.acat.filter;import javax. ...
- Java Servlet Filter
做web开发的人对于Filter应该不会陌生,一直在很简单的使用,但是一直没有系统的总结一下,随着年纪的慢慢长大,喜欢总结一些事情,下面说说我对Filter的理解,官方给出的Filter的定义是在请求 ...
最新文章
- 关于学习Python的一点学习总结(22->相关的迭代操作)
- react-dnd中context丢失解决方法
- Linux_NetworkManager_RHEL7
- QT判断该文件是否存在
- Ansible基本命令
- C++primer拾遗(第八章:IO库)
- mysql内存数据库性能_Mysql内存表配置及性能测试
- php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery
- 编写高质量javascript代码的基本要点
- static和const关键字
- win7 exfat补丁_U盘重装win7系统后必不可少的几大优化
- 手写minist的DataLoader
- DeepSort轨迹跟踪方法
- display属性详解
- 封装802.1Q与 ISL的区别
- MySql 如何查询某一天内的数据
- 查找整数 本题要求从输入的N个整数中查找给定的X
- Leetcode-数据结构-217. 存在重复元素
- matlab 清除命令,清空工作区代码,关闭所有窗口
- php简单的商城系统,DouPHP轻量级商城管理系统
热门文章
- java spring maven pdf 导出
- 统计的一个小题目python实现
- Scala学习 day01 Scala的类/方法/对象/单例对象
- You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
- Aix netstat命令解析
- 甲骨文:正在从SAP手中赢得应用产品市场份额
- .net中实现拖拽控件
- 剑指offer 算法 (抽象建模能力)
- TOPCODER SAM 686 div1 300
- Mschat控件示例升级错误处理方法