SpringMVC的Filter过滤器

本文介绍了SpringMVC中的Filter功能,包括其工作原理、FilterConfig类的作用、FilterChain的执行顺序以及拦截路径设置。重点讲解了AuthFilter的实现和生命周期管理。
摘要由CSDN通过智能技术生成

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

一、概念

根据尚硅谷视频整理的资料
在这里插入图片描述

// 和Servlet的过滤器功能一样,只是采用了代理,将AuthFilter这个Bean注册到Spring处理了,web.xml要专门配置。
@Component
public class AuthFilter implements Filter {
	@Autowired
	UserService userService;

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
	throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		// 获取Authorization头:
		String authHeader = req.getHeader("Authorization");
		if (authHeader != null && authHeader.startsWith("Basic ")) {
			// 从Header中提取email和password:
			String email = prefixFrom(authHeader);
			String password = suffixFrom(authHeader);
			// 登录:
			User user = userService.signin(email, password);
			// 放入Session:
			req.getSession().setAttribute(UserController.KEY_USER, user);
		}
		// 继续处理请求:
		chain.doFilter(request, response);
	}
}

二、生命周期

在这里插入图片描述

三、FilterConfig类

在这里插入图片描述

四、FilterChain

在这里插入图片描述

执行顺序和类名没有关系
在这里插入图片描述

五、Filter的拦截路径

在这里插入图片描述
给所有方法统一加try catch
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringMVC中的过滤器(Filter)是一种拦截器,用于在请求被分派到处理程序之前或响应被发送到客户端之前对请求和响应进行预处理和后处理。它可以用于实现一些通用的功能,例如日志记录、安全性、性能监控等。 在SpringMVC中,过滤器的实现方式与Servlet中的过滤器类似。SpringMVC过滤器实现类必须实现javax.servlet.Filter接口,并且需要在web.xml文件中进行配置。例如: ``` <filter> <filter-name>myFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> ``` 上面的配置定义了一个名为myFilter过滤器,并将其映射到所有请求路径上。在实现MyFilter类时,可以在doFilter()方法中实现自定义的过滤器逻辑。 过滤器的执行顺序与在web.xml文件中定义的顺序有关,先定义的过滤器先执行。另外,SpringMVC还提供了一种更便捷的方式来配置过滤器,即使用注解@Order来指定过滤器的执行顺序。例如: ``` @Component @Order(1) public class MyFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 过滤器逻辑 } } ``` 上面的配置定义了一个名为MyFilter过滤器,并使用@Order(1)指定了它的执行顺序。可以通过更改@Order的值来改变过滤器的执行顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝影铁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值