我有一个类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(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");
关于servlet-filters - 如何以编程方式获取 servlet 过滤器实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41540939/