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