1. import javax.servlet.*;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import javax.servlet.http.HttpSession;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Value;
  7.  
  8. import java.io.IOException;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.regex.Matcher;
  12. import java.util.regex.Pattern;
  13.  
  14. public class SessionFilter implements Filter {
  15. private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SessionFilter.class);
  16.  
  17. @Value("$(serverurl)")
  18. private String serverurl;
  19. /*
  20. * 封装,不需要过滤的list列表
  21. */
  22.  
  23. protected static List<Pattern> patterns = new ArrayList<Pattern>();
  24.  
  25. @Override
  26. public void init(FilterConfig filterConfig) throws ServletException {
  27. patterns.add(Pattern.compile("loginq.do"));
  28. patterns.add(Pattern.compile("loginh.do"));
  29. patterns.add(Pattern.compile("share.do"));
  30. patterns.add(Pattern.compile("zhuce.do"));
  31. patterns.add(Pattern.compile("huiyuan.do"));
  32. patterns.add(Pattern.compile("login.do"));
  33. patterns.add(Pattern.compile("tiaozhuan.do"));
  34. patterns.add(Pattern.compile("register.do"));
  35. patterns.add(Pattern.compile("loginy.do"));
  36. patterns.add(Pattern.compile("jiali.do"));
  37. patterns.add(Pattern.compile("main/autoFillty_rj_situation.*"));
  38. patterns.add(Pattern.compile("main/post.*"));
  39. patterns.add(Pattern.compile("main/get.*"));
  40. patterns.add(Pattern.compile(".*[(\\.js)||(\\.css)||(\\.png)||(\\.tff)]"));
  41. }
  42.  
  43. @Override
  44. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
  45. HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
  46. HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
  47. String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
  48. if (url.startsWith("/") && url.length() > ) {
  49. url = url.substring();
  50. }
  51. if (isInclude(url)){
  52. chain.doFilter(httpRequest, httpResponse);
  53. return;
  54. } else {
  55. HttpSession session = httpRequest.getSession();
  56. if (session.getAttribute("currentUser") != null){
  57. // session存在
  58. chain.doFilter(httpRequest, httpResponse);
  59. return;
  60. } else {
  61. // session不存在 准备跳转失败
  62. httpResponse.sendRedirect("/loginy.do");
  63. }
  64. }
  65. }
  66.  
  67. @Override
  68. public void destroy() {
  69.  
  70. }
  71.  
  72. /*
  73. * 是否需要过滤
  74. * @param url
  75. * @return
  76. */
  77.  
  78. private boolean isInclude(String url) {
  79. for (Pattern pattern : patterns) {
  80. Matcher matcher = pattern.matcher(url);
  81. if (matcher.matches()) {
  82. return true;
  83. }
  84. }
  85. return false;
  86. }
  87.  
  88. }

filter

在启动类里面添加

  1. /**
  2. * 配置过滤器
  3. * @return
  4. */
  5. @Bean
  6. public FilterRegistrationBean someFilterRegistration() {
  7. FilterRegistrationBean registration = new FilterRegistrationBean();
  8. registration.setFilter(sessionFilter());
  9. registration.addUrlPatterns("/*");
  10. registration.addInitParameter("paramName", "paramValue");
  11. registration.setName("sessionFilter");
  12. return registration;
  13. }
  14.  
  15. /*
  16. * 创建一个bean
  17. * @return
  18. */
  19. @Bean(name = "sessionFilter")
  20. public Filter sessionFilter() {
  21. return new SessionFilter();
  22. }
  1. registration.addUrlPatterns("/**");过滤所有请求

  1. 拦截器:
    在启动类里面添加
  1. @Bean//拦截器
  2. public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
  3. ServletRegistrationBean reg = new ServletRegistrationBean(dispatcherServlet);
  4. reg.getUrlMappings().clear();
  5. reg.addUrlMappings("*.html");
  6. reg.addUrlMappings("*.do");
  7. reg.addUrlMappings("*.js");
  8. reg.addUrlMappings("*.css");
  9. reg.addUrlMappings("*.txt");
  10. reg.addUrlMappings("*.woff");
  11. reg.addUrlMappings("*.ttf");
  12. reg.addUrlMappings("*.png");
  13. reg.addUrlMappings("*.jpg");
  14. return reg;
  15. }

