Cet article partage le code détaillé de Java pour vérifier si l'utilisateur a été connecté et réalise la connexion automatique pour votre référence. Le contenu spécifique est le suivant
1. Vérifiez que l'utilisateur est déjà connecté
Package CN.Hongxin.Filter; Import Java.io.ioException; Importer Javax.servlet.filter; Importer Javax.servlet.filterchain; Importer Javax.servlet.FilterConfig; Importer Javax.servlet.ServletException; Importer Javax.Servlet.ServleRequest; Importer Javax.Servert.Serger javax.servlet.http.httpservletRequest; Importer javax.servlet.http.httpservletResponse; import javax.servlet.http.httpcession; classe publique LoginFilter implémente Filter {public void init (filterConfig filterConfig) lève ServletException {} public void Dofilter (ServletRequest Request, ServletResponse Response, FilterChain Chain) lance ioException, servlexception {// forçage demande à http ... httservlerequest req = (httpsserv); // Obtenir la session httpSession ss = req.getSession (); // Obtenez l'utilisateur de la session if (ss.getAttribute ("utilisateur") == null) {System.err.println ("vous n'êtes pas encore connecté"); req.getSession (). setAttribute ("msg", "Veuillez vous connecter en premier"); // Redirection vers la connexion httpservletResponse resp = (httpservletResponse) réponse; resp.sendRedirect (req.getContextPath () + "/ index.jsp"); [W2]} else {// liset chain.dofilter (request, réponse); }} public void destroy () {}}Configurez dans web.xml et considérez JSPS / *:
<filter> <filter-name> Login </ Filter-Name> <Lilter-Class> cn.itcast.filter.loginfilter </filter-Class> </filter> <Lilter-Mapping> <filter-Name> Login </ Filter-Name> <Url-Pattern> / JSPS / * </url-potern> <url-sattern </mapping filtre>
2. Réalisez la connexion automatique
La connexion automatique consiste à aider les utilisateurs à se connecter sans saisir à nouveau leur nom d'utilisateur et leur mot de passe lors de l'utilisation de cette page Web à plusieurs reprises.
Cela signifie que l'utilisateur enregistre les informations de connexion de l'utilisateur et la personne à un cookie de fichier local.
Nom, valeur nouveau cookie (clé, valeur);
Chemin - La valeur par défaut est le chemin où se trouve le serlvet qui enregistre actuellement le cookie.
Si le cookie est dans un tel chemin: http: // loclhost: 8080 / project / abc / aservlet, le chemin du cookie est: http: // loclhost / project / abc
Alors cela signifie:
Seul le servlet situé dans le répertoire http: // loclhost / project / ABC peut lire la valeur de ce cookie.
si:
Enregistrer la classe Cookie: http: // loclhost: 8080 / project / a / b / aservlet, le chemin par défaut du cookie est; http: // loclhost / project / a / b
Étape 1: développer une page de connexion
<C: Choison> <C: When test = "$ {vide sessionscope.name}"> <form name = "x" metheth = "post" action = "<c: url value = '/ liginServlet' />"> name: <input type = "text" name = "name" /> <br/> n ° Auto: <entrée type = "radio" name = "auto" value = "- - 1" type = "radio" name = "auto" value = "1"> 1 jour <br/> <input type = "radio" name = "auto" value = "7"> 1 semaine <br/> <input type = "soume" Value = '/ LoginServlet' //> "> LoginServlet '/ LoginServlet' //"> LoginServlet </a> </ C: Sinon> </ C: Choose>Étape 2: Enregistrer les cookies avec succès
public void doPost (requette httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {// recevoir le nom d'utilisateur String name = request.getParameter ("name"); String auto = request.getParameter ("auto"); // Mettez les informations de l'utilisateur dans session request.getSession (). SetAttribute ("nom", nom); // Défendez si Auto est -1 if (! Auto.equals ("- 1")) {int day = Integer.ParseInt (auto); // 1 | 7 int secondes = 60 * 60 * 24 * jour; // Déclarer Cookie Cookie C = New Cookie ("Autologin", nom); C.SetMaxage (secondes); C.SetPath (request.getContextPath ()); // Enregistrer la réponse cookie.addcookie (c); }}Étape 3: La connexion automatique doit être réalisée si vous avez besoin d'accès à une page de ce site Web.
Écrivez un scrutin pour considérer toute URL = / *. Lisez tous les cookies dans Dofilter. Y a-t-il un nom de cookie avec le nom d'autologine?
Lâchez toujours.
Public void Dofilter (ServLetRequest Request, ServletResponse Response, FilterChain Chain) lève IOException, ServletException {// lire le cookie ici httpservletRequest req = (httpservletRequest) request; // Obtenez tous les cookies cookies [] cs = req.getcookies (); if (cs! = null) {for (cookie c: cs) {if (c.getName (). equals ("autologin")) {// s'il y a un cookie qui est automatiquement connecté à la chaîne value = c.getValue (); // nom d'utilisateur // ne connecte pas avec succès à req.getSession (). SetAttribute ("nom", valeur); casser; }}} //, qu'il soit automatiquement connecté à chaîne.dofilter (demande, réponse); }Quatrième implique: Configurer toutes les URL = / * dans web.xml
<filter> <filter-name> Auto </ Filter-Name> <Filter-Class> cn.itcast.filter.Autofilter </ Filter-Class> </ Filter> <Lilter-Mapping> <filter-Name> Auto </filter-name> <Url-Pattern> / * </rll-Pattern> </filter-mapping>
Étape 5: sortie de développement
System.err.println ("Exit utilisateur"); // Supprimer l'intégralité de la session Request.getSession (). Invalidate (); Cookie C = nouveau cookie ("autologine", "DDD"); C.SetMaxage (0); C.SetPath (request.getContextPath ()); réponse.addcookie (c); // request.getSession (). RemoveAtTribute ("nom"); réponse.SendRedirect (request.getContextPath () + "/ index.jsp");Étape 6: Optimiser le code
Étant donné que l'utilisateur entrera également dans la méthode Dofilter de l'autofiilter lors de la connexion manuelle et lira tous les cookies pour le traverser une fois. Et cette traversée est redondante pour l'utilisateur.
Par conséquent, l'URL de connexion doit être utilisée dans Dofiler.
Et vous ne pouvez pas vous connecter automatiquement lors de la connexion.
Ce qui précède concerne cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde.