Wie vermeiden Sie doppelte Anfrage?

Wenn ich auf einen Link ia m rufe ein Servlet.

Gibt es irgendeine Möglichkeit, die doppelte Anforderung durch Filter zu verfolgen oder so, dass ich vermeiden kann, das Servlet zu schlagen?

   

Willst du das wirklich für jeden Wunsch machen? Wenn du es nicht tust, benutze die erste Lösung in Jons Antwort und ignoriere Dinge, die keine Führung haben.

Sie können dies in Javascript ziemlich einfach machen. Nachdem ein Link angeklickt ist, verhindern Sie, dass er erneut angeklickt wird: (mit einigen 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.addlistner(anchors[i], 'click', function(e){ var el = YAHOO.util.Event.getTarget(e); YAHOO.util.Event.removelistner(el, 'click'); // kill existing handle YAHOO.util.Event.addlistner(el, 'click', killIt); // kill any future clicks }); } }); 

Sie könnten auch dann Anker deaktivieren, wenn Sie darauf klicken. Ein wenig anders. Gerade nach vorne, um dies nur auf Anker zu implementieren, die du nur einmal klicken möchte.

Normalerweise stellst du irgendeine Art "Anforderungskennung" in den Link, zB eine GUID. Du befolgst entweder faul die Identifikatoren, die du schon gesehen hast (und irgendetwas in diesem Set ignorieren), oder behalte die, die du erzeugt hast, aber nicht gesehen (und ignoriert nichts, was nicht in diesem Set ist).

Es gibt absolut keinen Grund, ein riesiges Javascript-Framework zu verwenden, um einen Link dynamisch zu deaktivieren.

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

Erledigt.