webentwicklung-frage-antwort-db.com.de

lesen der Formulardaten in Servlet. Daten, die mit der Post-Methode und dem Servlet gebucht wurden, wurden mit? q = test1 aufgerufen

Hey, ich versuche die Formulardaten in einem mit post-Methode gesendeten Servlet zu lesen. Und das Servlet heißt OnlineExam?q=saveQuestion. Jetzt arbeitet das Servlet als:

public class OnlineExam extends HttpServlet {
protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
if(request.getParameter("q").equals("saveQuestion")){
                /*
                 * Save the question provided with the form as well as save the uploaded file if any.
                 */
                saveQuestion(request);
            }
}

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
//      doGet(request, response);
        saveQuestion(request);
    }
public String saveQuestion(HttpServletRequest request){         
        System.out.println(request.getParameter("question"));

        return "";

    }       
}

HTML-Formular:

<form action="OnlineExam?q=saveQuestion" method="post">
        <fieldset>
        <legend>Question</legend>
        <textarea class="questionArea" id="question" name="question">Enter Question.</textarea>
        <br class="clearFormatting"/>               
        <input class="optionsInput" value="optionA" name="optionA" onfocus = "clearValues('optionA')" onblur = "setValues('optionA')"/>
        <br class="clearFormatting"/>

        <input class="optionsInput" value="optionB" name="optionB" onfocus = "clearValues('optionB')" onblur = "setValues('optionB')"/>
        <br class="clearFormatting"/>

        <input class="optionsInput" value="optionC" name="optionC" onfocus = "clearValues('optionC')" onblur = "setValues('optionC')"/>
        <br class="clearFormatting"/>

        <input class="optionsInput" value="optionD" name="optionD" onfocus = "clearValues('optionD')" onblur = "setValues('optionD')"/>
        <br/>
        <input class="optionsInput" value="answer" name="answer" onfocus="clearValues('answer')" onblur="setValues('answer')"/>     
        <input type="submit" value="Save" />
        <input type="reset" value="Cancel" />
        <button style="display: none" onclick="return deleteQuestion()" >Delete</button>
        </fieldset>
        </form>

So kann jeder veranschaulichen, wie das Servlet tatsächlich aufgerufen wird. Ich meine, was ist der Steuerungsfluss, d. H. Wie die Dinge in diesem Servlet funktionieren. 

Und wie konnte ich dort den param1 im Servlet lesen?.

ps: Ich möchte kein Formular mit der get-Methode posten.

8
vinit

Sie sollten den Wert von q in Ihrer doPost nicht in Ihrer doGet erhalten. Da Sie method="post" verwenden, ist im Servlet die doPost diejenige, die nicht die doGet aufgerufen hat. Entfernen Sie den Code in Ihrer doGet und fügen Sie ihn in doPost ein. Und Sie doPost muss so aussehen wie unter dem Code.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    if(request.getParameter("q").equals("saveQuestion")){
        saveQuestion(request);
    }
}
6
ace

Ist das gelöst?

Ich stehe vor demselben Problem. Ich versuchte es 

Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
    System.out.println((String)paramNames.nextElement());
}

es werden 0 Elemente angezeigt, daher werden die Formulardaten nicht vom Servlet gelesen.

Ich habe die Antwort in einem anderen Thread erhalten. enctype=multipart/form-data verursachte dies. Nach dem Entfernen aus dem Formular konnte er Daten lesen.

4
Mohit Verma

wenn Sie POST Daten an das Servlet. doPost werden, werden sie aufgerufen.

Innerhalb von doPost() können Sie auf Anfrageparameter zugreifen

request.getParameter("param1");
4
Jigar Joshi

Wenn Sie in Ihrem Formular auf die Schaltfläche "Submit" klicken, wird die doPost-Methode Ihres Servlets aufgerufen. Dies wird durch die Methode bestimmt, die Sie auf der HTML-Seite in das "Formular" schreiben. Die URL-Parameter (q = saveQuestion) stehen Ihrem Code in der Methode doPost weiterhin zur Verfügung. Sie scheinen sich unter dem Eindruck zu befinden, dass die URL-Parameter von der Methode doGet und die Formularparameter von der Methode doPost verarbeitet werden. Das ist nicht der Fall.

1
DaveH

Ich weiß, dass dies ein alter Thread ist, aber ich konnte keine Antwort darauf finden, als ich suchte. Daher poste ich meine Lösung für jemanden, der dasselbe Problem mit dem Erhalten von Null von Formularparametern in der Dopost-Funktion seines Servlets hat.

Ich hatte ein ähnliches Problem, als ich mit request.getParameters ("param1") Nullwerte erhielt. Funktionen. Nach stundenlangem Herumspielen stellte ich fest, dass der von mir verwendete param1 die ID für das von mir angeforderte Eingabe-Tag war. Das war falsch. Ich musste das Attribut NAME des Eingabe-Tags verwenden, um den korrekten Wert des Eingabefelds zu erhalten. Das war alles was es war. Ich musste nur einen Namen hinzufügen und den Parameter mit diesem Namen abrufen, wodurch das Problem behoben wurde.

Hoffe das hilft jemandem.

1
Travis
doPost() {
  processRequest(request, response);
  //to do
}

Entfernen Sie/comment processRequest(request, response) und versuchen Sie es erneut. Jetzt sollten Sie keine Nullwerte erhalten.

0
Milan-SJ

Versuchen Sie es mit dem folgenden Code request.getParameter("param1");

0
Gnanz