Maison  >  Article  >  Java  >  Discutez en détail du délai de définition du délai d'expiration (expiration) de la session en Java

Discutez en détail du délai de définition du délai d'expiration (expiration) de la session en Java

coldplay.xixi
coldplay.xixiavant
2021-02-19 17:37:284119parcourir

Discutez en détail du délai de définition du délai d'expiration (expiration) de la session en Java

Recommandation d'apprentissage gratuite : Tutoriel de base Java

Après la connexion au système général, une invalidation de session en cours sera être réglé pour garantir que les utilisateurs se déconnectent automatiquement et détruisent la session s'ils n'interagissent pas avec le serveur pendant une longue période
Il existe trois méthodes de configuration spécifiques :
1. Définir dans le conteneur Web (prendre Tomcat comme un exemple)
dans les paramètres de tomcat -7.0confweb.xml, voici la configuration par défaut dans tomcat7.0 :

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

le délai d'expiration de session par défaut de tomcat est de 30 minutes, qui peut être modifié si nécessaire. un nombre ou 0 signifie qu'il n'y a pas de limite au délai d'expiration de la session

Il convient de noter ici que le temps fixé par cette session est calculé en fonction du serveur et non du client. Donc, si vous déboguez le programme, vous devez modifier l'heure de test côté serveur plutôt que côté client

2. Définissez

<!--时间单位为分钟-->
<session-config>
    <session-timeout>15</session-timeout>
</session-config>

dans le web.xml du projet ici. signifie qu'il expirera dans 15 minutes

3. Définissez le niveau de priorité de

session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效

de trois manières via le code Java : 1 < 2 < systèmes généraux, cela peut également être nécessaire après l'expiration de la session. Effectuez certaines opérations :

1. Contrôlez le nombre d'utilisateurs Lorsque la session échoue, le nombre d'utilisateurs dans le système est réduit d'un. dans une certaine plage pour garantir les performances du système

2. Contrôler qu'un utilisateur se connecte plusieurs fois Quand Lorsque la session est valide, si le même utilisateur se connecte, il sera demandé qu'il s'est connecté. Lorsque la session expire, vous pouvez vous connecter directement avec une invite différente
Alors, comment effectuer une série d'opérations après l'expiration de la session ?
Ici, vous devez utiliser un écouteur, c'est-à-dire que lorsque la session échoue pour diverses raisons, l'écouteur peut écouter puis exécuter le programme défini dans l'écouteur
La classe d'écoute est : HttpSessionListener La classe a deux méthodes , sessionCreated et sessionDestroyed
Vous pouvez hériter de cette classe et les implémenter séparément
sessionCreated fait référence à la méthode exécutée lors de la création de la session
sessionDestroyed fait référence à la méthode exécutée lorsque la session échoue
Exemple :

public class OnlineUserListener implements HttpSessionListener{
    public void sessionCreated(HttpSessionEvent event){
        HttpSession session=event.getSession;
        String id=session.getId()+session.getCreationTime();
        SummerConstant.UserMap.put(id,Boolean.TRUE);//添加用户
    }
    
    public void sessionDestroyed(HttpSessionEvent event){
        HttpSession session=event.getSession;
        String id=session.getId()+session.getCreationTime();
        synchronized(this){
            SummerConstant.USERNum--;//用户数减-
            SummerConstant.UserMap.remove(id);//从用户组中移除掉,用户组为一个map
        }
    }
}

Ensuite, déclarez simplement l'écouteur dans web.xml


    com.demo.OnlineUserListener

Recommandations d'apprentissage associées :

Bases de Java

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer