如何以编程方式获取 servlet 过滤器实例?
How can I programatically obtain a servlet filter instance?
我有一个 class MyFilter
实现了 javax.servlet.Filter
。 Tomcat 基于 web.xml
配置创建它的单个实例。过滤器收集有关所有请求的统计信息(自应用程序启动以来)并将它们存储在成员变量中。
我希望在网页上显示这些统计信息。如何获取由Tomcat创建的MyFilter
实例?
引用自documentation:
Every Filter has access to a FilterConfig object from which it can
obtain its initialization parameters, a reference to the
ServletContext which it can use.
为什么不把你需要的数据存储在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" );
我有一个 class MyFilter
实现了 javax.servlet.Filter
。 Tomcat 基于 web.xml
配置创建它的单个实例。过滤器收集有关所有请求的统计信息(自应用程序启动以来)并将它们存储在成员变量中。
我希望在网页上显示这些统计信息。如何获取由Tomcat创建的MyFilter
实例?
引用自documentation:
Every Filter has access to a FilterConfig object from which it can obtain its initialization parameters, a reference to the ServletContext which it can use.
为什么不把你需要的数据存储在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" );