Java 如何在指向外部URL的链接上捕获和记录单击事件?

Java 如何在指向外部URL的链接上捕获和记录单击事件?,java,html,jsp,servlets,Java,Html,Jsp,Servlets,我有下面的HTML。我想要URL的地址http://www.google.com'将在单击链接时插入到数据库表中 insert.jsp包含连接代码,单击按钮即可正常工作,但上述代码不起作用。HttpServletRequest接口有一个方法getRequestURL(),返回当前页面的url。使用此选项可以在某些字符串变量中指定当前页面的url,例如reqUrl#示例#string reqUrl=request.getRequestURL()#End#,并执行如下插入命令 stmt=con.

我有下面的HTML。我想要URL的地址http://www.google.com'将在单击链接时插入到数据库表中



insert.jsp
包含连接代码,单击按钮即可正常工作,但上述代码不起作用。

HttpServletRequest接口有一个方法getRequestURL(),返回当前页面的url。使用此选项可以在某些字符串变量中指定当前页面的url,例如reqUrl#示例#string reqUrl=request.getRequestURL()#End#,并执行如下插入命令 stmt=con.createStatement()//创建一个语句对象
rst=stmt.executeUpdate(“插入表名称值(“+reqUrl+”)”);

如果URL属于同一个域且属于同一个应用程序,则可以通过映射一个将拦截每个请求并将其异步添加到DB的
过滤器来轻松完成此操作

但是如果它是其他域的,那么你需要重写这样的链接,以便它可以从你应用程序的一个Servlet传递,例如
/GateWatServlet?url=google.com
,你可以在Servlet中完成这项工作
rel=“ext”
,在所有这些链接上使用
rel=“ext”
,它提供了额外的SEO好处

使其可靠地跨浏览器兼容,而无需再写100行)

$('a[rel=ext]')。单击(函数(e){
var$link=$(此);
var url='/log?url='+encodeURIComponent($link.attr('href'));
如果(e.ctrlKey | |$link.attr('target')=='u blank'){
窗口打开(url);
}否则{
window.location=url;
}
e、 预防默认值();
});
最后,在执行此任务的
/log
URL模式上创建一个

@WebServlet(“/log”)
公共类LogServlet扩展了HttpServlet{
@EJB
私人日志服务日志服务;
@凌驾
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
字符串url=request.getParameter(“url”);
if(url==null | | url.trim().isEmpty()){
senderError(HttpServletResponse.SC\u BAD\u请求);
}否则{
logService.log(url);
sendRedirect(url);
}
}
}

不要为此使用JSP。这毫无意义。

请详细说明一下这一点。假设网页上有一个链接。比如www.google.com。在点击事件发生时,我想在后端的mysql数据库中插入此链接,而网页在前端打开。+1但如果浏览器关闭了javascipt,则不会记录这些点击。在这种情况下,href属性需要直接指向LogServlet,并使用JSP中直接编码的“url”参数。