java - 如何捕获并记录外部 URL 链接上的点击事件?

标签 java html jsp servlets

我有以下 HTML。我希望在单击链接时将 URL“http://www.google.com”插入到数据库表中。

<a href="http://www.google.com" onclick="insert.jsp">Google</a>

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

最佳答案

在所有这些链接上使用 rel="ext",它可以提供额外的 SEO 优势

<a href="http://www.google.com" rel="ext">
<a href="http://www.stackoverflow.com" rel="ext">
...

并使用这段 JavaScript 来记录它们(我只是简单地利用 jQuery 使其可靠地跨浏览器兼容,而无需再编写 100 行)

$('a[rel=ext]').click(function(e) {
    var $link = $(this);
    var url = '/log?url=' + encodeURIComponent($link.attr('href'));

    if (e.ctrlKey || $link.attr('target') == '_blank') {
        window.open(url);
    } else {
        window.location = url;
    }

    e.preventDefault();
});

终于有了servlet/log 的 URL 模式上完成这项工作

@WebServlet("/log")
public class LogServlet extends HttpServlet {

    @EJB
    private LogService logService;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String url = request.getParameter("url");

        if (url == null || url.trim().isEmpty()) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST);
        } else {
            logService.log(url);
            response.sendRedirect(url);
        }
    }

}

不要为此使用 JSP。这没有任何意义。

关于java - 如何捕获并记录外部 URL 链接上的点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9441591/

相关文章:

asp.net - 为什么 ASP.Net 重写 runat=server anchor 控件的相对路径?

javascript - iframe 捕获 keydown 事件

php - 在 Laravel 中向数据透视表添加列

java - HTTP 状态 404 - Servlet [ServletName] 不可用

java - 如何设置 Struts 从 Collection 中选择标签的默认值

mysql - 如果我们在wampserver中有mysql,那么我们是否需要单独安装mysqlserver以用于PC上的jsp开发(数据库)

java - 正确的方法调用

java - 有没有办法在从 Maven 原型(prototype)生成项目时为嵌套变量生成值

java - 如何去除不同 Activity 中的重复代码?

java - 无法在android drawable xml中添加属性原色