全局JavaServlet过滤器,可能吗?

全局JavaServlet过滤器,可能吗?,java,jakarta-ee,tomcat,servlet-filters,Java,Jakarta Ee,Tomcat,Servlet Filters,我正在为学术目的编写一个项目,其中包括编写一个监视servlet/jsp响应时间的过滤器 问题是,过滤器应该适用于服务器中部署的每个web应用程序,而不仅仅适用于特定的web应用程序,我只是找不到有关应用“全局”过滤器的任何信息 有可能吗 注: 值得一提的是,我使用的服务器是ApacheTomcat 谢谢 Mikey过滤器是针对每个web应用程序配置的,但Tomcat本身可能有一种机制来计时请求/响应处理时间。您可以在Tomcat的公共类路径中提供过滤器,并编辑Tomcat自己的/conf/we

我正在为学术目的编写一个项目,其中包括编写一个监视servlet/jsp响应时间的过滤器

问题是,过滤器应该适用于服务器中部署的每个web应用程序,而不仅仅适用于特定的web应用程序,我只是找不到有关应用“全局”过滤器的任何信息

有可能吗

注: 值得一提的是,我使用的服务器是ApacheTomcat

谢谢


Mikey

过滤器是针对每个web应用程序配置的,但Tomcat本身可能有一种机制来计时请求/响应处理时间。

您可以在Tomcat的公共类路径中提供过滤器,并编辑Tomcat自己的
/conf/web.xml
以添加过滤器,但这不会在不存在的web应用程序上下文中运行(即,它不覆盖所有可能的请求),并且在所有部署的webapps中都可以覆盖。更健壮的解决方案取决于所使用的servlet容器。对于Tomcat,您需要

启动示例:

import org.apache.catalina.valves.ValveBase;
公共级MyValve扩展ValveBase{
@凌驾
公共void调用(请求、响应)抛出IOException、ServletException{
// ...
getNext().invoke(请求、响应);
}
}
server.xml
中按如下方式注册它:



您可以配置过滤器的url模式,以处理您想要的任何请求/响应。请检查

对不起,这根本没有回答OP的问题。他特别提到,他想要适用于给定Servlet容器上的所有Web应用的内容。在tomcat/conf/w中添加正确的声明怎么样eb.xml?会起作用吗?也可以。只有当webapp的
/WEB-INF/WEB.xml
有另一个过滤器名称相同时,它们才可以重写。如果你能承受这个风险,就把它放在Tomcat的
/conf/WEB.xml
中吧。从webapp的角度看,阀门是绝对不可重写/不可重写的。最后一个问题——编译后的文件应该放在哪里可以使用上述方法之一(valve或Filter)将过滤代码放在Tomcat的公共类路径中。可以像JAR一样直接放在
Tomcat/lib
中,也可以像
common.loader
属性所代表的路径中,在
/conf/catalina.properties
中。谢谢,伙计,你真的很有帮助:)