您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用WAR中的注释定义servlet过滤器的执行顺序

如何使用WAR中的注释定义servlet过滤器的执行顺序

您确实不能使用@WebFilter注释定义过滤器执行顺序。但是,为了最大程度地减少web.xml使用量,仅用a注释所有过滤器就足够了,filterName这样您就不需要<filter>定义,而只需<filter-mapping>按所需顺序定义即可。

例如,

@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}

@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}

与web.xml只是这样:

<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern>/url1/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>filter2</filter-name>
    <url-pattern>/url2/*</url-pattern>
</filter-mapping>

如果您希望将网址格式保留在中@WebFilter,则可以这样做,

@WebFilter(filterName="filter1", urlPatterns="/url1/*")
public class Filter1 implements Filter {}

@WebFilter(filterName="filter2", urlPatterns="/url2/*")
public class Filter2 implements Filter {}
但您仍应保留<url-pattern>in

web.xml,因为XSD要求它是必需的,尽管它可以为空:

<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern />
</filter-mapping>
<filter-mapping>
    <filter-name>filter2</filter-name>
    <url-pattern />
</filter-mapping>

不管采用哪种方法,这一切都将在Tomcat 7.0.28版之前失败,因为它会在不存在的<filter-mapping>情况下窒息<filter>

Jave 2022/1/1 18:14:45 有296人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