Dieser Artikel teilt den detaillierten Code für Java mit, um zu überprüfen, ob der Benutzer angemeldet wurde, und erkennt die automatische Anmeldung für Ihre Referenz. Der spezifische Inhalt ist wie folgt
1. Überprüfen Sie, ob der Benutzer bereits angemeldet ist
Paket Cn.Hongxin.filter; import Java.io.ioxception; import Javax.servlet.filter; import Javax.servlet.filterchain; import Javax.servlet.filterconfig; Import Javax.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet.Servlet - javax.servlet.http.httpServletRequest; import javax.servlet.http.httpServletResponse; import javax.servlet.http.httpSession; öffentliche Klasse LoginFilter -implementiert Filter {public void init (filterconfig filterconfig) löst servletException {} public void dofilter (ServletRequest Request, ServletResponse -Antwort, Filterchain -Kette) aus, die IOException, servletException {// Forcing -Anfrage zum HttpLetPlet -HttpLet -Wunsch; // Session httpSession ss = req.getSession () abrufen; // Benutzer von Sitzung abrufen if (ss.getAttribute ("user") == null) {System.err.println ("Sie sind noch nicht angemeldet"); req.getSession (). setAttribute ("msg", "Bitte melden Sie sich in First"); // Umleiten Sie sich zur Anmeldung httpServletResponse resp = (httpServletResponse) Antwort; resp.sendredirect (req.getContextPath ()+"/index.jsp"); [W2]} else {// cain.dofilter (Request, Antwort); }} public void destroy () {}}Konfigurieren Sie in web.xml und betrachten Sie JSPS/*:
<Filter> <Filter-name> Login </filter-name> <filterklasse> cn.itcast.filter.loginfilter </filterklasse> </filter> <filter-mapping> <Filter-name> Login </filter-name> <URL-PATTERN>/JSPS/JSPS/*</url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </url-pattern> </filtermapping>
2. Automatische Anmeldung erkennen
Die automatische Anmeldung soll sich bei den Benutzern helfen, sich bei der Verwendung dieser Webseite erneut wieder einzugeben.
Dies bedeutet, dass der Benutzer die Anmeldeinformationen des Benutzers und die Person in einem lokalen Dateikocher speichert.
Name, Wert neuer Cookie (Schlüssel, Wert);
Pfad - Der Standardwert ist der Pfad, in dem sich der Serlvet befindet, der sich derzeit den Cookie befindet.
Wenn sich das Cookie in einem solchen Weg befindet: http: // lochost: 8080/project/abc/aservlet, lautet der Pfad des Cookies: http: // loclhost/project/abc
Dann bedeutet es:
Nur das Servlet im Verzeichnis http: // loclhost/project/ABC kann den Wert dieses Cookies lesen.
Wenn:
Speichern Sie die Cookie -Klasse: http: // lochost: 8080/project/a/b/aservlet, der Standardpfad des Cookie ist; http: // loclhost/project/a/b
Schritt 1: Entwickeln Sie eine Anmeldeseite
<C: Wählen Sie> <c: Wenn test = "$ {leere sesionscope.name}"> <Formular name = "x" methode = "post" action = "<c: url value = '/loginServlet'/>"> name: <Eingabe type = "text" name = "name"/> <br/> auto: <Eingabe type = "funk =" name "name" Typ = "Radio" name = "auto" value = "1"> 1 tag <br/> <Eingabe type = "radio" name = "auto" value = "7"> 1 Woche <br/> <Eingabe type = "subieren"/> </Form> </c: wenn> <c: ansonsten value = '/loginServlet' //> "> loginServlet '/loginServlet' //"> loginServlet </a> </c: ansonsten> </c: wählen>Schritt 2: Sparen Sie Cookies erfolgreich
public void dopost (httpServletRequest request, httpServletResponse -Antwort) löst ServletException aus, iOException {// Benutzername String name = request.getParameter ("Name"); String auto = request.getParameter ("auto"); // Benutzerinformationen in Sitzungsanforderung eingeben .GetSession (). SetAttribute ("Name", Name); // verteidigen Sie, ob Auto -1 -1 if (! Auto.equals (" -1") {int Day = Integer.ParSInt (Auto); // 1 | 7 int Sekunden = 60*60*24*Tag; // Cookie Cookie C = New Cookie ("Autologin", Name); C.SetMaxage (Sekunden); C.SetPath (request.getContextPath ()); // cookie response.addcookie (c); }}Schritt 3: Die automatische Anmeldung sollte erreicht werden, wenn Sie Zugriff auf eine Seite in dieser Website benötigen.
Schreiben Sie einen Prüfer, um alle URL =/*zu berücksichtigen. Lesen Sie alle Kekse in Dofilter. Gibt es einen Namen Cookie mit dem Namen Autologin?
Immer loslassen.
public void dofilter (servletRequest request, servletResponse antwort, filterchain kette) löst ioException, servletException {// cookie hier httpServletRequest req = (httpServletRequest) an. // alle Cookies Cookies [] cs = req.getCookies () erhalten; if (cs! brechen; }}} // unabhängig davon, ob es automatisch in chain.dofilter (Request, Antwort) angemeldet ist; }Viertens beinhaltet: Konfigurieren Sie alle URLS =/* in Web.xml
<Filter> <Filter-name> auto </filter-name> <filterklasse> cn.itcast.filter.autofilter </filterklasse> </filter> <filter-mapping> <filter-name> auto </filter-name> <URL-BUTERN>/*</url-patter> </filter-maping>
Schritt 5: Entwicklungsausgang
System.err.println ("Benutzerbezug"); // die gesamte Sitzungsanforderung löschen.getSession (). Invalidate (); Cookie C = New Cookie ("Autologin", "DDD"); C.SetMaxage (0); C.SetPath (request.getContextPath ()); response.addcookie (c); // request.getSession (). removeTtribute ("name"); response.sendredirect (request.getContextPath ()+"/index.jsp");Schritt 6: Optimieren Sie den Code
Da der Benutzer bei der manuellen Anmeldung auch die Dofilter -Methode von Autofiilter eingibt, und alle Cookies lesen, um sie einmal zu durchqueren. Und dieser Traversal ist für den Benutzer überflüssig.
Daher sollte die LoginServet -URL in Dofiler verwendet werden.
Und Sie können sich beim Auszeichnen nicht automatisch anmelden.
Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.