Captcha servlet Ursachen java.lang.IllegalStateException: PWC3999: kann Nicht erstellen Sie eine Sitzung nach der Antwort begangen wurde

Erstelle ich ein CAPTCHA-Eingabe mit SimpleCaptcha, und habe die Validierung der Captcha Eingabe. Ich bin geschaffen, einer captcha-Eingabe mit dem folgenden codes.

HTML-Code:

<form action="submit_proceed.do" method="post">
<img src="captchaImg" /><input type="text" name="captcha" value=""><br />
<input type="submit" value="Submit" name="submit" />
</form>

JavaServlet-Code :

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Iterator;
import nl.captcha.Captcha;

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

List errorMsgs = new LinkedList();
try{
    //Validate Captcha
    HttpSession session = request.getSession(true);
    String userCaptcha = request.getParameter("captcha");
    Captcha captcha = (Captcha) session.getAttribute(Captcha.NAME);
    if (!captcha.isCorrect(userCaptcha)) {
        errorMsgs.add("Please input the correct Captcha value.");
    }
} catch (RuntimeException e) {
    errorMsgs.add("An unexpected error: " + e.getMessage());
    RequestDispatcher view = request.getRequestDispatcher("/error.view");
    view.forward(request, response);
}

Jedoch hielt ich immer diese Fehlermeldung:

StandardWrapperValve[Captcha]: PWC1406: Servlet.service() for servlet Captcha threw exception
java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed

Wie erstelle ich eine session auf meinem servlet? Wie kann ich dieses Problem beheben?

Danke Ihnen sehr.

  • Woher erhalten Sie die Sitzung aus? sind es einige wichtige Teile Ihrer Methode fehlt? Wo ist HttpSession session = request.getSession(); oder ähnliches? wie kann Sie erwerben session-Objekt?
  • Ich glaube, ich versehentlich gelöscht, diese nach Prüfung, zum code Hinzugefügt, HttpSession session = request.getSession(true);
InformationsquelleAutor jl. | 2010-01-13
Schreibe einen Kommentar