Comment utiliser les cookies et la technologie de session en Java
Solution au protocole http sans état :
HTTP est un protocole sans état. Les protocoles sans état n'exigent pas que le serveur conserve des informations ou des états sur chaque utilisateur lors de plusieurs requêtes.
Mais certaines applications Web peuvent devoir suivre la progression de l'utilisateur d'une page à une autre, par exemple lorsque le serveur Web doit personnaliser le contenu de la page Web pour l'utilisateur. Les solutions à ces situations incluent :
Utilisation de cookies HTTP.
Session côté serveur.
Variable cachée (lorsque la page actuelle contient un formulaire)
Réécriture d'URL à l'aide de paramètres codés en URI, par exemple /index.php?session_id=some_unique_session_code.
La raison pour laquelle le protocole a été rendu apatride est que le serveur n'a pas besoin de suivre l'état de plusieurs requêtes, et non qu'il ne puisse pas le faire s'il le souhaite. Cela simplifie le contrat entre le client et le serveur et, dans de nombreux cas (comme par exemple la fourniture de données statiques via un CDN), minimise la quantité de données à transférer. Si le serveur doit maintenir l'état d'accès client, la structure permettant d'émettre et de répondre aux demandes sera plus complexe. En fait, la simplicité du modèle est l’une de ses plus grandes caractéristiques.
1. Cookie
1. Le concept de cookie
Le cookie est une technologie de session qui est créée et maintenue sur le serveur mais enregistrée côté navigateur
Scénarios d'application de cookies : mémorisez le nom d'utilisateur et le mot de passe, pas besoin de vous connecter. pendant sept jours
2. Création de cookies
//创建cookie Cookie cookie = new Cookie("username", "admin"); //将cookie响应到浏览器 response.addCookie(cookie);
Comment les cookies sont représentés dans les messages :
Si un cookie est créé sur le serveur et répond au navigateur, le message de réponse apparaîtra : Set-Cookie: username=admin
Après cela, chaque fois que le navigateur enverra une requête au serveur, il transportera ce cookie, et il apparaîtra dans le message de demande : Cookie : username=admin
Après avoir répondu au cookie du navigateur, il sera stocké dans la mémoire courante du navigateur, lorsque le navigateur est fermé, la mémoire courante du navigateur sera libérée, les cookies seront donc effacés. Par conséquent, la durée de validité par défaut de la session va du moment où le navigateur est ouvert jusqu'au moment où le navigateur est fermé
3 Obtenez le cookie
//获取浏览器发送请求所携带的所有cookie Cookie[] cookies = request.getCookies(); if(cookies != null){ for (Cookie cookie : cookies) { System.out.println(cookie.getName() + "," + cookie.getValue()); } }
4 Modifiez le cookie
a> format de valeur, il vous suffit d'en créer des différents avec la même clé. Si vous répondez au navigateur, la valeur du cookie correspondant sera écrasée
b>Utilisez cookie.setValue()
/*Cookie cookie = new Cookie("username", "root"); response.addCookie(cookie);*/ Cookie[] cookies = request.getCookies(); if(cookies != null){ for (Cookie cookie : cookies) { if(cookie.getName().equals("username")){ cookie.setValue("zhangsan"); response.addCookie(cookie); } } }
5. le cookie
Après avoir répondu au cookie du navigateur, il sera enregistré dans la mémoire courante du navigateur, lorsque le navigateur est fermé, la mémoire courante du navigateur sera libérée, le cookie sera donc effacé. Par conséquent, la durée de validité par défaut de la session va du moment où le navigateur est ouvert jusqu'au moment où le navigateur est fermé
Mais la durée de validité du cookie peut être définie via cookie.setMaxAge()
a> time est un entier négatif, il n'y a aucun effet, c'est-à-dire la durée de validité Ouvrez le navigateur pour fermer le navigateur
b> Lorsque la durée de validité définie est 0, cela signifie que le cookie est immédiatement supprimé
c> la durée de validité définie est un entier positif
Si la durée de validité est inférieure à une session, le cookie a expiré. Après la durée spécifiée, il sera automatiquement supprimé de la mémoire en cours d'exécution
Si la durée effective est supérieure à une session, lorsque le navigateur est fermé, les données du cookie seront enregistrées sur le disque. Lorsque le navigateur sera à nouveau ouvert, les données du disque seront restaurées dans la mémoire courante
6. cookie.setPath();
Lorsque le cookie est créé et répondu au navigateur, le cookie avec le chemin effectif est défini, uniquement lors de l'accès au chemin spécifié. Le cookie sera transporté
Session
1. de session
session est une technologie de session qui est créée et maintenue sur le serveur et enregistrée côté serveur
Scénarios d'application de session : enregistrement du statut de connexion de l'utilisateur
2, Observez les changements dans le message lors de l'obtention de la session
Obtenez l'objet de session via request.getSession()
Lorsque request.getSession() est accédé pour la première fois dans cette session pour obtenir l'objet de session, une clé apparaîtra dans le message de réponse. Il s'agit d'un cookie JSESSIONID
Chaque chaque fois qu'une requête est envoyée au serveur via le navigateur, elle transportera ce cookie JSESSIONID
Même lors de l'accès au serveur, utilisez request.getSession() pour obtenir à nouveau l'objet de session, tant qu'il y a JSESSIONID dans le cookie du message de requête , ce cookie n'apparaîtra plus dans le message de réponse
3. Le principe de la séance
Q :
Le principe de la séance ?
Quelle est la relation entre la session et les cookies ?
Pourquoi obtient-on les mêmes séances en une seule séance ?
Réponse :
Lorsque la session est obtenue via request.getSession(), le cookie avec la clé JSESSIONID dans le message de requête sera obtenu
S'il n'y a pas de cookie avec la clé JSESSIONID dans le message de requête, cela signifie. que la session en cours vient de démarrer, c'est la première fois que l'on obtient l'objet de session dans la session en cours. À ce moment, l'objet de session sera créé à l'intérieur du serveur, et un cookie sera créé avec la clé JSESSIONID et la valeur une séquence aléatoire d'UUID, puis l'objet de session créé sera stocké dans une collection de cartes maintenue par le serveur. avec la séquence aléatoire UUID comme clé, en utilisant l'objet de session comme valeur, et répond enfin au cookie de JSESSIONID au navigateur
若请求报文中存在键为JSESSIONID的cookie,此时获取该cookie的值,即UUID随机序列,以UUID随机序列为键,从服务器所维护的map集合中就可以获取唯一的session对象
4、session的常用方法
4.1、session存在域对象的数据
void setAttribute(String name, Object value);
Object getAttribute(String name);
void removeAttribute(String name);
4.2、设置session的时效
session的时效指在指定时间内,若没有对session进行任何的操作,此时session会自动失效
a>通过web.xml设置,单位是分钟
<session-config> <session-timeout>30</session-timeout> </session-config>
b>通过session.setMaxInactiveInterval()设置,单位是秒
session.setMaxInactiveInterval(1800);
4.3、强制使session失效
session.invalidate()
5、session的钝化和活化
session的钝化指服务器关闭,但是浏览器没有关闭,此时session中的数据会被序列化到磁盘上
session的活化指服务器启动,并且浏览器仍然没有关闭,此时会将序列化到磁盘上的数据重新加载到内存中
注意:若session中存储的是实体类对象,此时若要钝化,则该实体类和该实体类的成员变量也都要实现序列化的接口
三、cookie和session的区别
1、cookie存储在浏览器端,session存储在服务器端,因此cookie相对而言不安全
2、cookie只能存储字符串类型的键值对,session可以存储任意类型的数据,因此若存储相同的数据,cookie可能会产生大量的cookie
3、由于每次浏览器发送请求都会携带cookie,若有大量的cookie,就会造成网络负担
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

