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

标签 servlet-filters tomcat8

我有一个类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/

相关文章:

spring - 如何在 Java 配置中使用 delegatingFilterproxy?

spring-mvc - hybris - 哪个 Spring Controller 满足我的请求?

java - 为什么Tomcat内存没有增加

java - Spring - 将每个 url 映射的参数发送到同一过滤器

java - Jersey :InjectableProvider 没有被选中 - Spring

java - JSF 2 上的 HTTPS,用于 protected 资源和登录

tomcat - 如何从 servlet 永久修改 web.xml

tomcat - 使用 Wampserver 的按钮启动/停止 Tomcat

eclipse - maven.build.timestamp 在部署到 tomcat 的 maven eclipse 构建中没有解析

java - 基于偏移量的 ZoneId 的 ID 无效 - Java 8