filter 的配置能夠有以下兩種方式:web
如下說明的方式是創建在把 filter 工程導出 .jar 包後,放入 Tomcat 的 lib 下的前提。瀏覽器
放在 Tomcat 目錄 conf/web.xml
內。這個方法中,使用<servlet-name>指定須要影響的 servlet,使用<url-pattern>指定須要影響的URL通配規則,以下:app
<filter> <filter-name>helloFilter</filter-name> <filter-class>com.test.testMyFilter</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <servlet-name>helloServlet</servlet-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>
WEB-INF/web.xml
內。在<servlet> 前加入此 filter 的配置。使用 Eclipse 建立的 Servlet 工程名,就是未來會在 url 中 映射的地址,好比,這個工程叫 MyPuppyServlet,那麼在瀏覽器中訪問時,其URL就是 http://localhost/MyPuppyServlet
。eclipse
若你建立 servlet 時,勾選了產生獨立的 web.xml 配置文件,那麼在 WEB-INF 下就會有一個 web.xml。如下都是基於這個前提的說明。url
在這個 web.xml 內,涉及到關於 servlet 的配置。這裏解釋一下幾個名字的重要關係。spa
http://localhost/MyPuppyServlet
中的 MyPuppyServlet。首先在 URL 裏涉及路徑上面說過了,就是工程的名字,這個名字,會被 Tomcat 在 conf/Catalina/localhost
目錄下產生一個對應的 .xml 文件,好比工程名叫 MyPuppyServlet,那麼文件名就 MyPuppyServlet.xml。這個文件裏 <Context> 屬性 docBase 指明瞭你的工程在文件系統中的實際位置。屬性 path 爲 "/testMyServlet"
好像有些多餘,並不能在 eclipse 中有所指定。手工修改爲其它值,也並不影響 URL 的訪問。WEB-INF/web.xml
中的內容,這個文件中的標籤 <servlet-name> 就明確了在整個系統中,servlet 的名字,必須是惟一的。這裏指明的名字,能夠被其它地方引用,好比 <filter-mapping> 中想指定對某個 servlet 起做用,就能夠在 <filter-mapping> 下用 <servlet-name> 指明。這個 <servlet-name> 名,並不必定要與工程名或路徑名中保持一致,它只是一個系統內部引用的名字。好比上面的 URL 是 http://localhost/MyPuppyServlet
,這裏的 <servlet-name> 仍能夠叫做 testABC。http://localhost/MyPuppyServlet
,而在此 servlet 下 WEB-INF/web.xml
中的 <servlet-name> 更名爲 testABC,<servlet-class> 是 com.test.servlet.testCCC。listener 的部署相似於 filter。首先須要導出 listener 的工程爲 .jar 包並放到 Tomcat 的 lib 目錄下。
而後,分紅爲全部或部分 servlet 提供服務兩個方向。code
conf/web.xml
內,放入 <listener> 及其子標籤。WEB-INF/web.xml
中,加入 <listener> 及其子標籤。我沒有找到如何在 Tomcat 的目錄 conf/web.xml
內爲部分 servlet 提供服務的配置方法。xml