Verhindern form Wiedervorlage und einfügen in die Datenbank auf Seite aktualisieren
Ich habe ein servlet nimmt die Daten aus dem Formular und fügt es in die Datenbank.In servlet-ich verwende Bohnen und get/set data via Bohnen.Sobald das einfügen geschieht ,wird der Benutzer umgeleitet, um die Ansicht, die zeigt, wie genau die Seite aussieht.Diese Seite ist JSP. Nun, wenn ich diese Seite aktualisieren(jsp),es wieder tut Formular Daten einfügen in die Datenbank.Jetzt brauche ich, um dies zu verhindern.Was ich dachte war, anstatt umleiten es zu jsp,lassen Sie mich eine Umleitung zu einem anderen servlet und von diesem servlet lass mich die get-Anforderung und leitet ihn an die jsp für die Ansicht.Mit diesem Ansatz habe ich die Umgestaltung meiner jsp und ich habe sehr viele jsp-betroffene.
Ist Ihre andere Weise kann ich verhindern das einfügen in die Datenbank bei der Aktualisierung der Seite erfolgt ?
Ich habe auch überprüft, die auf Datenbank-Seite unter der Annahme, dass ich hinzufügen kann, unique-Einschränkungen, die ich zu tun haben einige einzigartige Spalten, die generiert wird über erste servlet,also auf jedem einfügen-Werte sind unterschiedlich,ich kann also nicht wirklich die Lösung auf DB-Seite.
Kann jemand mir empfehlen, wenn es existiert, Arbeit Problemumgehungen für diese ?
Update:Hinzufügen von code, die nicht einfügen, bin ich die Seite aktualisieren manuell.Scheint so, das ist bug, was ich verpasst zu früher.Es macht das insert korrekt in der Datenbank und zeigt korrekt alle Daten in der Ansicht jsp.Wenn der view-jsp aktualisiert wird, bekomme ich doppelte Einfügungen in die Datenbank.
Update .entfernt den code.- Post-relevanten Teile des Codes, anstatt den ganzen code.
Problem behoben ist.
javax.servlet.http.HttpSession session = request.getSession();
if (session.getAttribute("insertflag") == null) {
mybean sf = new mybean();
sf.insert(form);
session.setAttribute("insertflag", insertid);
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/test/showtestform.jsp");
rd.forward(request, response);
} else {
RequestDispatcher rd = request.getRequestDispatcher("/errorpage.jsp");
rd.forward(request, response);
}
Fehler In der jsp-Seite Entferne ich das Attribut gesetzt und dann den link in dieser Seite kommen Sie wieder zurück zur Startseite.
- Wie machen Sie Ihre Seite aktualisieren?
- bitte poste deinen code.
- wie stellst du per GET oder POST ?
- Ramesh seine post-Anfrage.Mit Multipart-request, ich denke nur post arbeitet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine einfache Lösung kann sein, dass man ein flag in der Session, wenn Einfüge-fertig ist.. Und vor dem einsetzen immer überprüfen Sitzung, wenn dieses flag vorhanden ist.
In der servlet;
Vor dem einfügen in die Datenbank, machen Sie folgenden check:
Wenn es eine Möglichkeit, eine gültige Szenario der Benutzer das einfügen von zwei dieser Datensätze ( user surfen und dann wieder einfügen Datensatz in der gleichen Tabelle ; ist eine gültige Szenario ) ; dann müssen wir uns auch fügen Sie folgenden code vor das Formular angezeigt wird, um Benutzer:
senden Sie Ihr Formular mit Hilfe von javascript mit onclick-Ereignis
nicht senden Sie das Formular mit
<input type=submit>
und verwenden<input type=button>
Was Sie sagen, über session-Attribute?
auf form Submit create new session-Attribut und es ungültig ist, wenn Sie erfolgreich arbeiten.
Und auf action-servlet, Bedingung hinzufügen, wenn session-Attribut verfügbar ist, dann setzen Sie die Formular-Vorlage wenn nicht dann umleiten auf Seite Formular.