1
我想知道,在Filter doFilter方法中,無論何時在我的web.xml中請求一個映射的servlet。無論如何要這樣做?只要請求是映射的servlet,如何知道過濾器內部?
由於提前,
費爾南多
我想知道,在Filter doFilter方法中,無論何時在我的web.xml中請求一個映射的servlet。無論如何要這樣做?只要請求是映射的servlet,如何知道過濾器內部?
由於提前,
費爾南多
這不能做。最好直接在這些servlet上映射過濾器。這可以通過使用<servlet-name>
而不是<url-pattern>
來完成。它必須與<servlet>
條目中定義的<servlet-name>
完全相同。如果您需要,您可以指定多個。
<filter-mapping>
<filter-name>myFilter</filter-name>
<servlet-name>myOneServlet</servlet-name>
<servlet-name>myOtherServlet</servlet-name>
<servlet-name>myLastServlet</servlet-name>
</filter-mapping>
或者當你已經對Java EE 6的/ Servlet的3.0,並因此可能在類使用@WebFilter
。
@WebFilter(servletNames={"myOneServlet", "myOtherServlet", "myLastServlet"})
除非您檢查容器的源代碼(並且您的解決方案將與容器相關),否則沒有任何方法可以找出它。一種可能的解決方案是解析你的web.xml文件,並在每個請求中檢查URL是否與其中的任何URL匹配。 –
謝謝!有沒有什麼辦法來配置過濾器只是爲了映射servlet,或者它只是爲了url模式? –
你必須像@balusc在他的回答中所說的那樣去做。 –