1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 判断请求为 ajax请求_Java过滤器处理Ajax请求 Java拦截器处理Ajax请求 java

java 判断请求为 ajax请求_Java过滤器处理Ajax请求 Java拦截器处理Ajax请求 java

时间:2021-01-31 18:27:35

相关推荐

java 判断请求为 ajax请求_Java过滤器处理Ajax请求 Java拦截器处理Ajax请求 java

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

java 判断请求是不是ajax请求,Java判断是否为ajax请求

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

©Copyright蕃薯耀 8月10日

/fanshuyao/

一、问题描述:

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

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

二、解决方法:

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

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

直接贴代码:

Java代码

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.ponent;

@Component("authenticationFilter")

publicclassAuthenticationFilterimplementsFilter{

@Autowired

SessionContextsessionContext;

privateLoggerlog=LoggerFactory.getLogger(AuthenticationFilter.class);

@Override

publicvoidinit(FilterConfigfilterConfig)throwsServletException{

}

@Override

publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,

FilterChainchain)throwsIOException,ServletException{

HttpServletRequestreq=(HttpServletRequest)request;

HttpServletResponseres=(HttpServletResponse)response;

//判断是否为ajax请求,默认不是

booleanisAjaxRequest=false;

if(!StrUtils.isBlank(req.getHeader("x-requested-with"))&&req.getHeader("x-requested-with").equals("XMLHttpRequest")){

isAjaxRequest=true;

}

SysUsersysUser=sessionContext.getSysUserFromSession(req);

if(sysUser!=null&&sysUser.getUserId()!=null){

chain.doFilter(req,res);

}else{//Session用户为空,登录过期

if(isAjaxRequest){//如果是ajax请求,则不是跳转页面,使用response返回结果

res.setHeader("noAuthentication","true");

ResultWithObjectresultWithObject=newResultWithObject(CC.NEGATIVE_1,CC.RESULT_MESSAGE_TEXT_DEFAULT);

resultWithObject.setMsg("登录已失效,请刷新页面或重新登录!");

res.setContentType("application/json;charset=UTF-8");

PrintWriterwriter=res.getWriter();

writer.write(JasonUtils.Object2String(resultWithObject));

writer.close();

res.flushBuffer();

}else{

res.sendRedirect("/loginUI");

}

}

}

@Override

publicvoiddestroy(){

}

}

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

©Copyright蕃薯耀 8月10日

/fanshuyao/

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。