具有相同 url 映射的多个过滤器
Posted
技术标签:
【中文标题】具有相同 url 映射的多个过滤器【英文标题】:Multiple filters with same url mapping 【发布时间】:2013-11-28 17:56:18 【问题描述】:是否可以使用两个具有相同 url 映射的过滤器?
<filter>
<filter-name>TeeFilter</filter-name>
<filter-class>filter1r</filter-class>
</filter>
<filter-mapping>
<filter-name>TeeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<display-name>CredentialsFilter</display-name>
<filter-name>CredentialsFilter</filter-name>
<filter-class>filter2</filter-class>
</filter>
<filter-mapping>
<filter-name>CredentialsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
【问题讨论】:
【参考方案1】:是的。你可以。
您在 web.xml 中下的订单将执行。
这里,
首先控制转到TeeFilter
,然后转到CredentialsFilter
。
如果你想先执行CredentialsFilter
,在web.xml中改变顺序
【讨论】:
我只使用 CredentialsFilter,一旦我添加了 TeeFilter,它只是一个用于记录 http 请求和响应的 logback 记录器,一些服务停止工作,而其他服务仍在工作。你知道为什么会发生这种情况吗? @mosaad 是的,这真的很奇怪。它不应该发生。你观察执行顺序吗?还有什么例外? 执行顺序没有区别,创建的日志文件显示收到 204 响应 老问题漏掉了一个重点:你需要一个chain.doFilter(request, response);在你的公共 void doFilter(...)以上是关于具有相同 url 映射的多个过滤器的主要内容,如果未能解决你的问题,请参考以下文章
在 ServletRequests 上使用 java Filter 时如何检查 url 是不是具有有效映射