加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

解决ajax请求filter重定向失败

发布时间:2020-12-16 03:14:20 所属栏目:百科 来源:网络整理
导读:解决ajax请求filter重定向失败 原创 2016年11月28日 18:33:48 3237 参考引用方法 在新项目写了一个filter,能拦截jsp,.action的请求,但是ajax的请求可以拦截不能实现重写向登录页面。这是一个bug呀! 参考以上引用的方法,解决了。 ajax重定向的问题。 默认

解决ajax请求filter重定向失败

原创 2016年11月28日 18:33:48


参考引用方法

在新项目写了一个filter,能拦截jsp,.action的请求,但是ajax的请求可以拦截不能实现重写向登录页面。这是一个bug呀!

参考以上引用的方法,解决了。

ajax重定向的问题。

默认ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的。如果需要用到重定向可以通过以下方法:

第一步:filter

[java] view plain copy
  1. publicclassAgentLoginFilterextendsHttpServletimplementsFilter{
  2. privatestaticfinalLoglog=LogFactory.getLog(AgentLoginFilter.class);
  3. @Override
  4. voidinit(FilterConfigfilterConfig)throwsServletException{
  5. }
  6. voiddoFilter(ServletRequestsRequest,ServletResponsesResponse,FilterChainfilterChain)
  7. throwsIOException,ServletException{
  8. HttpServletRequestrequest=(HttpServletRequest)sRequest;
  9. HttpServletResponseresponse=(HttpServletResponse)sResponse;
  10. HttpSessionsession=request.getSession();
  11. Stringurl=request.getServletPath();
  12. StringcontextPath=request.getContextPath();
  13. Stringtype=request.getHeader("X-Requested-With")==null?"":request.getHeader("X-Requested-With");//XMLHttpRequest
  14. StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+contextPath+"/";
  15. if(url.equals("")){
  16. url+="/agent";
  17. }
  18. booleanisHasLogin=AgentSessionHelper.getHasLogined(request.getSession());
  19. if(!isHasLogin){
  20. if((url.startsWith("/agent")&&!url.startsWith("/agent/login/YSAgentLoginAction/login.action"))
  21. &&!url.startsWith("/agent/agentLogin.jsp")){
  22. if(StringUtils.equals("XMLHttpRequest",type)){
  23. //处理ajax请求
  24. response.setHeader("SESSIONSTATUS","TIMEOUT");
  25. "CONTEXTPATH",basePath+"agent/agentLogin.jsp");
  26. response.setStatus(HttpServletResponse.SC_FORBIDDEN);
  27. return;
  28. }else{
  29. response.sendRedirect(contextPath+"/agent/agentLogin.jsp");
  30. return;
  31. else{
  32. if(url.startsWith("/agent/agentIndex.jsp");
  33. filterChain.doFilter(sRequest,sResponse);
  34. }

第二步:在公共js 中写入

通过$.ajaxSetup()方法给ajax方法统一添加请求执行结束后,执行的操作。

[javascript] copy
    $.ajaxSetup({
  1. //设置ajax请求结束后的执行动作
  2. complete:
  3. function(XMLHttpRequest,textStatus){
  4. //通过XMLHttpRequest取得响应头,sessionstatus
  5. varsessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus");
  6. if(sessionstatus=="TIMEOUT"){
  7. varwin=window;
  8. while(win!=win.top){
  9. win=win.top;
  10. win.location.href=XMLHttpRequest.getResponseHeader("CONTEXTPATH");
  11. });



  • u013997090

    2017-08-17 19:141楼
  • 很好,解决了我的问题

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读