我正在处理有关java servlet过滤器的不明确问题。
问题是:
给出具有以下结构的war文件
| – WEB-INF/classes/Myservlet.class
| – WEB-INF/lib/wf.jar
其中wf.jar包含有效的web-fragment.xml和以下两个类:MyFilter1.class和MyFiler2.class。 web-fragment.xml如下
以下是一些代码片段:
当访问上述Web应用程序的“/”时,将执行哪些过滤器?
一个。 不会执行过滤器。
B中。 MyFilter1
℃。 MyFilter2
d。 MyFilter1和MyFilter2
我敢打赌,正确的答案将是D(两个过滤器),但解决方案说右边是C(没有任何解释)。 为什么只能执行MyFilter2?
由于
答案 0 :(得分:1)
这取决于你是否在第一个过滤器中使用了chain.doFilter(request,response)
,如果你链接它会转到第二个过滤器,否则它会赢。
请注意,如果描述符都使用相同的名称定义,则描述符的优先级高于注释。这适用于servlet和过滤器。
在您尝试使用" /"访问网址的情况下;它将首先击中MyFilter2。
答案 1 :(得分:1)
web-fragment.xml
有metadata-complete=true
因此不会评估jar中类的注释,只会注册片段中定义的MyFilter2
。