我有以下HTML。我想在点击链接时将URL“http://www.google.com”插入数据库表中。
<a href="http://www.google.com" onclick="insert.jsp">Google</a>
insert.jsp
包含连接代码,该代码在单击按钮时工作正常,但上面的代码无效。
答案 0 :(得分:2)
在所有这些链接上使用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();
});
最后在/log
的网址格式上有servlet来完成工作
@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。这毫无意义。
答案 1 :(得分:0)
HttpServletRequest接口有一个方法getRequestURL(),它返回当前页面的url。用它来指定当前页面的url在一些字符串变量中说reqUrl#Example#String reqUrl = request.getRequestURL()#End#并执行insert命令如下 语句= con.createStatement(); //创建一个Statement对象 rst = stmt.executeUpdate(“insert into table_name VALUES('”+ reqUrl +“'”);
答案 2 :(得分:0)
如果URL属于同一个域且属于同一个应用程序,那么您可以通过映射Filter
轻松完成此操作,该/GateWatServlet?url=google.com
将拦截每个请求并将其异步添加到数据库
但是如果它属于其他域,那么你需要重写这样的链接,以便它可以从你的应用程序的一个Servlet传递,例如{{1}},你可以在Servlet中完成这项工作