JSP - Formularverarbeitung
In diesem Kapitel werden wir die Formularverarbeitung in JSP erläutern. Sie müssen auf viele Situationen gestoßen sein, in denen Sie einige Informationen von Ihrem Browser an den Webserver und letztendlich an Ihr Backend-Programm übergeben müssen. Der Browser verwendet zwei Methoden, um diese Informationen an den Webserver zu übergeben. Diese Methoden sind die GET-Methode und die POST-Methode.
Die Methoden der Formularverarbeitung
Lassen Sie uns nun die Methoden in der Formularverarbeitung diskutieren.
GET-Methode
Die GET-Methode sendet die codierten Benutzerinformationen, die an die Seitenanforderung angehängt sind. Die Seite und die verschlüsselten Informationen werden durch das? Zeichen wie folgt -
http://www.test.com/hello?key1=value1&key2=value2
Die GET-Methode ist die Standardmethode zum Übergeben von Informationen vom Browser an den Webserver und erzeugt eine lange Zeichenfolge, die in Ihrem Browser angezeigt wird Location:box. Es wird empfohlen, die GET-Methode besser nicht zu verwenden. Wenn Sie ein Kennwort oder andere vertrauliche Informationen haben, die an den Server weitergegeben werden sollen.
Die GET-Methode hat eine Größenbeschränkung: only 1024 characters can be in a request string.
Diese Informationen werden mit übergeben QUERY_STRING header und wird über die Umgebungsvariable QUERY_STRING zugänglich sein, die mit verarbeitet werden kann getQueryString() und getParameter() Methoden des Anforderungsobjekts.
POST-Methode
Eine allgemein zuverlässigere Methode zum Übergeben von Informationen an ein Backend-Programm ist die POST-Methode.
Diese Methode packt die Informationen genauso wie die GET-Methode, sendet sie jedoch nicht als Textzeichenfolge nach einem? In der URL wird es als separate Nachricht gesendet. Diese Nachricht wird in Form der Standardeingabe an das Backend-Programm gesendet, die Sie analysieren und für Ihre Verarbeitung verwenden können.
JSP verarbeitet diese Art von Anforderungen mit getParameter() Methode zum Lesen einfacher Parameter und getInputStream() Methode zum Lesen des vom Client kommenden binären Datenstroms.
Lesen von Formulardaten mit JSP
JSP verarbeitet das Parsen von Formulardaten je nach Situation automatisch mit den folgenden Methoden:
getParameter() - Du rufst an request.getParameter() Methode zum Abrufen des Werts eines Formularparameters.
getParameterValues() - Rufen Sie diese Methode auf, wenn der Parameter mehrmals angezeigt wird und mehrere Werte zurückgibt, z. B. das Kontrollkästchen.
getParameterNames() - Rufen Sie diese Methode auf, wenn Sie eine vollständige Liste aller Parameter in der aktuellen Anforderung wünschen.
getInputStream() - Rufen Sie diese Methode auf, um den vom Client kommenden Binärdatenstrom zu lesen.
Beispiel für eine GET-Methode unter Verwendung einer URL
Die folgende URL übergibt zwei Werte mit der GET-Methode an das HelloForm-Programm.
http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI
Unten ist die main.jspJSP-Programm zur Eingabe von Eingaben durch den Webbrowser. Wir werden das benutzengetParameter() Methode, die den Zugriff auf die übergebenen Informationen sehr einfach macht -
<html>
<head>
<title>Using GET Method to Read Form Data</title>
</head>
<body>
<h1>Using GET Method to Read Form Data</h1>
<ul>
<li><p><b>First Name:</b>
<%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last Name:</b>
<%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>
Geben Sie nun ein http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI in Ihrem Browser Location:box. Dies führt zu folgendem Ergebnis:
Verwenden der GET-Methode zum Lesen von Formulardaten
|
Beispiel für eine GET-Methode mit Formular
Das folgende Beispiel übergibt zwei Werte mithilfe des HTML-FORMULARS und der Schaltfläche "Senden". Wir werden dieselbe JSP main.jsp verwenden, um diese Eingabe zu verarbeiten.
<html>
<body>
<form action = "main.jsp" method = "GET">
First Name: <input type = "text" name = "first_name">
<br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>
</body>
</html>
Behalten Sie diesen HTML-Code in einer Datei Hello.htm und fügen Sie ihn ein <Tomcat-installation-directory>/webapps/ROOT directory. Wann würden Sie zugreifenhttp://localhost:8080/Hello.htmerhalten Sie die folgende Ausgabe.
<p> Versuchen Sie, den Vor- und Nachnamen einzugeben, und klicken Sie dann auf die Schaltfläche Senden, um das Ergebnis auf Ihrem lokalen Computer anzuzeigen, auf dem Tomcat ausgeführt wird. Basierend auf der bereitgestellten Eingabe wird ein ähnliches Ergebnis wie im obigen Beispiel generiert.Beispiel für eine POST-Methode mit Formular
Lassen Sie uns in der obigen JSP eine kleine Änderung vornehmen, um sowohl die GET- als auch die POST-Methode zu handhaben. Unten ist diemain.jsp JSP-Programm zur Verarbeitung der vom Webbrowser mit den Methoden GET oder POST angegebenen Eingaben.
Tatsächlich gibt es keine Änderung in der obigen JSP, da die einzige Möglichkeit zum Übergeben von Parametern geändert wird und keine Binärdaten an das JSP-Programm übergeben werden. Konzepte zur Dateiverwaltung werden in einem separaten Kapitel erläutert, in dem der binäre Datenstrom gelesen werden muss.
<html>
<head>
<title>Using GET and POST Method to Read Form Data</title>
</head>
<body>
<center>
<h1>Using POST Method to Read Form Data</h1>
<ul>
<li><p><b>First Name:</b>
<%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last Name:</b>
<%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>
Es folgt der Inhalt der Hello.htm Datei -
<html>
<body>
<form action = "main.jsp" method = "POST">
First Name: <input type = "text" name = "first_name">
<br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>
</body>
</html>
Lass uns jetzt behalten main.jsp und hallo.htm in <Tomcat-installationdirectory>/webapps/ROOT directory. Wenn Sie zugreifenhttp://localhost:8080/Hello.htmerhalten Sie die folgende Ausgabe.
Versuchen Sie, den Vor- und Nachnamen einzugeben, und klicken Sie dann auf die Schaltfläche "Senden", um das Ergebnis auf Ihrem lokalen Computer anzuzeigen, auf dem Tomcat ausgeführt wird.
Basierend auf den bereitgestellten Eingaben erhalten Sie ähnliche Ergebnisse wie in den obigen Beispielen.
Übergeben von Checkbox-Daten an das JSP-Programm
Kontrollkästchen werden verwendet, wenn mehr als eine Option ausgewählt werden muss.
Es folgt ein Beispiel HTML code, CheckBox.htm, für ein Formular mit zwei Kontrollkästchen.
<html>
<body>
<form action = "main.jsp" method = "POST" target = "_blank">
<input type = "checkbox" name = "maths" checked = "checked" /> Maths
<input type = "checkbox" name = "physics" /> Physics
<input type = "checkbox" name = "chemistry" checked = "checked" /> Chemistry
<input type = "submit" value = "Select Subject" />
</form>
</body>
</html>
Der obige Code generiert das folgende Ergebnis:
Im Folgenden finden Sie das JSP-Programm main.jsp, mit dem die vom Webbrowser für die Schaltfläche "Kontrollkästchen" eingegebenen Daten verarbeitet werden.
<html>
<head>
<title>Reading Checkbox Data</title>
</head>
<body>
<h1>Reading Checkbox Data</h1>
<ul>
<li><p><b>Maths Flag:</b>
<%= request.getParameter("maths")%>
</p></li>
<li><p><b>Physics Flag:</b>
<%= request.getParameter("physics")%>
</p></li>
<li><p><b>Chemistry Flag:</b>
<%= request.getParameter("chemistry")%>
</p></li>
</ul>
</body>
</html>
Das obige Programm generiert das folgende Ergebnis:
Reading Checkbox Data
Maths Flag :: on
Physics Flag:: null
Chemistry Flag:: on
Alle Formularparameter lesen
Es folgt ein allgemeines Beispiel, das verwendet getParameterNames()Methode von HttpServletRequest zum Lesen aller verfügbaren Formularparameter. Diese Methode gibt eine Aufzählung zurück, die die Parameternamen in einer nicht angegebenen Reihenfolge enthält.
Sobald wir eine Aufzählung haben, können wir die Aufzählung auf standardmäßige Weise mit der hasMoreElements() Methode, um zu bestimmen, wann zu stoppen und zu verwenden nextElement() Methode, um jeden Parameternamen zu erhalten.
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>HTTP Header Request Example</title>
</head>
<body>
<center>
<h2>HTTP Header Request Example</h2>
<table width = "100%" border = "1" align = "center">
<tr bgcolor = "#949494">
<th>Param Name</th>
<th>Param Value(s)</th>
</tr>
<%
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>
</center>
</body>
</html>
Es folgt der Inhalt der Hello.htm - -
<html>
<body>
<form action = "main.jsp" method = "POST" target = "_blank">
<input type = "checkbox" name = "maths" checked = "checked" /> Maths
<input type = "checkbox" name = "physics" /> Physics
<input type = "checkbox" name = "chemistry" checked = "checked" /> Chem
<input type = "submit" value = "Select Subject" />
</form>
</body>
</html>
Versuchen Sie nun, JSP mit der obigen Datei Hello.htm aufzurufen. Dies würde ein Ergebnis wie das folgende erzeugen, basierend auf der bereitgestellten Eingabe -
Alle Formularparameter lesen
Param Name | Param Wert (e) |
---|---|
Mathe | auf |
Chemie | auf |
Sie können die obige JSP versuchen, um die Daten aller anderen Formulare zu lesen, die andere Objekte wie Textfelder, Optionsfelder oder Dropdown-Listen usw. enthalten.