Filter在Web应用中是一个很常见的组件,在Spring应用中Filter的创建方式有最简单和常用的方式有两种(可能还有其他,若有其他优秀的创建方式,欢迎交流学习):
- 实现javax.servlet.Filter接口
- 继承org.springframework.web.filter.OncePerRequestFilter类
在传统Web应用中,每个Web应用都有一个web.xml文件,方便我们配置各种Servlet、Filter、Listener等。在SpringBoot应用中大多推崇零XML配置的方式,所以在没有web.xml的情况下如何配置Filter呢?这里先介绍使用@WebFilter注解配置的方式。
- 采用继承org.springframework.web.filter.OncePerRequestFilter的方式创建一个Filter
package com.jackson.spring.boot.filters;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
@WebFilter(urlPatterns = {"/*"})
@Order(value = 2)
@Slf4j
public class UrlFilter extends OncePerRequestFilter {
@Ove