Benachrichtigungsnachricht als Anforderungsattribut festlegen, die nach sendRedirect @ angezeigt werden so

Ich habe zwei Sätze von Servlets erstellt: Ansichten und Controller / Handler

Views: Einfache Lesevorgänge durchführen und Daten an @ weiterleit JSPs Controller: Durchführen von Datenbankaktualisierungen oder -einfügungen und Senden einer Benachrichtigung an ein JSP oder ein View-Typ-Servlet

Benachrichtigung hier ist eine Statusmeldung für den Benutzer. Beispiel: "Sie haben blah ... erfolgreich aktualisiert"

Wenn ich @ benutrequestDispatcher.forward() in Controllern und der Benutzer aktualisiert die Seite (nachdem der Controller die Steuerung an view / jsp übergeben hat), indem er bestätigt, dass erneut gesendet wird. Es besteht die Möglichkeit, dass doppelte Aktionen ausgeführt werden.

Wenn ich @ benutresponse.sendRedirect() Ich kann anscheinend keine Benachrichtigungen senden, ohne diese in der Sitzung festzulegen.

Gibt es eine gute Designpraxis, die hier hilft? Jeder gute Link zu MVC für Java ohne Frameworks, der dieses spezielle Szenario behandelt, wäre willkommen.

Ich benutze weder Spring noch Struts - einfach nur alte HTTPServlets

Beispiel - Controller:

public XServlet extends HttpServlet{
     public void processRequest(request, response) throws ...{ 
         //Do some stuff here
         if(success){
             setUserMessage("Hooray ur profile pic is uploaded!");
         } else {
             setUserMessage("Oh no! We couldn't upload that file its too biG!");
         }

         //Send the notification
         request.setAttribute("status", getUserMessage());
         request.getRequestDispatcher("editProfile.jsp").forward(request, response);
    }
}

Dies bedeutet, dass, wenn der Benutzer versucht, die Seite zu aktualisieren, das Steuerelement erneut an diesen Controller übergeben wird und einige Aktionen möglicherweise unnötig wiederholt werden.

Jedoch wenn ich benutzesendRedirect() dann kann ich die Statusmeldung nicht anzeigen, ohne auf ein Sitzungsattribut zurückzugreifen oder es an die URL anzuhängen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage