Java Web中Filter的调用顺序

       在有些场景中需要指定过滤器的调用顺序,以达到对应的需求,比如编码过滤器和安全认证过滤器,一般情况下编码过滤器先被调用,然后是安全认证过滤器,这样的顺序保证可以使用正确的编码。那么过滤器的调用顺序和什么有关呢?

       Java Web中的过滤器有两种配置方式,在web.xml配置和注解的形式配置。

       一、在web.xml中配置Filter的调用顺序

       看下面的例子:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>com.gyb.javaee.web.filter.CharacterEncodingFilter</filter-class>
    </filter>
    <filter>
        <filter-name>authenFilter</filter-name>
        <filter-class>com.gyb.javaee.web.filter.AuthenticationFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>authenFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

在这个web.xml中配置了两个过滤器 authenFilter和characterEncodingFilter,servlet容器首先会调用characterEncodingFilter,然后再调用authenFilter方法。这个调用顺序是和Filter的filter-mapping的配置有关,调用顺序从上到下,也就是说上面的配置先于下面的先调用,和filter配置的顺序无关

二、使用@WebFilter注解配置的Filter的调用顺序

      暂时不能确定顺序(没找到规律!查看Servlet规范也没找到相关的文档说明。若有大佬知道,请留言,谢谢!)。。。

三、使用web.xml和@WebFilter注解混合配置Filter

      暂时不能确定顺序(没找到规律!查看Servlet规范也没找到相关的文档说明。若有大佬知道,请留言,谢谢!)。。。

    

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值