Java webapp:如何实现Web bug(1×1像素)?

在下面问题的接受答案中,一个具有13K + rep的SO常规建议使用“web bug”(不可缓存的1×1 img)来跟踪日志中的请求:

Google Analytics是否准确?

我怎么能用Java做到这一点?

基本上,我有两个问题:

  • 如何确保1×1图像不可缓存(如何设置标题)?

  • 如何确保这些1×1图像的查询将出现在日志中?

我正在寻找确切的代码段,因为我知道如何编写.jsp / servlet,我知道如何提供1×1图像:)

我的问题是关于我应该写的确切的.jsp / servlet以及如何/需要做什么以便Tomcat记录请求。

例如,我打算使用以下映射:

 WebBugServlet /webbug*  

然后使用引用“webbug.png” (或.gif)的img标记,那么如何编写.jsp / servlet呢?

我应该在日志中查找什么/在哪里?

简单的方法是将日期时间戳添加到JSP中的图像。 这将阻止图像被缓存。

 <% java.util.Date dt = new java.util.Date (); %>  

在您的访问日志中,您可以计算您的jpg – 输出应该是

 127.0.0.1 - - [10/Jun/2010:11:38:53 +0530] "GET /mywebapp/jsp/invisible.jpg?1276150133362 HTTP/1.1" 200 991 127.0.0.1 - - [10/Jun/2010:11:38:54 +0530] "GET /mywebapp/jsp/invisible.jpg?1276150134659 HTTP/1.1" 200 991 127.0.0.1 - - [10/Jun/2010:11:38:55 +0530] "GET /mywebapp/jsp/invisible.jpg?1276150135627 HTTP/1.1" 200 991 

在这种方法中,您不需要servlet映射。

替代方法将涉及编写Filter类来设置缓存控制头。