如何避免重复请求?

时间:2009-08-20 08:35:14

标签: java sql-server

如果我点击一个名为servlet的链接。

是否有可能通过过滤器跟踪重复请求,以便我可以避免命中servlet?

4 个答案:

答案 0 :(得分:3)

通常,您会在链接中添加某种“请求标识符”,例如一个GUID。你要么懒洋洋地跟踪你已经看过的标识符(并忽略那个集合中的任何内容),要么跟踪你生成但未看到的标识符(并忽略其中的任何)设定)。

答案 1 :(得分:0)

你真的想为每个请求做这个吗?如果不这样做,请使用Jon的答案中的第一个解决方案,忽略那些没有guid的东西。

您可以在javascript中轻松完成此操作。单击任何链接后,防止再次单击该链接:(使用某些YUI):

YAHOO.util.Event.onDOMReady(function(){
  function killIt(e){
    YAHOO.util.Event.stopEvent(e);
  }

  var anchors = document.getElementsByTagName('a');
  for(var i = 0; i < anchors.length; i++){
     YAHOO.util.Event.addListener(anchors[i], 'click', function(e){
       var el = YAHOO.util.Event.getTarget(e);
       YAHOO.util.Event.removeListener(el, 'click'); // kill existing handle
       YAHOO.util.Event.addListener(el, 'click', killIt); // kill any future clicks
     });
   }
});

您也可以在点击它时禁用锚点。有点不同。直接只在你想要单击启用的锚点上实现它。

答案 2 :(得分:0)

绝对没有理由使用庞大的Javascript框架来动态禁用链接。

<a href="/test" onmouseup="this.href='';" />

完成。

答案 3 :(得分:0)

我喜欢这个:

sbt dist