如何以编程方式获取 servlet 过滤器实例



我有一个实现javax.servlet.Filter的类MyFilter。 Tomcat 基于web.xml配置创建单个实例。 筛选器收集有关所有请求(自应用程序启动以来)的统计信息,并将其存储在成员变量中。

我希望在网页上显示这些统计数据。 如何获取由Tomcat创建的MyFilter实例?

引用

文档:

每个筛选器都可以访问一个 FilterConfig 对象,从中可以获取其初始化参数,引用它可以使用的 ServletContext。

为什么不将所需的数据存储在 ServletContext 属性中?您可以按如下方式存储筛选器:

@Override
public void init(FilterConfig config) throws ServletException
{
    // Store our instance in the servlet context for usage by servlets.
    ServletContext context = config.getServletContext();
    context.setAttribute("MyFilter", this);
}

然后在具有相同上下文的 servlet 中:

Filter filter = (Filter) getServletContext().getAttribute("MyFilter");

最新更新