In unserem Leben ist es bereits sehr häufig für die automatische Anmeldung für Konten. Daher verwenden wir Filter, um diese Funktion zu implementieren.
Es wird hauptsächlich die automatische Anmeldung des Benutzers und die abgebrochene automatische Anmeldung sowie die Realisierung der automatischen Anmeldung an einem Tag oder n Tagen vorgestellt. Nachdem die IP des Benutzers zur Blacklist hinzugefügt wurde, wird der Filter direkt verwendet, um zu einer Warnseite zurückzukehren.
Die Funktion des Filters ist sehr leistungsfähig. Wir müssen das Servlet nur nach dem geschriebenen Front-End-Backend hinzufügen, um diese Funktion zu realisieren.
PS: Dies ist nur eine Demonstration. Ich simulierte den Teil der Zugriffsdatenbank von mir selbst und konzentrierte mich hauptsächlich auf die Realisierung der automatischen Anmeldefunktion.
Rezeption Code:
Ob der Vordergrundcode erfolgreich ist oder nicht, wird auf dieser Seite angezeigt. Verwendete Techniken: Anwendung von JSTL -Tags, Sitzungswert Wert
<%@ page Language = "java" import = "java.util. <html> <kopf> </head> <body> <c: if test = "$ {! leere Sessionscope.Error}"> Ihr Passwort oder Benutzername ist falsch. <!-Nach der Anzeige müssen Sie den Wert in-> <c: entfernen var = "Fehler" scope = "session"/> </c: if> <c: if test = "$ {leere Sessionscope.User}" var = "boo"> <h2> Dies ist die Seite für Login </h2> <Form Action = "<c: url value =". type = "text" name = "name" /> <br/> pwd: <Eingabe type = "text" name = "pwd" /> <br/> Nicht automatisch angemeldet in: <Eingabe type = "radio" name = "Zeit" value = "0" /> <br/> Eines Tag: <Eingabe type "type" name = "time" time "timy" timy "timy" timy "timy" time "timy" timy "type" timy "type" time "timy" type "time" time "type" type "time" type "time" type "timy" type "time" 1 "1" /> <Br/> <Br/> <Br/> <Br/> <Br/> <Br/> <Br/> <Br/> <Br/>. /> <br/> <Eingabe type = "subGing" value = "subieren"/> </form> </c: if> <c: if test = "$ {! boo}"> Willkommen, $ {SESSIsionScope.User}, erfolgreich in <a href = ""> Modul 1 </a> <a href = "> modul 2"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> ">"> "<a href =" <a href = "<a href =" <a. value = '/cancelautologin' //> "> covornautologin </a> </c: if> </body> </html>Der Implementierungscode von Servlet:
Wie der vorherige Code ist es nur für die Interaktion mit der Rezeption verantwortlich: Die darin verwendete Technologie beinhaltet URL -Codierung, der Wert im Cookie, die Sitzung befindet sich auf der Seite und die Seite wird gesprungen (weitergeleitet).
public void dopost (httpServletRequest request, httpServletResponse -Antwort) löst ServletException aus, ioException {String name = request.getParameter ("Name"); String pwd = request.getParameter ("pwd"); String time = request.getParameter ("Zeit"); if (name! // Mit Chinesisch kompatibel, müssen wir name = urlencoder.encode (name, "utf-8") codieren; pwd = urlencoder.encode (pwd, "utf-8"); Cookie C = New Cookie ("Autologin", Name+","+PWD); // Dieser Wert kann auf diese Weise nicht verwendet werden. Für Sicherheitsüberlegungen müssen wir wissen, dass die Verschlüsselung oder Sekundärverschlüsselung, int _time = 60*60*24*Integer.Valueof (Zeit) verwendet werden; C.SetMaxage (_time); response.addcookie (c); response.sendredirect (request.getContextPath ()+"/index.jsp"); // Die Standardeinstellung im Filter besteht darin, die Umleitung abzufangen, und die Weiterleitung ist die direkte Weiterleitung. Der Filter ist jedoch nicht einfach zu handhaben, aber Sie müssen ihn nur in web.xml konfigurieren. } else {request.getSession (). setAttribute ("error", "1"); response.sendredirect (request.getContextPath ()+"/index.jsp"); }}Bis jetzt habe ich das Gefühl, dass es keine Technologie gibt. Der gleiche Code wie die vorherigen ist jetzt die Funktion des Filters.
Sichere Login:
Wir haben dynamisch importiert, um sich zuvor sicher anzumelden, um zu verhindern, dass Benutzer sich nach dem Eintritt in das Projekt anmelden, ohne sich anzumelden. Sie können die Schnittstelle nach Belieben eingeben, indem Sie das Projekt eingeben. Dynamischer Import kann diese Funktion erreichen, aber es ist besser, Filter zu verwenden.
Im Allgemeinen ist Dofilter () im Filter geschrieben; Sie müssen nur feststellen, ob der Sitzungscontainer null ist. Dies bedeutet, dass dies nicht angemeldet ist. Kehren Sie einfach zur Anmeldeschnittstelle zurück. Ansonsten lass es gehen
Der Code wird vorgestellt:
public void dofilter (servletRequest request, servletResponse response, filterchain kette) löst ioException, servletException {httpServletRequest req = (httpServletRequest) an; HttpServletResponse resp = (httpServletResponse) Antwort; String Session = (String) req.getSession (). GetAtTribute ("Benutzer"); if (session == null) {System.out.println ("abnormale Login"); resp.sendredirect (req.getContextPath ()+"/index.jsp"); } else {System.out.println ("erfolgreicher Login"); chain.dofilter (req, resp); }}Charaktercodierung:
Das Problem der Charaktercodierung. In der Vergangenheit musste ich es jedes Mal manuell in den Dopost () des Servlets eingeben. Jedes Servlet benötigt Eingaben, was zu problematisch ist. Daher verwenden wir Filter, um es zu implementieren.
Der Code wird vorgestellt:
<span style = "Schriftgröße: 18px;"> Public void Dofilter (ServletRequest Request, ServletResponse-Antwort, Filterchain-Kette) löst IoException, ServletException {request.setcharactercoding (Zeichen); // Entfernen Sie die von der Client empfangene CLICTContentType ("text/html; chain.dofilter (Anfrage, Antwort); } @Override public void init (filterconfig config) löst servleTexception aus {charakter = config.getInitParameter ("Zeichen"); // a </span> <span style = "Schriftgröße: 18px; Schriftfamilie: Arial, Helvetica, Sans-Serif; } </span>Das obige Zeichen ist als globale Variable definiert und der Anfangswert ist in web.xml konfiguriert.
Der Code von web.xml wird dargestellt:
<filter> <filter-name>character</filter-name> <filter-class>cn.hncu.Filter.CharacterFilter</filter-class> <init-param> <param-name>character</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
Automatisches Login:
Hauptidee: Die automatische Anmeldung erfordert die Feststellung, dass die Sitzung Werte enthält. Wenn es dann vorhanden ist, gehen Sie nach dem Anmeldung, wenn es keine gibt, zum Finden des örtlichen Keks, existieren Sie und passen Sie die Datenbank an. Wenn das Spiel erfolgreich ist, fügen Sie den Sitzungscontainer hinzu.
Der Code wird vorgestellt:
Public void Dofilter (ServletRequest Request, ServletResponse -Antwort, Filterchain -Kette) löst IOException, ServletException aus {// Melden Sie sich automatisch an, Sie müssen festlegen, dass in der Sitzung Werte enthalten. Wenn dies der Fall ist, haben Sie sich angemeldet und nein, Sie müssen auf die Daten im Cookie zugreifen. Die Daten im Cookie //, ob sie der Datenbank übereinstimmen? Ja, legen Sie den Wert in der Sitzung hier fest, nein, lass httpServletRequest req = (httpServletRequest) Anfrage; HttpServletResponse resp = (httpServletResponse) Antwort; String Session = (String) req.getSession (). GetAtTribute ("Benutzer"); if (session == null) {// zeigt an, dass derzeit kein Cookie angemeldet wurde CS [] = req.getCookies (); if (cs! String [] strs = value.split (","); // In logSerlvet verwenden wir zuerst die Codierung und dann die Komma -Verbindung. Wir müssen String name = urdecoder.decode (strs [0], "utf-8") umkehren; String pwd = urdecoder.decode (strs [1], "utf-8"); // Name, PWD -Daten in den Hintergrund, um auf die Datenbank zuzugreifen, schreiben wir einfach if (name.equals (pwd)) {req.getSession (). SetAttribute ("user", name); // Setzen Sie den Parameterbruch in Sitzung; }}}}} chain.dofilter (req, resp); // Sie müssen loslassen. . }Benutzer auf schwarze Liste
Benutzer auf schwarze Liste, melden Sie sich nicht an, teilen Sie ihnen einfach das Ergebnis mit
Der Code wird vorgestellt:
public void dofilter (servletRequest request, servletResponse response, filterchain kette) löst ioException, servletException {httpServletRequest req = (httpServletRequest) an; HttpServletResponse resp = (httpServletResponse) Antwort; String ip = req.getremoteaddr (); // Zugriff auf IP; System.out.println (IP+"IIPP"); if (set.contains (ip)) {// im BlackList System.out.println ("set"); resp.getWriter (). print ("Sie sind in der Blacklist .. <a href = '"+req.getContextPath ()+"/index.jsp'> return </a>"); // Rückgabe ist nicht möglich, da der Index beim Anfordern von Server} else {chain.dofilter (req, resp) direkt abfängt; }} Der von der schwarze Liste zurückgegebene Typ ist die beste. Ich habe es hier manuell hinzugefügt. Ich sollte es ursprünglich aus der Datenbank lesen, indem ich eine Werkzeugklasse schreibe. Es kann nicht nur überprüft, sondern auch hinzufügen, löschen und ändern - Blacklist.
Der Code wird vorgestellt:
Hashset ist als globale Variable definiert und die Set enthält enthält, was sehr effizient ist.
public void init (filterconfig arg0) löst ServletException {// Hier ist eine Blacklist -Liste aus der Datenbank abgerufen. Hier ist nur ein einfacher Simulationssatz ("192.132.0.12"); // Dies ist eine schwarze IP, die aus der Hintergrunddatenbank erhalten wird. set.add ("localhost"); set.add ("192.132.32.4"); set.add ("127.0.0.1"); }Automatische Anmeldung abbrechen
Wenn die automatische Anmeldung immer als unsicher angesehen wird, stellen wir fest, dass keine automatische Anmeldung
Wir wussten vor diesem automatischen Anmeldung auf der in Cookies gespeicherten Technologie. Hier müssen wir nur die Cookies löschen.
Da das Abbrechen der automatischen Anmeldung ein Hyperlink ist, wird es als Servlet geschrieben.
Der Code wird vorgestellt:
public void dopost (httpServletRequest req, httpServletResponse resp) löst ServletException aus, ioException {Cookie cc = new Cookie ("Autologin", ""); // Die Methode zum Löschen des Cookie soll einen Connkie mit demselben Namen erstellen und die Setmaxage des Cookies festlegen. cc.setMaxage (0); cc.setPath (req.getContextPath ()); resp.addcookie (cc); resp.sendredirect (req.getContextPath ()+"/index.jsp"); }Das obige kann diese kurzen Antwortfunktionen realisieren.
Das obige ist eine detaillierte Erläuterung des relevanten Wissens, das der Editor an Javaee verwendet hat, indem sie Filter verwenden, um eine automatische Anmeldung und sichere Anmeldung zu erreichen, um die automatische Anmeldung abzubrechen. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!