2012-06-22 33 views
1

我想知道,在Filter doFilter方法中,無論何時在我的web.xml中請求一個映射的servlet。無論如何要這樣做?只要請求是映射的servlet,如何知道過濾器內部?

由於提前,

費爾南多

+1

除非您檢查容器的源代碼(並且您的解決方案將與容器相關),否則沒有任何方法可以找出它。一種可能的解決方案是解析你的web.xml文件,並在每個請求中檢查URL是否與其中的任何URL匹配。 –

+0

謝謝!有沒有什麼辦法來配置過濾器只是爲了映射servlet,或者它只是爲了url模式? –

+0

你必須像@balusc在他的回答中所說的那樣去做。 –

回答

2

這不能做。最好直接在這些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"}) 
相關問題