SpringBoot 过滤器

过滤器:

1、添加注解@WebFilter

参数解释如下:

属性名类型描述
filterNameString指定过滤器的 name 属性,等价于 <filter-name>
valueString[]该属性等价于 urlPatterns 属性。但是两者不应该同时使用。
urlPatternsString[]指定一组过滤器的 URL 匹配模式。等价于 <url-pattern> 标签。
servletNamesString[]指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 <servlet-name> 的取值。
dispatcherTypesDispatcherType指定过滤器的转发模式。具体取值包括: ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
initParamsWebInitParam[]指定一组过滤器初始化参数,等价于 <init-param> 标签。
asyncSupportedboolean声明过滤器是否支持异步操作模式,等价于 <async-supported> 标签。
descriptionString该过滤器的描述信息,等价于 <description> 标签。
displayNameString该过滤器的显示名,通常配合工具使用,等价于 <display-name> 标签。

平常使用时参数一般使用两个

@WebFilter(urlPatterns = "/*",filterName = "doTimeFilter")

urlPatterns = "/*"表示过滤根路径,

2、实现Filter接口

3、配置工具类必需注解,通过添加@Configuration或@Component,或在application启动类中配置@ServletComponentScan()指定过滤器工具类所在包路径都可以。

下面是实现一个简单地请求计时功能,过滤请求时赋值一个时间戳,在请求送达后系统时间减去时间戳获取这个请求所用时间:

@WebFilter(urlPatterns = "/*",filterName = "doTimeFilter")
@Component
public class doTimeFilter implements Filter {


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException, IOException {
        long start = System.currentTimeMillis();
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("LogFilter2 Execute cost=" + (System.currentTimeMillis() - start));
    }

    @Override
    public void destroy() {

    }
}

其中filterChain.doFilter()是在过滤器操作过后将处理完的请求发给servlet;

另外过滤器可以配置多个,多个过滤器之间可以通过注解@Order(1)设置过滤器执行顺序,参数数值越低越优先执行;如果不指定Order的话,会默认按照filterName的首字母(A、B、C...Z)进行排序;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值