JSP Traitement de formulaire

Lorsque nous naviguons sur des pages web, nous devons souvent soumettre des informations au serveur et laisser le programme backend les traiter. Dans le navigateur, les méthodes GET et POST sont utilisées pour soumettre des données au serveur.


Méthode GET

La méthode GET ajoute les informations encodées de la requête après l'URL, en séparant l'URL et les informations encodées par un signe "?". Comme montré ci-dessous :

http://www.example.com/hello?key1=value1&key2=value2

La méthode GET est la méthode par défaut du navigateur pour passer des paramètres. Il est recommandé de ne pas utiliser la méthode GET pour des informations sensibles telles que les mots de passe.

Lors de l'utilisation de GET, il existe une limite sur la taille des données transmises (notez qu'il ne s'agit pas d'une limite sur le nombre de paramètres), avec un maximum de 1024 octets.


Méthode POST

Certaines informations sensibles, telles que les mots de passe, peuvent être transmises via la méthode POST ; la soumission des données POST est implicite.

Les données soumises par POST ne sont pas visibles, tandis que GET transmet les données via l'URL (vous pouvez regarder la barre d'adresse de votre navigateur).

JSP utilise getParameter() pour obtenir les paramètres passés, et la méthode getInputStream() est utilisée pour traiter les requêtes provenant du flux de données binaires du client.


Lecture des données de formulaire en JSP

  • getParameter():Utilisez la méthode request.getParameter() pour obtenir les valeurs des paramètres de formulaire.

  • getParameterValues():Obtenez des données de types tels que checkbox (même nom mais valeurs multiples). Recevez des variables de type tableau, par exemple, le type checkbox.

  • getParameter():Cette méthode permet d'obtenir les noms de toutes les variables et elle renvoie une Enumeration.

  • getInputStream():Appelez cette méthode pour lire les flux de données binaires provenant du client.


Exemple d'utilisation de la méthode GET avec une URL

Voici une URL simple qui utilise la méthode GET pour passer des paramètres dans l'URL :

http://localhost:8080/testjsp/main.jsp?name=Example&url=http://ww.example.com

testjsp est l'adresse du projet.

Voici le programme JSP dans le fichier main.jsp utilisé pour traiter les données de formulaire soumises par le client. Nous utilisons la méthode getParameter() pour obtenir les données soumises :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h1>使用 GET 方法读取数据</h1>
<ul>
<li><p><b>站点名:</b>
   <%= request.getParameter("name")%>
</p></li>
<li><p><b>网址:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

Ensuite, nous y accédons via un navigateurhttp://localhost:8080/testjsp/main.jsp?name=Example&url=http://ww.example.comLe résultat de sortie est le suivant :


Exemple d'utilisation de la méthode GET avec un formulaire

Voici un formulaire HTML simple qui soumet les données du client via la méthode GET àmain.jspdans le fichier :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>

<form action="main.jsp" method="GET">
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

Enregistrez le code HTML ci-dessus dans le fichier test.htm. Placez le fichier dans le répertoire WebContent du projet JSP actuel (même répertoire que main.jsp).

En accédant àhttp://localhost:8080/testjsp/test.htmlpour soumettre les données du formulaire au fichier main.jsp, le GIF de démonstration est affiché ci-dessous :

Remplissez les informations dans les champs de formulaire « Nom du site » et « URL », puis cliquez sur le bouton « Envoyer », le résultat sera affiché.


Exemple d'utilisation de la méthode POST avec un formulaire

Ensuite, utilisons la méthode POST pour transmettre les données de formulaire. Modifiez le code dans les fichiers main.jsp et Hello.htm, comme indiqué ci-dessous :

Code du fichier main.jsp :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h1>使用 POST 方法读取数据</h1>
<ul>
<li><p><b>站点名:</b>
<%
// 解决中文乱码的问题
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8");
%>
   <%=name%>
</p></li>
<li><p><b>网址:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

Dans le code, nous utilisonsnew String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8")pour convertir l'encodage afin d'éviter les caractères chinois mal affichés.

Voici le code modifié de test.htm :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>

<form action="main.jsp" method="POST">
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

En accédant àhttp://localhost:8080/testjsp/test.htmlpour soumettre les données du formulaire au fichier main.jsp, le GIF de démonstration est affiché ci-dessous :


Transmission de données de cases à cocher vers un programme JSP

La case à cocher peut transmettre une ou même plusieurs données.

Voici un code HTML simple ; enregistrez ce code dans le fichier test.htm :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>

<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="example"  /> Example
<input type="checkbox" name="taobao" checked="checked" /> 淘宝
<input type="submit" value="选择网站" />
</form>

</body>
</html>

Lorsqu'on accède au code ci-dessus dans un navigateur, l'affichage est le suivant :

Voici le code du fichier main.jsp pour traiter les données des cases à cocher :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h1>从复选框中读取数据</h1>
<ul>
<li><p><b>Google 是否选中:</b>
   <%= request.getParameter("google")%>
</p></li>
<li><p><b>Example是否选中:</b>
   <%= request.getParameter("example")%>
</p></li>
<li><p><b>淘宝是否选中:</b>
   <%= request.getParameter("taobao")%>
</p></li>
</ul>
</body>
</html>

En accédant àhttp://localhost:8080/testjsp/test.htmlpour soumettre les données du formulaire au fichier main.jsp, le GIF de démonstration est affiché ci-dessous :


Lecture de tous les paramètres de formulaire

Ci-dessous, nous utiliseronsHttpServletRequestdegetParameterNames()pour lire tous les paramètres de formulaire. Cette méthode permet d'obtenir les noms de toutes les variables, et elle renvoie une Enumeration.

Une fois que nous avons une Enumeration, nous pouvons appeler la méthode hasMoreElements() pour déterminer s'il y a d'autres éléments, et utiliser la méthode nextElement() pour obtenir le nom de chaque paramètre.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h1>读取所有表单参数</h1>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>参数名</th><th>参数值</th>
</tr>
<%
   Enumeration paramNames = request.getParameterNames();

   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getParameter(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
%>
</table>
</body>
</html>

Voici le contenu du fichier test.htm :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>

<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="example"  /> Example
<input type="checkbox" name="taobao" checked="checked" /> 
                                                淘宝
<input type="submit" value="选择网站" />
</form>

</body>
</html>

Maintenant, nous soumettons des données en accédant au fichier test.htm via un navigateur, et le résultat de sortie est le suivant :

En accédant àhttp://localhost:8080/testjsp/test.htmlpour soumettre les données du formulaire au fichier main.jsp, le GIF de démonstration est affiché ci-dessous :

Vous pouvez essayer d'utiliser le code JSP ci-dessus pour lire d'autres objets, tels que des zones de texte, des boutons radio, des listes déroulantes et d'autres formes de données.

Autres extensions