springboot配置过滤器和拦截器的更多相关文章

  1. springboot环境下配置过滤器和拦截器

    以前我们在配置过滤器和拦截器的时候,都是一个类继承一个接口,然后在xml中配置一下就ok 但是,但是,这是springboot的环境,没有xml的配置.所以我们还要继续学习啊啊啊啊啊~~~~~ 先简单 ...

  2. springboot(五)过滤器和拦截器

    前言 过滤器和拦截器二者都是AOP编程思想的提现,都能实现诸如权限检查.日志记录等.二者有一定的相似之处,不同的地方在于: Filter是servlet规范,只能用在Web程序中,而拦截器是Sprin ...

  3. springboot使用过滤器和拦截器

    1.Filter过滤器 @Componentpublic class AuthFilter implements Filter { private static final Log log = Log ...

  4. SpringBoot(十一)过滤器和拦截器

    v博客前言 在做web开发的时候,过滤器(Filter)和拦截器(Interceptor)很常见,通俗的讲,过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想 ...

  5. 关于springboot中过滤器和拦截器

    在解决跨域问题中,发现拦截器和过滤器用得不是熟练.就参考了下一下两个作者的文档.希望大家也可以汲取精华 文档1   https://blog.csdn.net/moonpure/article/det ...

  6. springboot中过滤器、拦截器、切片使用

    直接贴代码:采用maven工程 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project ...

  7. springboot配置监听器、过滤器和拦截器

    监听器:listener是servlet规范中定义的一种特殊类.用于监听servletContext.HttpSession和servletRequest等域对象的创建和销毁事件.监听域对象的属性发生 ...

  8. springBoot之配置文件的读取以及过滤器和拦截器的使用

    前言 在之前的学习springBoot中,成功的实现了Restful风格的基本服务.但是想将之前的工程作为一个项目来说,那些是仅仅不够的.可能还需要获取自定义的配置以及添加过滤器和拦截器.至于为什么将 ...

  9. SpringBoot入坑指南之六:使用过滤器或拦截器

    在Web应用中,常常存在拦截全部或部分请求进行统一处理的应用场景,如权限校验.参数校验.性能监控等. 在SpringMVC框架中,我们可以通过过滤器或拦截器实现相关功能,spring-boot-sta ...

随机推荐

  1. 本地读取服务器Xml文件及本地读本地的xml

    updateUrl="ServerUrl"(服务器路径) WebClient wc = new WebClient(); Stream stream = wc.OpenRead(u ...

  2. java堆排序实现

    代码如下: public class HeapSort { public static void heapSort(DataWrap[] data) { System.out.println(&quo ...

  3. linux学习8-正则表达式基础

    正则表达式基础 实验介绍 虽然我们这一节的标题是正则表达式,但实际这一节实验只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表 ...

  4. Django——1 环境搭建

    Django 什么是Django 使用前的准备工作 新建项目 开启服务器 新建APP 简单实战 什么是Django框架 http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理.Web应 ...

  5. python基础综合题----选自python二级考试

    <笑傲江湖>是金庸的重要武侠作品之一.这里给出一个<笑傲江湖>的网络版本, 文件名为“笑傲江湖-网络版.txt”.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭ ...

  6. 【[Offer收割]编程练习赛14 C】可疑的记录

    [题目链接]:http://hihocoder.com/problemset/problem/1507 [题意] [题解] 如果多出来一个的话; 某个人的父亲节点就会变成两个 找到有两个父亲节点的人就 ...

  7. AndroidTreeView:Android树形节点View

     AndroidTreeView:Android树形节点View AndroidTreeView是github上的一个第三方开源项目,其在github上的项目主页是:https://github. ...

  8. CF #330 D2 E

    相当于给你一些点,要你最多删除不超过k,使得能使用一个边长为整数的长方形,与XY轴平行,使长方形的面积最小. 上课时拿笔来画画,然后忽然思路就开了,要是比赛也这样就好了~~先按X,Y分别排序,由于K较 ...

  9. springmvc 时间返回格式化

    如果是@ResponseBody,可以通过@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")设置返回的样式: 如果是不是@ResponseBody ...

  10. Android游戏框架Libgdx使用入门

    转载自:http://blog.csdn.net/cping1982/article/details/6176191 Libgdx作者博客:http://www.badlogicgames.com/ ...