Java 除了在web.xml中声明过滤器外,还有什么方法可以指定过滤器的顺序?

Java 除了在web.xml中声明过滤器外,还有什么方法可以指定过滤器的顺序?,java,web.xml,servlet-filters,servlet-3.0,Java,Web.xml,Servlet Filters,Servlet 3.0,从Servlet3.0开始,我们现在可以通过注释()或动态(通过对象)声明web过滤器 我知道使用@WebFilter不允许指定过滤器顺序。类似地,在通过方法动态声明时,我也没有找到任何方法来指定顺序。我已经查看了FilterRegistration对象,但是那里也没有任何内容 这是否意味着指定过滤器链中过滤器顺序的唯一方法是通过web.xml?是否没有其他可用的机制?这不是Servlet 3.0+的一个重大疏忽吗 通过注释或通过ServletContext对象声明的过滤器在链中的何处?在web

从Servlet3.0开始,我们现在可以通过注释()或动态(通过对象)声明web过滤器

我知道使用@WebFilter不允许指定过滤器顺序。类似地,在通过方法动态声明时,我也没有找到任何方法来指定顺序。我已经查看了FilterRegistration对象,但是那里也没有任何内容

这是否意味着指定过滤器链中过滤器顺序的唯一方法是通过web.xml?是否没有其他可用的机制?这不是Servlet 3.0+的一个重大疏忽吗

通过注释或通过ServletContext对象声明的过滤器在链中的何处?在web.xml中声明的那些内容的末尾?未定义

这是否意味着指定过滤器链中过滤器顺序的唯一方法是通过web.xml

对。检查以下部分:

  • 4.4.2以编程方式添加和配置过滤器

  • 6.2.4 Web应用程序中过滤器的配置

  • 8.1.2@WebFilter

第6.2.4节中提到了过滤器排序的唯一地方,它指定了如何使用web.xmladdFilter()@WebFilter的章节中未提及排序

是否没有其他可用的机制

Servlet3.0规范中没有,所以没有

这不是Servlet 3.0+的一个重大疏忽吗

我怀疑这一遗漏是“疏忽”。BalusC的评论是,这提供了一个没有替代机制的合理原因:如果您的webapp附带了包含过滤器的第三方库,该怎么办?事先很难说出它的顺序

通过注释或通过ServletContext对象声明的过滤器在链中的何处?在web.xml中声明的那些内容的末尾? 未定义

由于规范没有解决这些场景,因此顺序必然是未定义的

这是否意味着指定过滤器链中过滤器顺序的唯一方法是通过web.xml

对。检查以下部分:

  • 4.4.2以编程方式添加和配置过滤器

  • 6.2.4 Web应用程序中过滤器的配置

  • 8.1.2@WebFilter

第6.2.4节中提到了过滤器排序的唯一地方,它指定了如何使用web.xmladdFilter()@WebFilter的章节中未提及排序

是否没有其他可用的机制

Servlet3.0规范中没有,所以没有

这不是Servlet 3.0+的一个重大疏忽吗

我怀疑这一遗漏是“疏忽”。BalusC的评论是,这提供了一个没有替代机制的合理原因:如果您的webapp附带了包含过滤器的第三方库,该怎么办?事先很难说出它的顺序

通过注释或通过ServletContext对象声明的过滤器在链中的何处?在web.xml中声明的那些内容的末尾? 未定义

由于规范没有解决这些场景,因此顺序必然是未定义的