Cet article décrit la fonction d'implémentation Web Java qui passe automatiquement à la page de connexion après l'expiration de la session. Partagez-le pour votre référence, comme suit:
Grâce aux filtres, la session passera automatiquement à la page de connexion après son expiration.
Les filtres ne sont utiles que sur les serveurs compatibles avec le servlet Spécification version 2.3. Si votre application Web doit prendre en charge les serveurs hérités, vous ne pouvez pas utiliser de filtres.
1. Établir des filtres de base
L'établissement d'un filtre implique les cinq étapes suivantes:
1) Établissez un fichier de session de classe qui implémente l'interface du filtre . Cette classe nécessite trois méthodes, à savoir: Dofilter, init et détruire. La méthode Dofilter contient le code de filtrage principal, la méthode INIT établit l'opération de réglage et la méthode de détruire se nettoie.
2) Mettez le comportement de filtrage dans la méthode Dofilter . Le premier paramètre de la méthode Dofilter est l'objet ServLetRequest. Cet objet fournit au filtre un accès complet aux informations entrantes, y compris les données de formulaire, les cookies et les en-têtes de demande HTTP. Le deuxième paramètre est ServletResponse, qui est généralement ignoré dans des filtres simples. Le dernier paramètre est FilterChain, comme décrit à l'étape suivante, qui est utilisée pour appeler un servlet ou une page JSP.
3) Appelez la méthode Dofilter de l'objet SessionFilter . La méthode Dofilter de l'interface filtrante prend un objet FilterChain comme paramètre. Lors de l'appel de la méthode Dofilter de cet objet, le filtre connexe suivant est activé. Si aucun autre filtre n'est associé au servlet ou à la page JSP, la page servlet ou jsp est activée.
4) Enregistrer les filtres pour les pages servlet et JSP correspondantes . Utilisez des éléments de filtre et de mappage de filtre dans le fichier de descripteur de déploiement (web.xml).
5) Désactivez le servlet activateur . Empêcher les utilisateurs de contourner les paramètres du filtre à l'aide de l'URL du servlet par défaut.
Le code source est le suivant:
package com.base.filter; import java.io.ioexception; import javax.servlet.filter; importer javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletException; import javax.serserReSpERSE; import; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import javax.servlet.http.httpSession; import com.base.constants.SessionkeyConstants; Importation co.mvc.entity.User; // Filter Détroie, libérant généralement des ressources} / ** * Certaines URL doivent se connecter à l'accès (filtre de vérification de la session) * / public void dofilter (servletRequest arg0, servletResponse arg1, filterChain arg2) lance ioexception, servlexception {httpservletRequest request = (httpservletquest) arg0; HttpServletResponse Response = (HttpServletResponse) Arg1; HttpSession session = request.getSession (); // juger si la session expire if ((utilisateur) session.getAttribute (sessionkeyConstants.login) == null) {String errors = "Vous n'êtes pas encore connecté, ou la session a expiré. Veuillez vous connecter en premier!"; request.setAttribute ("message", erreurs); // Passez à la page de connexion request.getRequestDispatcher ("/ login.jsp"). Forward (demande, réponse); } else {arg2.dofilter (request, réponse); }} public void init (filterconfig arg0) lève ServletException {// initialiser l'opération, lire les paramètres d'initialisation de la configuration du filtre dans web.xml et répondre aux exigences que vous n'utilisez pas cette méthode}}2. Configurer dans le fichier de configuration web.xml
<! - Définir le temps d'expiration de la session à 30 minutes -> <session-Config> <session-timeout> 30 </ session-timeout> </ session-Config> <! - Session Filter Configuration lié -> <filter> <filter-Name> SessionFilter </filter-name> <filter-Class> COM.BASE.Filter.SessionFilter </filter-Class> <Filter-Name> SessionFilter </ Filter-Name> <URL-Pattern> / Contract / * </url-Pattern> <URL-Pattern> / User / * </url-Pattern> <Dispatcher> Forward </ Dispatcher> <! - Dans ce cas, si la demande commence par / contrat /… ou user /… et est adoptée par la méthode en avant de la demande Dispattre ou est directement adoptée à partir du client. -> <padipatcher> demande </spatcher> </filter-mapping>
Pour plus d'informations sur le contenu lié à Java, veuillez consulter les sujets de ce site: "Tutoriel de structure de données Java et d'algorithme", "Résumé des compétences de fichier Java et d'opération de répertoire", "Résumé de Java Operation Dom Node Skills" et "Résumé des compétences de fonctionnement de Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.