我在寫一個Servlet過濾器來測量http請求和響應時間。Servlet過濾器 - 識別被調用的Servlet/JSP
該過濾器部署在Apache Tomcat 7 Web服務器上。
我想知道除了解析請求的URI(例如,檢查.jsp後綴)之外,是否有任何方法可以確定在每個請求上調用哪個Servlet或JSP?
我在寫一個Servlet過濾器來測量http請求和響應時間。Servlet過濾器 - 識別被調用的Servlet/JSP
該過濾器部署在Apache Tomcat 7 Web服務器上。
我想知道除了解析請求的URI(例如,檢查.jsp後綴)之外,是否有任何方法可以確定在每個請求上調用哪個Servlet或JSP?
不是不改變servlets/JSPs,以便它們設置一個特定的請求屬性,然後你調用FilterChain#doFilter()
。
我只能給出提示HttpServletRequest#getServletPath()
可能是一種更好的方式來獲得實際請求的資源。它以獨立於上下文的方式執行此操作,因此您無需撥弄getRequestURI()
即可關閉上下文路徑。另外,如果有一個servlet映射到例如/foo/*
,那麼這將只返回/foo
而不是/foo/bar/baz
。以防萬一你有興趣。
由於您使用的是Tomcat,因此您可能會對其內置的Access Log Valve感興趣,它爲您提供了一種記錄請求的方法,其方式與衆所周知的Apache HTTPD相同,包括次數。當然,如果您對Tomcat實例具有完全的管理控制權,這當然是唯一有意義的。