我创建了一个包含10个以上链接的网页。是否可以存储点击的网址或访问我的数据库或文件。我使用servlet开发了网页。它只是一个包含10个链接的页面。
答案 0 :(得分:4)
您可能需要考虑使用Filter。然后,您可以使用一个过滤器来跟踪要读取的页面。
public class LogFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
... // use req.getRequestURI() and log it out to a database or file
}
}
HttpServletRequest.getRequestURI()会告诉您他们想要查看的网址。
您需要在web.xml中使用filtermapping来激活过滤器:
<filter>
<filter-name>LogFilter</filter-name>
<filter-class>LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LogFilter</filter-name>
<!--
this will match any url, you probably want it to either match your jsp urls
with *.jsp or your servlets with whatever you're using as your servlet-mapping
e.g. *.html
-->
<url-pattern>/*</url-pattern>
</filter-mapping>
编辑:如果它们是外部链接,您可以考虑通过单个servlet重新路由它们,然后重定向到外部URL并从该Servlet进行日志记录。
答案 1 :(得分:2)
在您自己的站点/ servlet上捕获简单的命中很容易 - 如果您只想知道访问过的URL,您几乎总是可以设置您的Web服务器将其记录到日志文件中。 (然后,如果需要,您可以解析并将其插入到数据库中)。
捕获出站链接需要更多的工作,有很多方法可以解决这个问题,最好的方法取决于您的具体要求(URL /方法的复杂性,替代链接属性的复杂性,如target
,期望的稳健性,期望的性能,期望的全面性等。)。
上面指定的一个解决方案是将所有出站链接更改为对您自己站点上的重定向页面的引用,并将目标作为参数。然后,在典型的网络服务器日志中,您会看到类似http://example.com/redir.html?target=http%3A%2F%2Fwww.bbc.co.uk%2Fnews
的内容,您可以从中轻松解析目标网址。
另一个涉及在单击链接时向服务器发出手动请求(通常是1x1图像),您可以向其添加任何您喜欢的查询参数,然后从日志文件中提取它们。这可能会或可能不会涉及使用javascript事件监听器中断点击操作,然后在以后重新触发页面更改,具体取决于您提出请求的具体方式,如果没有明确处理,这将导致竞争条件。
上面提到的在日志文件中创建行的显式请求的所有选项都可以向特定页面(例如JSP)发出请求,如果需要,可以将条目直接写入数据库(尽管理想情况下)这仍然会保留某种日志以允许重试失败的插入。)
在网络分析方面工作了好几年之后,我可以告诉你,如果想要捕获尽可能多的准确信息,有多少不同的情况需要考虑,这是令人惊讶的。如果这只是一个玩具网站的自己的启发,那么几乎任何技术都可以接受,但是一旦你开始对数字进行任何重视,你真的需要关心你从未考虑过的事情。有几个相对昂贵的网络分析软件包存在市场的原因......: - )
编辑:正如prakash的评论所暗示的那样,我的建议是检查已经存在的免费网络分析工具的范围,并在实际关心结果时整合一个。如果你只是出于好奇,或者作为一个一次性的低重要性项目,那么无论如何都会弄脏你的手。
答案 2 :(得分:1)
如果链接是您网站的内部链接,则应查看访问日志或Google Analytics等分析软件包。
如果它们是外部的,并且您希望跟踪点击率,您可以将链接实际转到您要记录它的服务器,然后重定向到真正的目的地。
答案 3 :(得分:0)
您可以采用与Google相同的方式执行此操作:将每个链接编码为您网站上的链接,然后再对其进行重定向。
答案 4 :(得分:0)
以简单的方式操作:将Google Analytics添加到您的网站。