Java 我是否可以编写一个在web应用程序获取';汤姆猫跑什么?

Java 我是否可以编写一个在web应用程序获取';汤姆猫跑什么?,java,tomcat,servlets,pipeline,Java,Tomcat,Servlets,Pipeline,我是否可以在web应用程序运行之前编写一个模块/过滤器,将其放入Tomcat中的处理管道中 我可以为tomcat正在处理的每个web应用程序打开/关闭这些功能 这可能吗 因此,基本上,它是一个可重用的过滤器,可以钩住web管道,从而改变请求行为或执行/修改请求。一个例子是记录所有ip,或基于url重定向,阻止请求等。您是否考虑过web.xml中的ServletContextListener?如果您使用Servlet 3.0,您可以。您要做的是实现一个ServletContextListener或

我是否可以在web应用程序运行之前编写一个模块/过滤器,将其放入Tomcat中的处理管道中

我可以为tomcat正在处理的每个web应用程序打开/关闭这些功能

这可能吗


因此,基本上,它是一个可重用的过滤器,可以钩住web管道,从而改变请求行为或执行/修改请求。一个例子是记录所有ip,或基于url重定向,阻止请求等。

您是否考虑过web.xml中的ServletContextListener?

如果您使用Servlet 3.0,您可以。您要做的是实现一个
ServletContextListener
或一个
ServletContainerInitializer
。下面的代码以
ServletContextListener

@WebListener("auto config listeners")
public class MyListenerConfigurator implements ServletContextListener {
   public void contextInitialized(ServletContextEvent scEvt) {
      ServletContext ctx = scEvt.getServletContext();
      FilterRegistration.Dynamic reg = ctx.addFilter("myFilter", "my.listener.class.MyListener");
      ...
   }
见EE6文件。也许唯一的缺点是可以添加,但不能删除。并且您只能在应用程序启动时才可以


注意:未测试的代码

是可以在外部托管到特定webapp的东西吗?i、 e.listeners.jar是否会存储在web应用程序的范围之外,以便其他web应用程序可以使用它?它是通过普通的web应用程序类加载器找到的,因此您的问题本质上是一个部署问题。就我个人而言,我喜欢我的战争是自给自足的。如果您想为您的战争提供全局配置文件,那么考虑一个EAR部署,或者Web容器本身中的一个属性文件。您的问题有点模糊。您首先要求在webapp的启动上挂接一些东西,
ServletContextListener
是正确的答案,但此后您将讨论使用普通的
过滤器的过滤请求。你到底想要什么?