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设置技巧与跨境访问优化指南

