Maison > Java > javaDidacticiel > le corps du texte

Qu'est-ce qu'une session jsp/servlet

(*-*)浩
Libérer: 2019-05-24 13:52:52
original
2656 Les gens l'ont consulté

L'ensemble du processus dans lequel le client ouvre une connexion avec le serveur, envoie une requête jusqu'à ce que le serveur réponde à la demande du client est appelé une session.

Cours recommandé : Tutoriel Java.

Qu'est-ce qu'une session jsp/servlet

La communication entre le navigateur et le serveur se fait via le protocole HTTP, et le protocole HTTP est un protocole "sans état", qui ne peut pas enregistrer les informations client, c'est-à-dire la connexion est déconnecté une fois la réponse terminée et la demande suivante doit être reconnectée. Lorsqu'un utilisateur bascule entre plusieurs pages du même site Web, il est impossible de déterminer s'il s'agit du même client. La technologie de suivi de session peut répondre à cette exigence.

Cookie

Lors de la réponse à une requête, le serveur peut enregistrer certaines données sur le client sous forme de paires « clé-valeur » via les informations de réponse. Lorsque le navigateur accède à nouveau à la même application, le cookie d'origine avec l'ID de session sera transmis au serveur via les informations de demande. Le serveur réseau représente chaque client en identifiant l'ID de session unique, identifiant ainsi l'étape suivante de cette demande de client.

Cookie n'est pas un objet intégré, vous devez créer vous-même une instance de Cookie. Il s'agit d'un morceau d'information textuelle écrite par le serveur au client. Ces informations peuvent être modifiées, donc généralement le cookie stockera des informations non sensibles lorsque le client demandera à nouveau au serveur, le cookie sera envoyé au serveur. sous la forme d'un en-tête de requête. À ce moment-là, le serveur peut distinguer qui y accède.

Les cookies utilisés pour le suivi de session sont appelés cookies de session. Le nom du cookie pour le suivi de session dans la spécification Servlet doit être JSESSIONID, qui est stocké dans la mémoire du navigateur.

Les cookies peuvent être utilisés pour maintenir l'état de la session de l'utilisateur, mais les informations des cookies sont stockées sur le client, ce qui présente un risque de sécurité majeur, et les navigateurs généraux ont des limites strictes sur le nombre de cookies et la taille des données. Dans les applications Web, l'état de session est généralement maintenu via l'objet HttpSession

Cookie cookie = new Cookie("键", "值");       //创建cookie
cookie.setMaxAge(60*60*24);                 //设置cookie的有效期
cookie.setPath("/");                        //设置cookie的有效范围(路径)
response.addCookie(cookie);                 //将cookie写入到客户端
Copier après la connexion

Session

La session est stockée côté serveur, ce qui est plus sécurisé. Chaque utilisateur dispose d'une session différente, qui ne peut pas être partagée entre utilisateurs.

La session repose sur Cookie. Si Cookie est désactivé, la session sera également invalide.

La technologie de session est une solution côté serveur, qui maintient l'état via le serveur. En Java, il est créé en appelant la méthode getSession de HttpServletRequest (en utilisant true comme paramètre). Lors de la création d'une session, le serveur générera un identifiant de session unique pour la session, et cet identifiant de session sera utilisé pour retrouver la session créée dans les requêtes suivantes ; une fois la session créée, vous pouvez appeler la méthode liée à la session pour ajouter du contenu ; à la session, et ces contenus ne seront enregistrés que sur le serveur, et seul l'identifiant de session est envoyé au client ; lorsque le client enverra à nouveau une demande, il apportera cet identifiant de session et le serveur trouvera la session correspondante en fonction sur l'identifiant de session et utilisez-le à nouveau. En formalisant un tel processus, le statut de l'utilisateur est maintenu.

session.setAttribute(String name,Object obj);       //往session中存放内容(通过键和值的形式)
session.getAtrribute(String name);                  //通过键从session中获取内容
session.removeAttribute(String name);               //把存储在session中的对象移除
session.invalidate();                               //销毁session
Copier après la connexion

Champ de formulaire caché

Le champ de formulaire caché consiste à ajouter l'ID de session au formulaire HTML caché (type d'entrée masqué). Rediriger et transférer

Transmettre les informations via . Il est soumis au serveur via un formulaire, mais ne s'affiche pas.

Par exemple, le deuxième formulaire obtient le contenu du premier formulaire, accepte le contenu du premier formulaire comme champ masqué (le type de zone de texte est masqué) et le transmet à nouveau au troisième formulaire du milieu. En termes simples, l'ordre des demandes est le suivant : Formulaire 1 - - > Formulaire 2 - - > Formulaire 3. Cependant, le formulaire 3 doit utiliser le contenu soumis par le formulaire 1, le formulaire 2 sera donc nécessaire comme transition. . Le contenu est enregistré en tant que champ masqué avant d'être transmis au formulaire trois.

Réécrire l'URL

Encodez l'ID de session dans l'URL. Exemple : counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980 De cette manière, le suivi de session peut être réalisé même si le navigateur ne prend pas en charge les cookies.

Pour la réplication d'URL, le serveur extrait l'ID de session de l'URI demandé et associe la requête à la session correspondante. Ensuite, lors de l'accès aux données de session, la page JSP est traitée de la même manière qu'en utilisant les cookies de suivi de session. ID exactement de la même manière. Par conséquent, la mise en œuvre de la session dépend de la technologie de cookie ou de copie d'URL.

String sessionId = request.getRequestedSessionId();     //获得sessionId
Copier après la connexion

Réécrivez la valeur de l'URL via l'encodeURL (StringURL) de l'objet de réponse :

<a href="<%=response.encodeURL("index.jsp") %>"> 
    index页面</a>
Copier après la connexion

Cette méthode déterminera automatiquement si le client prend en charge les cookies. Si le client prend en charge les cookies, l'URL sera affichée intacte. Si le client ne prend pas en charge les cookies, la méthode encodeURL() sera appelée et l'ID de session de l'utilisateur sera automatiquement réécrit dans l'URL. Le résultat après réécriture peut ressembler à ceci :

a href="index.jsp?jsessionid=0E0C61100AEB06DE6A95EB1CD1DA8158">index页面</a>
Copier après la connexion

L'interface HttpServletResponse définit deux méthodes de réécriture d'URL :

méthode encodeURL, utilisée pour les hyperliens Réécrivez l'URL définie dans le L'attribut action du formulaire

la méthode encodeRedirectURL est utilisée pour réécrire l'URL transmise à la méthode HttpServletResponse.sendRedirect()

Ils décident de réécrire ou non l'URL selon que le message de demande contient ou non le champ d'en-tête Cookie. En passant l'URL en paramètre à ces deux méthodes, elles peuvent terminer la réécriture de l'url et ajouter le paramètre jsessionid et sa valeur après l'url. Vous pouvez désactiver les cookies du navigateur, puis mener une expérience pour vérifier s'il existe un paramètre jsessionid et sa valeur derrière l'URL dans le fichier source de la page Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal