Wenn Sie die URL über die Adressleiste des Browsers eingeben und Ressourcen anfordern, indem Sie Parameter über ? übergeben, wird der Parameter nach ? als „Abfragezeichenfolge“ bezeichnet, die doGet() des Hintergrund-Servlets auslöst, da der direkte Zugriff erfolgt Die Methode über die Adressleiste des Browsers ist die GET-Methode.
Werfen wir einen Blick auf die Auswirkung des Methodenattributs des Formulars auf die Parameterübergabe.
Originalformular:
Parameterinformationen: Abfragezeichenfolge
Bei Angabe des Methodenattributs des Formulars:
Parameterinformationen: Formulardaten
Die Reaktion der beiden oben genannten Methoden besteht darin, die aktuelle Seite nach der Aktualisierung anzuzeigen. Da das Formular das Aktionsattribut nicht angibt, ist die standardmäßig übermittelte Adresse die aktuelle Seite.
Greifen Sie nun auf das Servlet zu, indem Sie das Aktionsattribut angeben, um mehr über das Methodenattribut zu erfahren.
TestServlet.java-Kernquellcode:
@WebServlet("/servlet/TestServlet")
öffentliche Klasse TestServlet erweitert HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse Response) throws ServletException, IOException {
response.getWriter().print("doGet()");
}
protected void doPost (HttpServletRequest-Anfrage, HttpServletResponse-Antwort) wirft ServletException, IOException {
response.getWriter().print("doPost()");
}
}
Der dritte Fall: method="get" action="/test/servlet/TestServlet"
Vierter Fall: method="post" action="/test/servlet/TestServlet"
TestServlet.java Get-Parametercode hinzufügen:
protected void doGet(HttpServletRequest request, HttpServletResponse Response) throws ServletException, IOException {
String param = request.getParameter ("type");
response.getWriter().print("doGet() get type=" param);
}
protected void doPost(HttpServletRequest request, HttpServletResponse Response) löst eine ServletException aus , IOException {
String param = request.getParameter("type");
response.getWriter().print("doPost() get type=" param);
}
Im fünften Fall übergibt method="get" den Parameter action = "/servlet/TestServlet?type=01" nach der Aktion und ruft gleichzeitig die Parameter im Hintergrund-Servlet ab
At Diesmal die Adressleiste des Browsers: http://localhost:8080/test/servlet/TestServlet?username=
Es kann festgestellt werden, dass doGet() im Hintergrund den Parametertyp nicht abrufen kann.
Gleichzeitig wird festgestellt, dass der Typparameter nicht zur „Abfragezeichenfolge“ hinzugefügt wird „
Im sechsten Fall übergibt method="post" den Parameter action = "/servlet/TestServlet?type=01" nach der Aktion und gleichzeitig Zeit im Hintergrund Servlet Parameter in
Sie können feststellen, dass doPost() im Hintergrund den Parametertyp abrufen kann.
Gleichzeitig unterscheidet sich die Parameterspalte ein wenig von zuvor:
Es gibt sowohl „Abfragezeichenfolge“ als auch „Formulardaten“
Das Obige gibt uns also eine Offenbarung, das heißt, wenn wir Parameter nach der Aktion des Formulars übergeben, müssen wir die Methode des Formulars = „post“ manuell angeben, andernfalls werden wir es tun get Es kann die Parameter nicht erreichen, nachdem ?;
Missverständnis: Vorher haben wir Parameter über die URL in der Adressleiste des Browsers übergeben, auch über? Um dies zu erreichen, ruft es letztendlich die Methode doGet() auf. Wir glauben also, dass die Aktion in der Form (Standardmethode = „get“) übergeben werden kann? Komm und gib den Ginseng weiter.
Letzter Grund: (Persönliche Zusammenfassung) Beim Senden von Formulardaten in der Get-Methode wird die URL neu organisiert. Die Formulardaten werden nur in einer „Abfragezeichenfolge“ zusammengefasst und an die angegebene Adresse gesendet Aktion im Formular URL, sodass die ursprünglich über die ?-Methode übergebenen Parameter nicht übermittelt werden, da die URL nach der Neuorganisation verloren geht.
Aber wenn das Formular im Post-Modus gesendet wird, werden die Formulardaten und die Parameter danach separat gespeichert und zusammen an die durch die Aktion im Formular angegebene URL gesendet.
(Referenzressource) HTML-Formular: Warum kann eine Aktion keinen Get-Wert enthalten?
http://stackoverflow.com/questions/3548795/html-form-why-action-cant-have -get-value-in-it