Java后台判断ajax请求及处理过程详解

  

<强>一、问题描述:

  

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

  

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

  

<强>二,解决方法:

  

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

  

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

  

直接贴代码:

        进口java.io.IOException;   进口java.io.PrintWriter;      进口javax.servlet.Filter;   进口javax.servlet.FilterChain;   进口javax.servlet.FilterConfig;   进口javax.servlet.ServletException;   与javax . servlet . servletrequest进口;   进口javax.servlet.ServletResponse;   进口javax.servlet.http.HttpServletRequest;   进口javax.servlet.http.HttpServletResponse;      进口org.slf4j.Logger;   进口org.slf4j.LoggerFactory;   进口org.springframework.beans.factory.annotation.Autowired;   进口org.springframework.stereotype.Component;            @ component (“authenticationFilter”)   公共类AuthenticationFilter实现滤波器{      @ autowired   SessionContext SessionContext;      私人日志记录器=LoggerFactory.getLogger (AuthenticationFilter.class);      @Override   FilterConfig FilterConfig公共空init()抛出ServletException {      }      @Override   doFilter (ServletRequest公共无效请求,ServletResponse响应,   FilterChain链)抛出IOException ServletException {   HttpServletRequest点播=(HttpServletRequest)请求;   HttpServletResponse res=(HttpServletResponse)反应;//判断是否为ajax请求,默认不是   布尔isAjaxRequest=false;   如果(! StrUtils.isBlank (req.getHeader (“x-requested-with”)),,req.getHeader (x-requested-with) .equals (XMLHttpRequest)) {   isAjaxRequest=true;   }      SysUser SysUser=sessionContext.getSysUserFromSession(要求的);   如果(sysUser !=零,,sysUser.getUserId () !=null) {   链。doFilter(点播,res);   其他}{//会话用户为空,登录过期   如果(isAjaxRequest){//如果是ajax请求,则不是跳转页面,使用响应返回结果   res.setHeader (“noAuthentication”,“真正的”);   ResultWithObject ResultWithObject=new ResultWithObject (CC。NEGATIVE_1 CC.RESULT_MESSAGE_TEXT_DEFAULT);   resultWithObject.setMsg(“登录已失效,请刷新页面或重新登录!”);   res.setContentType (“application/json; charset=utf - 8”);   PrintWriter作家=res.getWriter ();   writer.write (JasonUtils.Object2String (resultWithObject));   writer.close ();   res.flushBuffer ();   其他}{   res.sendRedirect (“http://xxxx.com/loginUI”);   }   }   }      @Override   公共空间摧毁(){   }   }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Java后台判断ajax请求及处理过程详解