PHP convient au développement Web, en particulier dans le développement rapide et le traitement du contenu dynamique, mais n'est pas bon dans les applications de la science des données et de l'entreprise. Par rapport à Python, PHP présente plus d'avantages dans le développement Web, mais n'est pas aussi bon que Python dans le domaine de la science des données; Par rapport à Java, PHP fonctionne moins bien dans les applications au niveau de l'entreprise, mais est plus flexible dans le développement Web; Par rapport à JavaScript, PHP est plus concis dans le développement back-end, mais n'est pas aussi bon que JavaScript dans le développement frontal.

PHP et Python ont chacun leurs propres avantages et conviennent à différents scénarios. 1.PHP convient au développement Web et fournit des serveurs Web intégrés et des bibliothèques de fonctions riches. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et une bibliothèque standard puissante. Lors du choix, il doit être décidé en fonction des exigences du projet.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

Les raisons pour lesquelles PHP est la pile technologique préférée pour de nombreux sites Web incluent sa facilité d'utilisation, son soutien communautaire solide et son utilisation généralisée. 1) Facile à apprendre et à utiliser, adapté aux débutants. 2) Avoir une énorme communauté de développeurs et des ressources riches. 3) Largement utilisé dans WordPress, Drupal et d'autres plateformes. 4) Intégrez étroitement aux serveurs Web pour simplifier le déploiement du développement.
