问题:我想对所有网络应用进行过滤。
我创建了一个过滤器,用于监控对apache tomcat服务器的请求。
为了举例,它被称为MyFilter。我在netbeans中创建了它,它创建了2个独立的目录:
webpages - contains:
META-INF
WEB-INF
index.jsp (a file which i created for viewing monitored data)
source packages
my.package/MyFilter
同样当我从netbeans执行它时,它会部署它并将我发送到http://localhost:8080/MyFilter
每当我在/ MyFilter / somepath下查看页面时,它都会运行过滤器。
我希望过滤器在所有路径上运行,而不仅仅是针对webapp
我需要在哪里找到项目文件?我需要哪些项目文件?我应该编辑conf / web.xml并添加过滤器吗?或者我应该只在特定的webapp的web.xml中?
修改
我将生成的.war文件复制到tomcat / webapps
当我启动tomcat时,它会创建一个目录(tomcat / webapps / MyFilter /)
我将过滤器添加到tomcat / conf / web.xml中。当我启动它时,它无法加载:// localhost:8080 /但成功加载(和过滤器):// localhost:8080 / MyFilter
答案 0 :(得分:10)
根据定义的过滤器只能在其定义的Web应用程序中运行。
您可以在Tomcat的web.xml
目录中的conf/
中定义它,以便将它包含在默认情况下部署到该Tomcat的所有Web应用程序中(请注意,您还需要制作过滤器)可用于所有Web应用程序的类,可能是将它放在Tomcat的lib/
目录中。
或者,您可以实现Tomcat Valve,它在概念上类似于过滤器,但可以安装在Tomcat中的引擎,主机或上下文中。