Traitement des formulaires JSP


Lorsque nous naviguons sur le Web, nous devons souvent soumettre des informations au serveur et laisser le programme en arrière-plan les traiter. Le navigateur utilise les méthodes GET et POST pour soumettre les données au serveur.


Méthode GET

La méthode GET ajoute les informations de codage demandées après l'URL, et l'URL et les informations de codage sont séparées par "?". Comme indiqué ci-dessous :

http://www.php.cn/hello?key1=value1&key2=value2

La méthode GET est la méthode par défaut permettant aux navigateurs de transmettre des paramètres. Il est recommandé de ne pas utiliser la méthode GET pour certaines informations sensibles, telles que les mots de passe.

Lors de l'utilisation de get, la taille des données transmises est limitée (notez que ce n'est pas le nombre de paramètres qui est limité), le maximum est de 1024 octets.


Méthode POST

Nous pouvons transmettre certaines informations sensibles, telles que les mots de passe, etc. via la méthode POST, les données de soumission sont implicites.

Les données soumises par le POST sont invisibles, GET est transmis dans l'URL (vous pouvez regarder la barre d'adresse de votre navigateur).

JSP utilise getParameter() pour obtenir les paramètres transmis, et la méthode getInputStream() est utilisée pour gérer la demande de flux de données binaires du client.


JSP lit les données du formulaire

  • getParameter() : Utilisez la méthode request.getParameter() pour obtenir la valeur du formulaire paramètre.

  • getParameterValues() : Obtenez des données telles que la classe de case à cocher (même nom, mais plusieurs valeurs). Recevez des variables de tableau, telles que le type de case à cocher

  • getParameterNames() :Cette méthode peut obtenir les noms de toutes les variables et cette méthode renvoie une émulation.

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


Exemple d'utilisation de la méthode GET de l'URL

Ce qui suit est une URL simple et utilise la méthode GET pour transmettre les paramètres dans l'URL :

http://localhost:8080/testjsp/main.jsp?name=php中文网&url=http://ww.php.cn

testjsp est l'adresse du projet.

Ce qui suit est le programme JSP du fichier main.jsp pour traiter les données du 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>php中文网(php.cn)</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 utilisons. le navigateur Visitez http://localhost:8080/testjsp/main.jsp?name=php Site Web chinois&url=http://ww.php.cnLe résultat de sortie est le suivant :


Utilisation de l'exemple de formulaire de la méthode GET

Ce qui suit est un formulaire HTML simple qui soumet les données du client via la méthode GET Dans le fichier main.jsp :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</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 ce fichier dans le répertoire WebContent du projet jsp en cours (le même répertoire que main.jsp).

Envoyez les données du formulaire au fichier main.jsp en visitant http://localhost:8080/testjsp/test.html Le Gif de démonstration est le suivant. :

Remplissez les informations dans les formulaires « Nom du site » et « Site Web » et cliquez sur le bouton « Soumettre », les résultats seront affichés.


Exemple d'utilisation de la méthode POST du formulaire

Ensuite, utilisons la méthode POST pour transmettre les données du formulaire et modifions les codes des fichiers main.jsp et Hello.htm comme suit :

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>php中文网(php.cn)</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 utilisons new String((request.getParameter("name")).getBytes("ISO-8859-1") ,"UTF-8 ") pour convertir l'encodage afin d'éviter l'apparition de caractères chinois tronqués.

Ce qui suit est le code modifié de test.htm :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</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.html Soumettez les données du formulaire dans le fichier main.jsp. Le Gif de démonstration est le suivant :


Transférer les données de la case à cocher vers le programme JSP

Checkbox checkbox Une ou même plusieurs données peuvent être transmises.

Ce qui suit est un simple code HTML et enregistrez le code dans le fichier test.htm :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>

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

</body>
</html>

Le code ci-dessus ressemblera à ceci lorsqu'il sera accédé par le navigateur :

Voici le code du fichier main.jsp, utilisé 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>php中文网(php.cn)</title>
</head>
<body>
<h1>从复选框中读取数据</h1>
<ul>
<li><p><b>Google 是否选中:</b>
   <%= request.getParameter("google")%>
</p></li>
<li><p><b>php中文网是否选中:</b>
   <%= request.getParameter("php")%>
</p></li>
<li><p><b>淘宝是否选中:</b>
   <%= request.getParameter("taobao")%>
</p></li>
</ul>
</body>
</html>

Soumettez le formulaire en accédant à http://localhost:8080/testjsp/test.html Données du fichier main.jsp, le Gif de démonstration est le suivant :


Lire tous les paramètres du formulaire

Ci-dessous, nous utiliserons Le getParameterNames() de HttpServletRequest est utilisé pour lire tous les paramètres du formulaire. Cette méthode peut obtenir les noms de toutes les variables.

Une fois que nous avons une énumération, nous pouvons appeler la méthode hasMoreElements() pour déterminer s'il y a d'autres éléments, et 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>php中文网(php.cn)</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>php中文网(php.cn)</title>
</head>
<body>

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

</body>
</html>

Nous accédons maintenant au fichier test.htm via le navigateur pour soumettre les données, et les résultats de sortie sont les suivants :

En accédant àhttp://localhost:8080/testjsp/test.html Soumettez les données du formulaire dans le fichier main.jsp. Le Gif de démonstration est le suivant. :

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