@WebFilter注解过滤和xml配置Filter过滤的执行顺序

在Servlet3.0之前我们是在xml文件中配置过滤器的,执行顺序是哪个在前面,就先执行哪个。
在3.0之后新增@WebFilter注解,该方式过滤不用去xml文件中配置就可以使用,但是配置多个Filter时,执行的先后顺序是什么呢?
而且,如果使用xml配置Filter和@WebFilter注解过滤混用的执行顺序又是怎样的呢?

在用了注解方式过滤以后,对这个问题比较好奇,通过其他网站和CSDN查找了一下,很多人都说注解方式是以类名的先后顺序排序的;但是也有部分人说按类名先后顺序并不能成功,顺序捉摸不透。

在翻找了很多文章以后,发现了比较有用的网站,大致意思就是说在servlet3.0之后,我们可以使用注解@WebFilter的方式进行配置过滤器,但是如果对过滤器顺序有严格的要求,则需要在web.xml中定义

也就是说,如果你对过滤顺序有要求,无论你是通过普通xml配置Filter还是注解过滤,都是需要到web.xml中配置,按照xml中的顺序来定义执行顺序。

代码示例

/*这里是第一个使用了注解配置的过滤器*/
@WebFilter(filterName="filterOne")
public class FilterOne implements Filter {
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
                 FilterChain chain) throws IOException, ServletException {
		System.out.println("Inside filter one.");
		chain.doFilter(request, response);
	}
	@Override
	public void destroy() {
	}
} 


/*这里是第二个使用了注解配置的过滤器*/
@WebFilter(filterName="filterTwo")
public class FilterTwo implements Filter {
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
                 FilterChain chain) throws IOException, ServletException {
		System.out.println("Inside filter two.");
		chain.doFilter(request, response);
	}
	@Override
	public void destroy() {
	}
} 

/*这里是web.xml文件*/
<web-app>
	<filter-mapping>
	    <filter-name>filterOne</filter-name>
	    <url-pattern>/msg/*</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
	    <filter-name>filterTwo</filter-name>
	    <url-pattern>/msg/*</url-pattern>
	</filter-mapping>
 </web-app>
 

参考链接:https://www.concretepage.com/java-ee/jsp-servlet/how-to-use-filter-in-servlet-3-with-webfilter-annotation


第一次写文章,如果错误,请大佬们指正,谢谢!

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值