spring boot 配置Filter过滤器的方法

发布时间 - 2026-01-11 00:23:28    点击率:

Filter 过滤器是web开发中很重要的一个组件,下面以一个session登陆的例子介绍下spring boot中如何使用Filter

首先要准备一个实现了Filter的接口的类 SessionFilter:

import org.slf4j.LoggerFactory;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by mazhenhua on 2016/12/27.
 *
 * 过滤器
 */
public class SessionFilter implements Filter {
  private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SessionFilter.class);


  /**
   * 封装,不需要过滤的list列表
   */
  protected static List<Pattern> patterns = new ArrayList<Pattern>();

  @Override
  public void init(FilterConfig filterConfig) throws ServletException {

  }

  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
    HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
    logger.info("aaaaaaaaaa");
    String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
    if (url.startsWith("/") && url.length() > 1) {
      url = url.substring(1);
    }

    if (isInclude(url)){
      chain.doFilter(httpRequest, httpResponse);
      return;
    } else {
      HttpSession session = httpRequest.getSession();
      if (session.getAttribute("") != null){
        // session存在
        chain.doFilter(httpRequest, httpResponse);
        return;
      } else {
        // session不存在 准备跳转失败
        /* RequestDispatcher dispatcher = request.getRequestDispatcher(path);
          dispatcher.forward(request, response);*/
        chain.doFilter(httpRequest, httpResponse);
        return;
      }
    }


  }

  @Override
  public void destroy() {

  }


  /**
   * 是否需要过滤
   * @param url
   * @return
   */
  private boolean isInclude(String url) {
    for (Pattern pattern : patterns) {
      Matcher matcher = pattern.matcher(url);
      if (matcher.matches()) {
        return true;
      }
    }
    return false;
  }

}

实际开发中往往有很多请求要直接请求进来,不需要鉴权登陆的,所以代码中过滤掉这种请求的代码,装进list就好了。

  /**
   * 配置过滤器
   * @return
   */
  @Bean
  public FilterRegistrationBean someFilterRegistration() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(sessionFilter());
    registration.addUrlPatterns("/*");
    registration.addInitParameter("paramName", "paramValue");
    registration.setName("sessionFilter");
    return registration;
  }

  /**
   * 创建一个bean
   * @return
   */
  @Bean(name = "sessionFilter")
  public Filter sessionFilter() {
    return new SessionFilter();
  }

经过上面这俩步的配置,过滤器基本上就可以了。

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


# springboot配置filter  # spring  # boot  # 过滤器  # springboot  # filter  # Spring Boot的filter(过滤器)简单使用实例详解  # spring boot过滤器FilterRegistrationBean实现方式  # Spring Boot使用过滤器Filter过程解析  # springboot @WebFilter注解过滤器的实现  # Spring Boot之过滤器 Filter注入的方式解析  # Spring Boot Filter 过滤器的使用方式  # 不需要  # 装进  # 有很多  # 不存在  # 跳转  # 如何使用  # 创建一个  # 大家多多  # 就可以  # 中很  # 实现了  # 这俩  # 过滤掉  # 就好了  # implements  # public  # private  # Pattern  # Matcher  # Created 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 佛山企业网站制作公司有哪些,沟通100网上服务官网?  韩国服务器如何优化跨境访问实现高效连接?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  高防服务器:AI智能防御DDoS攻击与数据安全保障  三星、SK海力士获美批准:可向中国出口芯片制造设备  javascript中的try catch异常捕获机制用法分析  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Linux网络带宽限制_tc配置实践解析【教程】  桂林网站制作公司有哪些,桂林马拉松怎么报名?  微信小程序 闭包写法详细介绍  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何在IIS中新建站点并配置端口与IP地址?  微信小程序 scroll-view组件实现列表页实例代码  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Internet Explorer官网直接进入 IE浏览器在线体验版网址  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  网站制作企业,网站的banner和导航栏是指什么?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在宝塔面板创建新站点?  详解Android图表 MPAndroidChart折线图  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Laravel如何生成URL和重定向?(路由助手函数)  Laravel如何创建自定义Artisan命令?(代码示例)  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  EditPlus中的正则表达式 实战(1)  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何在阿里云完成域名注册与建站?  Laravel如何使用Livewire构建动态组件?(入门代码)  如何在Windows环境下新建FTP站点并设置权限?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  网站制作壁纸教程视频,电脑壁纸网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Android实现代码画虚线边框背景效果  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  动图在线制作网站有哪些,滑动动图图集怎么做?  如何在IIS中新建站点并解决端口绑定冲突?  高防服务器如何保障网站安全无虞?  如何破解联通资金短缺导致的基站建设难题?  什么是javascript作用域_全局和局部作用域有什么区别?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南