2016-07-22 3 views
0

HTML-Formular senden:Endlosschleife, wenn Sie ein Formular Post

 <form method="post" action="/login"> 
      <input class="inputLogin" type="text" name="username" value="" placeholder="Email" > 
      <input class="inputPassword" type="password" name="password" value="" placeholder="Password">  
      <br> 
      <input class="formButton" type="submit" name="commit" value="Login"> 
     </form> 

Servlets:

@Override 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    String username = req.getParameter(USERNAME_PARAMETER); 
    String password = req.getParameter(PASSWORD_PARAMETER); 
    boolean authenticated = authService.authenticate(req.getSession(), username, password); 
    if (authenticated) { 
     resp.sendRedirect("/user/home-page"); 
    } else { 
     System.out.println("ELSE"); 
     req.setAttribute(ERR_ATTRIBUTE, "Invalid credentials!"); 
     req.getRequestDispatcher("/login").forward(req, resp); 
    } 
} 

Als ich Formular senden, erhalte ich eine unendliche Rekursion des Aufrufs dieser Servlet und Stackoverflow.

Wo ist ein Problem?

Antwort

0

Die POST-Anfrage führt bereits das Login-Servlet aus, wobei ein forward() die doPost-Operation mit denselben Parametern erneut startet und in einer Schleife steckenbleibt. Überspringen Sie die .forward() und lassen Sie das Servlet das Anmeldeformular erneut senden. Vielleicht halten Sie einen Zähler und nur .forward() auf eine andere Seite, wenn der Benutzer eine erfolgreiche Anmeldung dreimal fehlschlägt.

Verwandte Themen