Servlet的过滤器Filter(一)

  1. 一、使浏览器不缓存页面的过滤器   
  2. import javax.servlet.*;   
  3. import javax.servlet.http.HttpServletResponse;   
  4. import java.io.IOException;   
  5.   
  6. /**
  7. * 用于使 Browser 不缓存页面的过滤器
  8. */  
  9. public class ForceNoCacheFilter implements Filter {   
  10.   
  11. public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException   
  12. {   
  13.     ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");   
  14.     ((HttpServletResponse) response).setHeader("Pragma","no-cache");   
  15.     ((HttpServletResponse) response).setDateHeader ("Expires", -1);   
  16.     filterChain.doFilter(request, response);   
  17. }   
  18.   
  19. public void destroy()   
  20. {   
  21. }   
  22.   
  23. public void init(FilterConfig filterConfig) throws ServletException   
  24. {   
  25. }   
  26. }   
  27.   
  28. 二、检测用户是否登陆的过滤器   
  29.   
  30. import javax.servlet.*;   
  31. import javax.servlet.http.HttpServletRequest;   
  32. import javax.servlet.http.HttpServletResponse;   
  33. import javax.servlet.http.HttpSession;   
  34. import java.util.List;   
  35. import java.util.ArrayList;   
  36. import java.util.StringTokenizer;   
  37. import java.io.IOException;   
  38.   
  39. /**
  40. * 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指定的登录页面
  41. * 配置参数
  42. * checkSessionKey 需检查的在 Session 中保存的关键字
  43. * redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath
  44. * notCheckURLList 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath
  45. */  
  46. public class CheckLoginFilter   
  47. implements Filter   
  48. {   
  49.      protected FilterConfig filterConfig = null;   
  50.      private String redirectURL = null;   
  51.      private List notCheckURLList = new ArrayList();   
  52.      private String sessionKey = null;   
  53.   
  54. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException   
  55. {   
  56.     HttpServletRequest request = (HttpServletRequest) servletRequest;   
  57.     HttpServletResponse response = (HttpServletResponse) servletResponse;   
  58.   
  59.      HttpSession session = request.getSession();   
  60.    if(sessionKey == null)   
  61.     {   
  62.      filterChain.doFilter(request, response);   
  63.     return;   
  64.     }   
  65.    if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)   
  66.     {   
  67.      response.sendRedirect(request.getContextPath() + redirectURL);   
  68.     return;   
  69.     }   
  70.     filterChain.doFilter(servletRequest, servletResponse);   
  71. }   
  72.   
  73. public void destroy()   
  74. {   
  75.     notCheckURLList.clear();   
  76. }   
  77.   
  78. private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)   
  79. {   
  80.     String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());   
  81.    return notCheckURLList.contains(uri);   
  82. }   
  83.   
  84. public void init(FilterConfig filterConfig) throws ServletException   
  85. {   
  86.    this.filterConfig = filterConfig;   
  87.     redirectURL = filterConfig.getInitParameter("redirectURL");   
  88.     sessionKey = filterConfig.getInitParameter("checkSessionKey");   
  89.   
  90.     String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");   
  91.   
  92.    if(notCheckURLListStr != null)   
  93.     {   
  94.      StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");   
  95.      notCheckURLList.clear();   
  96.     while(st.hasMoreTokens())   
  97.      {   
  98.       notCheckURLList.add(st.nextToken());   
  99.      }   
  100.     }   
  101. }   
  102. }   
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值