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

时间:2017-01-09 04:11:18

标签: servlet-filters tomcat8

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

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

1 个答案:

答案 0 :(得分:1)

引用documentation

  

每个过滤器都可以访问FilterConfig对象   获取其初始化参数,引用   它可以使用的ServletContext。

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

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

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

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