【问题标题】:Servlet Filters - Identifying the called Servlet/JSPServlet 过滤器 - 识别被调用的 Servlet/JSP
【发布时间】:2011-11-30 22:44:36
【问题描述】:

我正在编写一个测量 http 请求和响应时间的 Servlet 过滤器。

过滤器部署在 Apache Tomcat 7 Web 服务器上。

我想知道除了解析请求的 URI(例如,检查 .jsp 后缀)之外,是否有任何方法可以识别每个请求上调用了哪个 Servlet 或 JSP?

【问题讨论】:

    标签: jakarta-ee tomcat servlets servlet-filters


    【解决方案1】:

    必须更改 servlet/JSP,以便它们设置特定的请求属性,然后您在 FilterChain#doFilter() 调用之后获得该属性。

    我只能暗示HttpServletRequest#getServletPath() 可能是获取实际请求资源的更好方法。它以与上下文无关的方式执行此操作,因此您无需摆弄getRequestURI() 来修剪上下文路径。此外,如果有一个映射到的 servlet,例如 /foo/*,那么它只会返回 /foo 而不是 /foo/bar/baz。以防万一您有兴趣。

    由于您使用的是 Tomcat,您可能会对它的内置 Access Log Valve 感兴趣,它为您提供了一种记录请求的方法,与众所周知的 Apache HTTPD(包括时间)几乎相同。当然,这只有在您对 Tomcat 实例具有完全的管理员控制权时才有意义。

    【讨论】:

      猜你喜欢
      • 2014-07-05
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多