我可以编写一个模块/过滤器,在 Web 应用程序运行之前放入 Tomcat 中的处理管道吗?
我可以为 tomcat 正在处理的每个 Web 应用程序打开/关闭一些东西。
这可能吗?
所以基本上它是一个可重用的过滤器,它连接到可以改变请求行为或执行/修改请求的 Web 管道中。一个示例是记录所有 ip,或基于 url 重定向,阻止请求等。
如果您使用的是 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 文档。也许唯一的缺点是您可以添加但无法删除。而且您只能在应用程序启动时。
注意:代码未经测试
您是否考虑过 web.xml 中的 ServletContextListener?