0

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

我可以为 tomcat 正在处理的每个 Web 应用程序打开/关闭一些东西。

这可能吗?

所以基本上它是一个可重用的过滤器,它连接到可以改变请求行为或执行/修改请求的 Web 管道中。一个示例是记录所有 ip,或基于 url 重定向,阻止请求等。

4

2 回答 2

1

如果您使用的是 Servlet 3.0,则可以。您所做的是实现 aServletContextListener或 a 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 文档。也许唯一的缺点是您可以添加但无法删除。而且您只能在应用程序启动时。

注意:代码未经测试

于 2010-04-16T01:17:47.427 回答
0

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

于 2010-04-15T19:48:15.810 回答