Java webapp:如何实现web bug(1x1像素)?

Java webapp:如何实现web bug(1x1像素)?,java,header,web-applications,Java,Header,Web Applications,在以下问题的公认答案中,一位13K+代表建议使用“web bug”(不可缓存1x1 img)来跟踪日志中的请求: 我如何在Java中做到这一点 基本上,我有两个问题: 如何确保1x1映像不可缓存(如何设置标头) 如何确保这些1x1图像的查询将出现在日志中 我正在寻找确切的代码片段,因为我知道如何编写.jsp/servlet,并且知道如何为1x1映像提供服务:) 我的问题实际上是关于我应该编写的确切的.jsp/servlet,以及如何/需要做什么,以便Tomcat记录请求 例如,我计划使用以

在以下问题的公认答案中,一位13K+代表建议使用“web bug”(不可缓存1x1 img)来跟踪日志中的请求:

我如何在Java中做到这一点

基本上,我有两个问题:

  • 如何确保1x1映像不可缓存(如何设置标头)

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

我正在寻找确切的代码片段,因为我知道如何编写.jsp/servlet,并且知道如何为1x1映像提供服务:)

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

例如,我计划使用以下映射:

<servlet-mapping>
        <servlet-name>WebBugServlet</servlet-name>
        <url-pattern>/webbug*</url-pattern>
</servlet-mapping>

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


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

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

<%
java.util.Date dt = new java.util.Date ();
%>
<img src="/invisible.jpg?<%=dt.getTime ()%>" width="1" height="1">
在这种方法中,您不需要servlet映射

另一种方法是编写一个过滤器类来设置缓存控制头

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