Gestion des cookies JSP
Les cookies sont des fichiers texte stockés sur l'ordinateur client. Ils enregistrent une grande quantité d'informations sur la trajectoire. Basé sur la technologie des servlets, JSP peut évidemment prendre en charge les cookies HTTP.
Il y a généralement trois étapes pour identifier les clients réguliers :
Le script du serveur envoie une série de cookies au navigateur. Tels que le nom, l'âge, le numéro d'identification, etc.
Le navigateur stocke ces informations localement sur l'ordinateur au cas où cela serait nécessaire.
La prochaine fois que le navigateur enverra une requête au serveur, il enverra également ces informations de cookie au serveur, puis le serveur utilisera ces informations pour identifier l'utilisateur ou faire d'autres choses.
Cette section vous apprendra comment paramétrer ou réinitialiser les cookies, comment y accéder et comment les supprimer.
Le traitement des cookies JSP nécessite un encodage et un décodage du chinois, la méthode est la suivante :
String str = java.net.URLEncoder.encode("中文"); //编码 String str = java.net.URLDecoder.decode("编码后的字符串"); // 解码
Analyse des cookies
Les cookies sont généralement définis dans les en-têtes HTTP (bien que JavaScript puisse définir des cookies directement dans le navigateur). En JSP, la configuration d'un cookie nécessite d'envoyer l'en-tête d'information suivant au serveur :
HTTP/1.1 200 OK Date: Fri, 04 Feb 2015 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=php; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=php.cn Connection: close Content-Type: text/html
Comme vous pouvez le constater, l'en-tête d'information Set-Cookie contient une paire clé-valeur, une heure GMT (Greenwich Mean Time), et un chemin. Les paires clé-valeur seront codées sous forme d'URL. Le champ de date d'expiration est une instruction qui indique au navigateur après quel délai il peut effacer ce cookie.
Si votre navigateur est configuré pour stocker des cookies, il enregistrera ces informations jusqu'à leur expiration. Si une page visitée par l'utilisateur correspond au chemin et au nom de domaine indiqués dans le cookie, le navigateur renverra le cookie au serveur. L'en-tête d'information côté navigateur ressemble à ce qui suit :
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz
Le script JSP accède à ces cookies via la méthode getCookies() dans l'objet request, qui renvoie un tableau d'objets Cookie.
Méthodes des cookies des servlets
Le tableau suivant répertorie les méthodes couramment utilisées dans les objets Cookie :
Numéro de série | Méthode & Description |
---|---|
1 | public void setDomain (Modèle de chaîne) |
2 | chaîne publique getDomain() |
3 | public void setMaxAge(int expiration) |
4 | public int getMaxAge() |
5 | chaîne publique getName() |
. 6 | public void setValue(String newValue) |
7 | chaîne publique getValue() |
8 | public void setPath(String uri) |
9 | chaîne publique getPath() |
10 | public void setSecure(drapeau booléen) |
11 | public void setComment (Objectif de la chaîne) |
12 | chaîne publique getComment() |
Utiliser JSP pour définir des cookies
Utiliser JSP pour définir des cookies implique trois étapes :
(1) Créer un objet Cookie : Appeler le constructeur Cookie , en utilisant un nom et une valeur de cookie comme paramètres, qui sont tous deux des chaînes.
Cookie cookie = new Cookie("key","value");
N'oubliez pas que ni le nom ni la valeur ne peuvent contenir d'espaces ou les caractères suivants :
[ ] ( ) = , " / ? @ : ;
(2) Définissez la période de validité : Appelez setMaxAge() fonction pour indiquer au cookie combien de temps (en secondes) il est valide. L'opération suivante fixe la période de validité à 24 heures.
cookie.setMaxAge(60*60*24);
(3) Envoyer un cookie à l'en-tête de réponse HTTP : Appelez la fonction réponse.addCookie() pour ajouter un cookie à l'en-tête de réponse HTTP.
response.addCookie(cookie);
Exemple de démonstration
Le code du fichier main.jsp est le suivant :
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <% // 编码,解决中文乱码 String str = URLEncoder.encode(request.getParameter("name"),"utf-8"); // 设置 name 和 url cookie Cookie name = new Cookie("name", str); Cookie url = new Cookie("url", request.getParameter("url")); // 设置cookie过期时间为24小时。 name.setMaxAge(60*60*24); url.setMaxAge(60*60*24); // 在响应头部添加cookie response.addCookie( name ); response.addCookie( url ); %> <html> <head> <title>设置 Cookie</title> </head> <body> <h1>设置 Cookie</h1> <ul> <li><p><b>网站名:</b> <%= request.getParameter("name")%> </p></li> <li><p><b>网址:</b> <%= request.getParameter("url")%> </p></li> </ul> </body> </html>
Ce qui suit est un simple formulaire HTML qui soumet les données du client au fichier main.jsp , et définissez le cookie :
<!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 :
<🎜. >
Essayez de saisir « nom du site » et « adresse Web », puis cliquez sur le bouton Soumettre, il affichera « nom du site » et « adresse Web » sur votre écran, et définirez à la fois « nom du site » et « Web ». cookies d'adresse.Utilisez JSP pour lire les cookiesPour lire les cookies, vous devez appeler la méthode request.getCookies() pour obtenir un tableau d'objets javax.servlet.http.Cookie. parcourez ce tableau et utilisez les méthodes getName() et getValue() pour obtenir le nom et la valeur de chaque cookie.
<h3 exemple de démonstration< h3="">
Lisons le cookie dans l'exemple précédent Voici le code du fichier cookie.jsp :<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>获取 Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // 获取cookies的数据,是一个数组 cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> 查找 Cookie 名与值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; out.print("参数名 : " + cookie.getName()); out.print("<br>"); out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>"); out.print("------------------------------------<br>"); } }else{ out.println("<h2>没有发现 Cookie</h2>"); } %> </body> </html>Après l'accès au navigateur, le résultat de sortie est :
Suppression des cookies à l'aide de JSP La suppression des cookies est très simple. Si vous souhaitez supprimer un cookie, suivez simplement les étapes indiquées ci-dessous :
- Récupérez un cookie existant et stockez-le dans l'objet Cookie.
- Fixez la date d'expiration du cookie à 0.
- Ajoutez à nouveau ce cookie à l'en-tête de réponse.
Exemple de démonstrationLe programme suivant supprime un cookie nommé "name". Lorsque vous exécutez cookie.jsp pour la deuxième fois, le nom sera nul.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>获取 Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // 获取当前域名下的cookies,是一个数组 cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> 查找 Cookie 名与值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("name") == 0 ){ cookie.setMaxAge(0); response.addCookie(cookie); out.print("删除 Cookie: " + cookie.getName( ) + "<br/>"); } out.print("参数名 : " + cookie.getName()); out.print("<br>"); out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>"); out.print("------------------------------------<br>"); } }else{ out.println("<h2>没有发现 Cookie</h2>"); } %> </body> </html>est accessible via le navigateur, le résultat de sortie est :
Visitez http://localhost:8080/testjsp/cookie.jsp à nouveau, vous obtiendrez les résultats suivants :
Vous pouvez constater que le cookie nommé width="70%" "name" a disparu.
Vous pouvez également supprimer manuellement les cookies dans votre navigateur. Dans le navigateur IE, vous pouvez supprimer tous les cookies en cliquant sur l'élément de menu Outils, puis en sélectionnant Options Internet et en cliquant sur Supprimer les cookies.