Cookies, Sitzungen und Filter werden normalerweise in Webanwendungen verwendet. Cookies und Sitzungen werden verwendet, um bestimmte Daten zu speichern. Filterfilter werden wirksam, nachdem der Browser eine Anfrage gestellt hat und bevor der Hintergrund eine bestimmte Anfrage ausführt. Der Grund, warum diese drei zusammengestellt werden, ist, dass sie oft kombiniert werden, wie beispielsweise einige Login -Programme .
Cookies sind der Browsermechanismus, und die Sitzung ist der Servermechanismus, aber tatsächlich werden Cookies vom Server generiert und dann an den Browser zurückgegeben, der nicht vom Browser selbst generiert wird. Wenn ein Browser eine Anfrage sendet, wird das Cookie zusammengebracht, wenn es einen gültigen Cookie hat.
Alle Cookies werden verwendet, weil das HTTP -Protokoll ursprünglich ein zustandsloses Protokoll ist, was bedeutet, dass der Server durch das HTTP -Protokoll selbst nicht bestimmen kann, ob der Browser zuvor darauf zugegriffen hat.
Die Schreibmethoden von Filter und Servlet sind ähnlich. Beim Schreiben des verwandten Code müssen Sie die Filterschnittstelle implementieren und die zugehörigen Methoden neu schreiben. Normalerweise wird die Dofiltermethode häufiger geändert. Wenn der Filtercode nach dem Schreiben effektiv sein muss, müssen bestimmte Konfigurationen in web.xml konfigurieren, wie das Konfigurieren von Servlets.
Hier ist ein einfacher Anmelde -Beispielcode, der Cookies, Sitzungen, Servlets und Filter kombiniert:
Definieren Sie eine Benutzerentitätsklasse, um als Datenbankdaten zu fungieren. Das Singleton -Muster wird hier verwendet, um sicherzustellen, dass nur ein Instanzobjekt existiert:
Paketmodelle; / ** * Benutzerinformation Entität Klasse * * @Author TuzongXun123 * */ Public Class UsModel {private String username; privates Zeichenfolgenkennwort; // Singleton -Modus, stellen Sie sicher, dass es nur eine Benutzerobjektinstanz öffentliche statische UsModel getInstance () {UsModel user = new UsModel ("Zhangsan", "123456") gibt; Benutzer zurückgeben; } private UsModel (String -Benutzername, String -Passwort) {this.username = userername; this.Password = Passwort; } public String getUnername () {return userername; } public String getPassword () {Kennwort zurückgeben; }} Benutzer melden Sie sich bei der Schnittstelle index.jsp an und verwenden Sie die JSP -Funktion in der Formularaktion, um den Projektpfad zu erhalten:
<%@ page Language = "java" import = "java.util. "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>cookieAndFilterTest</title> </head> <body> <form action="<%=request.getContextPath() %>/loginServlet" method="post"> userName: <input type="text" name="userName" /></br> password: <input type="password" name="password" /></br> <input type="submit" value="login"/> </form> </body> </html>
Entsprechender Hintergrundservlet:
Paket ServletTest; importieren java.io.ioException; importieren javax.servlet.servletException; import Javax.servlet.http.cookie; import Javax.servlet.http.httpServlet; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; import Javax.servlet.http.httpSession; Importmodelle.Usermodel; öffentliche Klasse LoginServlet erweitert HttpServlet (@Override protected void dagget (httpServletRequest req, httpServletRespon) aus. } @Override Protected void dopost (httpServletRequest req, httpServletResponse resp) löst ServletException aus, ioException {String username = req.getParameter ("Benutzername"); String password = req.getParameter ("Passwort"); // Datenbankdaten -UsModel user = UsModel.getInstance () simulieren; String dbusername = user.getUnername (); String dbpassword = user.getPassword (); if (dbusername.equals (Benutzername) && dbpassword.equals (Passwort)) {// Sowohl der Benutzername als auch das Passwort, beweisen Sie, dass die Anmeldung erfolgreich ist, Sitzung und Cookie httpSession Session = req.getSession (); Session.SetAttribute ("Benutzername", Benutzername); Session.SetAttribute ("Passwort", Passwort); Cookie Cookie = New Cookie ("Benutzername", Benutzername); Cookie Cookie2 = New Cookie ("Passwort", Passwort); // Setzen Sie die Speicherzeit von Cookies Cookie.setMaxage (60); Cookie2.SetMaxage (60); // Cookies an den Browser resp.addcookie (Cookie) senden; resp.addcookie (Cookie2); // Anforderung an Benutzerliste weiterleiten. } else {// Anmeldung zur Anmeldeseite req.getRequestDispatcher ("index.jsp"). Forward (req, resp); }; }} Aufforderung zum Eintauchen nach Anmeldezeiten:
Paket ServletTest; importieren java.io.ioException; importieren javax.servlet.servletException; import Javax.servlet.http.httpServlet; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; Importmodelle.Usermodel; Public Class UserListServlet erweitert HttpServlet (@Override protected void dagget (httpServletRequest req, httpServletRespon) aus DienerleceException, IOException {that.dopost (req, resp); } @Override Protected void dopost (httpServletRequest req, httpServletResponse resp) löst ServletException aus, IoException {UsModel user = UsModel.getInstance (); // Benutzerlistenbuchdaten im Browser resp.getWriter () ausdrucken. Schreiben ("Benutzername:" + user.getUnername () + "," + "Passwort:" + user.getPassword ()); }} Projekt web.xml Konfiguration:
<? xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schenalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "Version =" 2.5 "> <!-Projektname beim Zugriff-> <display-name> cookieand losingst </display-name> <! <Servlet-Class> servlettest.loginServlet </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-Mapping> <Servlet-Name> Login </servlet-name> <url-pufter>/loginServlet </url-pattern> </servlet-maping> <Servlet> teufer> teufer </servlet-mapping> <Servlet> teufer> teufern-name> teufern-name> teufern- name> teufern-name </servlet-maping> <Servlet-Name </name> </servlet-maping> <Servlet-name> teufern-name> teufern-name> teufern-name> </servlet-mapping> <Servlet-Name </name> </servlet> <Servlet-name> teufern-name> teufern-name <servlet-class> servletTest.userListServlet </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-Name> Benutzerliste </Servlet-Name> <URL-PATTER>/Benutzerliste </url-pattern> </servlet-mapping> <! <Filter-name> loginFilter </filter-name> <Filter-Klasse> Filtertest.filterTest </Filter-Klasse> </Filter> <Filter-Mapping> <Filter-NAME> Loginfilter </Filter-Name> <URL-PUPPER>/*</url-pattern> </filter-mapping> <! <Welcome-File-List> <Welcome-File> Index.jsp </Welcome-File> </Welcome-File-List> </web-App>
Java -Filtercode:
Paketfiltertest; importieren java.io.ioException; import Javax.servlet.filter; importieren javax.servlet.filterchain; importieren javax.servlet.filterconfig; importieren javax.servlet.servletException; importieren javax.servlet.servletrequest; importieren javax.servlet.servletresponse; import Javax.servlet.http.cookie; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; Importmodelle.Usermodel; öffentliche Klasse FilterTest Implements Filter {@Override public void destroy () {} @Override public void dofilter (ServletRequest Request, ServletResponse -Antwort, Filterchain -Kette) löscht IOException, ServletException {// direkt HTTPSVLETRETREQUEST FÜR LOGINE ANFRAGE UND EINFAHREN ANFREISE ANFRAGE UND ERSTELLE ANFRAGE. HttpServletResponse resp = (httpServletResponse) Antwort; String uri = req.getRequesturi (); if ("/cookieandFilterTest/loginserservlet" zurückkehren; } // Wenn es sich nicht um eine Anmeldeanforderung handelt, stellen Sie fest, ob Cookies Cookie [] cookies = req.getCookies () gibt; if (cookies! = null && cookies.length> 0) {String username = null; String password = null; // Bestimmen Sie, ob der Benutzername und das Passwort im Cookie mit der Datenbank übereinstimmen. Wenn es konsistent ist, veröffentlichen Sie sie ansonsten an die Anmeldeseite für (Cookie Cookie: Cookies) {if ("username" .equals (cookie.getName ()) {userername = cookie.getValue (); } if ("password" .equals (cookie.getName ())) {Passwort = cookie.getValue (); }} UserModel user = UsModel.getInstance (); if (user.getUnername (). Equals (Benutzername) && user.getPassword (). Equals (Passwort)) {chain.dofilter (Anfrage, Antwort); zurückkehren; } else {// Umleiten Sie die Anmeldestelle req.getRequestDispatcher ("/index.jsp"). Forward (req, resp); zurückkehren; }} else {req.getRequestDispatcher ("/index.jsp"). Forward (req, resp); zurückkehren; }} @Override public void init (filterconfig arg0) löscht servletException {}} ausDas obige dreht sich alles um diesen Artikel. Ich hoffe, dass es für alle hilfreich sein wird, Java -Programme zu lernen.