Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

©Copyright 蕃薯耀 2017年8月10日

http://www.cnblogs.com/fanshuyao/

一、问题描述:

当访问一个需要登录的页面时,会有过滤器或者拦截器进行过滤拦截,如果用户没有登录,则跳转到登录页面。

当用户已经登录进入系统后,然后长时间没操作,等到session过期后,再点击一个ajax请求操作时,这时再跳转到登录页面就不合适了,因为这是ajax操作,拦截后跳到页面返回的结果js识别不了。

二、解决方法:

在过滤器或者拦截器上做识别,针对页面跳转请求和ajax请求分别处理。

页面跳转的不再详说,现在说的是ajax请求。

直接贴代码:

  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import javax.servlet.Filter;
  4. import javax.servlet.FilterChain;
  5. import javax.servlet.FilterConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Component;
  15. @Component("authenticationFilter")
  16. public class AuthenticationFilter implements Filter {
  17. @Autowired
  18. SessionContext sessionContext;
  19. private Logger log = LoggerFactory.getLogger(AuthenticationFilter.class);
  20. @Override
  21. public void init(FilterConfig filterConfig) throws ServletException {
  22. }
  23. @Override
  24. public void doFilter(ServletRequest request, ServletResponse response,
  25. FilterChain chain) throws IOException, ServletException {
  26. HttpServletRequest req = (HttpServletRequest)request;
  27. HttpServletResponse res = (HttpServletResponse) response;
  28. //判断是否为ajax请求,默认不是
  29. boolean isAjaxRequest = false;
  30. if(!StrUtils.isBlank(req.getHeader("x-requested-with")) && req.getHeader("x-requested-with").equals("XMLHttpRequest")){
  31. isAjaxRequest = true;
  32. }
  33. SysUser sysUser = sessionContext.getSysUserFromSession(req);
  34. if (sysUser != null && sysUser.getUserId() != null) {
  35. chain.doFilter(req, res);
  36. }else{//Session用户为空,登录过期
  37. if(isAjaxRequest){// 如果是ajax请求,则不是跳转页面,使用response返回结果
  38. res.setHeader("noAuthentication", "true");
  39. ResultWithObject resultWithObject = new ResultWithObject(CC.NEGATIVE_1, CC.RESULT_MESSAGE_TEXT_DEFAULT);
  40. resultWithObject.setMsg("登录已失效,请刷新页面或重新登录!");
  41. res.setContentType("application/json;charset=UTF-8");
  42. PrintWriter writer = res.getWriter();
  43. writer.write(JasonUtils.Object2String(resultWithObject));
  44. writer.close();
  45. res.flushBuffer();
  46. }else{
  47. res.sendRedirect("http://xxxx.com/loginUI");
  48. }
  49. }
  50. }
  51. @Override
  52. public void destroy() {
  53. }
  54. }

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

©Copyright 蕃薯耀 2017年8月10日

http://www.cnblogs.com/fanshuyao/

Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求的更多相关文章

  1. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求   Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...

  2. Java 过滤器Filter,Java Filter 不拦截某些请求 Java 过滤器支持Ajax请求

    ================================ ©Copyright 蕃薯耀 2020-01-10 https://www.cnblogs.com/fanshuyao/ 一.Java ...

  3. Java过滤器与SpringMVC拦截器的差异学习笔记

    学习摘录地址:http://blog.csdn.net/chenleixing/article/details/44573495 今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了 ...

  4. java 过滤器(Filter)与springMVC 拦截器(interceptor)的实现案例

    java 过滤器Filter: package com.sun.test.aircraft.filter;import javax.servlet.*;import java.io.IOExcepti ...

  5. Java过滤器(Filter)与SpringMVC拦截器(Interceptor)之间的关系与区别

    过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求起作用,而过滤 ...

  6. java过滤器、监听器、拦截器机制

    一.过滤器 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ...

  7. JAVA过滤器与SpringMVC拦截器之间的区别

    今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊, 而且看的比较粗浅,没有一个全局而又细致的认识,由于已至 ...

  8. Java过滤器与SpringMVC拦截器之间的关系与区别

    今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深 ...

  9. Java过滤器,SpringMVC拦截器之间的一顺序点关系

    由于最近做的项目中有一部分是接口远程调用,用到了接入权限和业务权限的鉴定,需要采用SpringMVC的拦截器,以前用Struts2的时候用过拦截器,而SpringMVC的拦截器功能之前没研究过,所以这 ...

随机推荐

  1. 安装Dubbo管理控制台

    样例参考视频:http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd Dubbo管控台可以对注册到zookeeper注册中 ...

  2. js禁止选中(网页复制)

    document.onselectstart=new Function("event.returnValue=false");//禁止选中(无法复制) document.oncon ...

  3. 【Android Developers Training】 40. 序言:通过NFC共享文件

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. Latex加速: TexStudio的安装和使用

    TexStudio可以加速Latex的编辑和写作,这里简单介绍一下TexStudio的安装,配置和使用.但是有一个重要的前提,TexStudio会使Latex源代码和pdf文件并排显示,比较占用桌面的 ...

  5. 使用Scribefire在博客中插入语法高亮 II

    效果如下, 这是我们在Scribefire中添加的code按钮,单击此按钮,则会出现 在codeHere中直接输入代码就可以了. 查看html 可以看到,其中已经添加了<pre>标签. 下 ...

  6. Ionic开发笔记

    Ionic 开发笔记 记录开发中遇到的一些问题 ion-side-menu,使所有顶部导航标题居中 <!-- 添加 align-title="center" 使顶部导航标题居 ...

  7. tomcat+jdk+mysql

    转自 http://www.cnblogs.com/liulinghua90/ ,写的很详细,转来共享私藏 按照下面的步骤一步一步来搭建tomcat+jdk+mysql环境.   [Linux环境]- ...

  8. AT&T汇编helloworld

    摘自:http://blog.163.com/guixl_001/blog/static/417641042012112102642703/ 代码: #hello.s .data # 数据段声明 ms ...

  9. Selenium的简单安装和使用

    Selenium的安装 pip install selenium Selenium模块需要调用浏览器,需要配置selenium的浏览器驱动 Firefox(火狐) 下载对应版本的geckdriver. ...

  10. jQuery扩展方法笔记

    一.方式列表: 1.jQuery.extend(Object); // jQuery 本身的扩展方法 2.jQuery.fn.extend(Object); // jQuery 所选对象扩展方法 二. ...