Servlet过滤器 - 识别被调用的Servlet / JSP

时间:2011-10-04 18:51:37

标签: java-ee tomcat servlets servlet-filters

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

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

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

1 个答案:

答案 0 :(得分:4)

并非不更改servlet / JSP,以便他们设置一个特定的请求属性,然后在FilterChain#doFilter()调用后获取该属性。

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

由于你正在使用Tomcat,你可能会对它的内置Access Log Valve感兴趣,它为你提供了一种方法来记录请求的次数与知名的Apache HTTPD相同,包括时间。如果您对Tomcat实例具有完全的管理控制权,那么这当然是唯一有用的。