Dieser Artikel stellt hauptsächlich die Lernmaterialien von Filter, Servlet und Listener im Detail vor. Ich hoffe, Sie haben einen gewissen Referenzwert Gefällt mir
1. Filterfunktion
Die Filterfunktion ermöglicht es Benutzern, eine Anfrage zu ändern und eine Antwort zu ändern. Filter ist kein Servlet, es kann nicht generiert werden Eine Antwort kann eine Anfrage vorverarbeiten, bevor sie das Servlet erreicht, und sie kann die Antwort auch verarbeiten, wenn sie das Servlet verlässt. Mit anderen Worten, der Filter ist tatsächlich eine „Servlet-Kette“ (Servlet-Kette).
Ein Filter umfasst:
1), Abfangen, bevor das Servlet aufgerufen wird;
3), basierend auf Bedarf um den Anforderungsheader und die Anforderungsdaten zu ändern;
4), um den Antwortheader und die Antwortdaten nach Bedarf zu ändern
Der Server Ruft die Methode „setFilterConfig“ nur einmal für die Verarbeitung auf. Die Methode „doFilter“ wird mehrmals aufgerufen, um verschiedene Anforderungen zu verarbeiten. Der Server kann „FilterConfig“ auf „leer“ setzen dass der Filter beendet wurde.
Jeder Filter erhält die aktuelle Anfrage und Antwort von der doFilter()-Methode. In dieser Methode kann jede Operation für die Anfrage und Antwort ausgeführt werden (einschließlich Sammeln von Daten, Packen von Daten usw.). Der Filter ruft chain.doFilter auf ()-Methode übergibt die Kontrolle an den nächsten Filter. Wenn ein Filter die Anforderungsverarbeitung stoppen und die vollständige Kontrolle über die Antwort erlangen möchte, muss er nicht den nächsten Filter aufrufen.
Erstellen Sie zunächst einen neuen Filter
Konfigurieren Sie ihn in web.xml
/** * */ package com.ee.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * @author Administrator * */ public class LogFilter implements Filter { private FilterConfig filterConfig; public FilterConfig getFilterConfig() { System.err.println("...getFilterConfig..."); return filterConfig; } public void setFilterConfig(FilterConfig filterConfig) { System.err.println("...setFilterConfig..."); this.filterConfig = filterConfig; } /* (non-Javadoc) * @see javax.servlet.Filter#destroy() */ @Override public void destroy() { System.err.println("...filter destroy..."); } /* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.err.println("...doFilter..."); chain.doFilter(request, response);//看到这没,这只要是传递下一个Filter } /* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ @Override public void init(FilterConfig filterConfig) throws ServletException { System.err.println("...init Filter..."); this.filterConfig = filterConfig; } }
<filter> <filter-name>LogFilter</filter-name> <filter-class>com.ee.filter.LogFilter</filter-class> </filter> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Sie können sehen, dass...init Filter... beim Start von TOMCAT zum ersten Mal gedruckt wird, und dann können Sie...doFilter... sehen gedruckt.
2. Servlet-Funktion
1). Was ist ein Servlet?
Servlet ist ein Java-Programm, das die Java Servlet-Anwendungsprogrammierschnittstelle (API) und verwandte Klassen und Methoden verwendet. Zusätzlich zur Java-Servlet-API können Servlets auch Java-Klassenpakete verwenden, die die API erweitern und ergänzen. Servlets werden auf einem Java-fähigen Webserver oder Anwendungsserver ausgeführt und erweitern die Funktionen dieses Servers. Java-Servlets sind für Webserver das, was Java-Applets für Webbrowser sind. Servlets werden in den Webserver geladen und dort ausgeführt, während Applets in den Webbrowser geladen und dort ausgeführt werden. Die Java-Servlet-API definiert eine Standardschnittstelle zwischen einem Servlet und einem Java-fähigen Server, wodurch Servlets zu einer serverübergreifenden Plattform werden.
Servlets erweitern die Fähigkeiten eines Servers, indem sie ein Framework zur Bereitstellung von Anforderungs- und Antwortdiensten im Web erstellen. Wenn ein Client eine Anfrage an den Server sendet, kann der Server die Anfrageinformationen an das Servlet senden und das Servlet die Antwort erstellen lassen, die der Server an den Client zurückgibt. Servlets können automatisch geladen werden, wenn ein Webserver gestartet wird oder wenn ein Client zum ersten Mal einen Dienst anfordert. Nach dem Laden läuft das Servlet weiter, bis andere Clients Anfragen stellen. Servlets haben ein breites Funktionsspektrum. Beispielsweise kann Servlet die folgenden Funktionen ausführen:
(1) Erstellen und Zurückgeben einer vollständigen HTML-Seite mit dynamischen Inhalten basierend auf der Art der Kundenanfrage.
(2) Erstellen Sie einen Teil einer HTML-Seite (HTML-Fragment), der in eine vorhandene HTML-Seite eingebettet werden kann.
(4) Verwenden Sie mehrere Clients, um Verbindungen zu verwalten, Eingaben von mehreren Clients zu empfangen und die Ergebnisse an mehrere Clients zu senden. Ein Servlet könnte beispielsweise ein Spieleserver mit mehreren Teilnehmern sein.
(5) Wenn die Datenübertragung im Einzelverbindungsmodus zulässig ist, öffnen Sie eine neue Verbindung vom Server zum Applet im Browser und halten Sie die Verbindung
offen. Applets können auch Verbindungen zwischen dem Browser des Clients und dem Server initiieren, sodass Client und Server Sitzungen einfach und effizient durchführen können. Die Kommunikation kann über benutzerdefinierte Protokolle oder Standards wie IIOP erfolgen.
(6) Verwenden Sie MIME-Typ-Filterdaten für spezielle Verarbeitung, wie z. B. Bildkonvertierung und serverseitige Einbindungen (SSI).
(7) Eine Standardroutine, die allen Servern eine individuelle Verarbeitung ermöglicht. Beispielsweise kann ein Servlet die Art und Weise ändern, wie Benutzer authentifiziert werden.
2). Der Lebenszyklus eines Servlets
Der Lebenszyklus eines Servlets beginnt, wenn es in den Speicher des Webservers geladen wird, und endet, wenn das Servlet beendet oder neu geladen wird.
(1) Initialisierung
Laden Sie das Servlet zu folgenden Zeiten:
Nach dem Server startet, wenn der Client zum ersten Mal eine Anfrage an das Servlet stellt
Beim Neuladen des Servlets Nach dem Laden des Servlets erstellt der Server eine Servlet-Instanz und ruft die init()-Methode des Servlets auf. Während der Initialisierungsphase werden Servlet-Initialisierungsparameter an das Servlet-Konfigurationsobjekt übergeben.
(2) Anforderungsverarbeitung
Für eine Client-Anfrage, die beim Server eintrifft, erstellt der Server ein „Anfrage“-Objekt und ein „Antwort“-Objekt, das für die Anfrage spezifisch ist. Der Server ruft die service()-Methode des Servlets auf, mit der die Objekte „request“ und „response“ übergeben werden. Die Methode service() ruft die Anforderungsinformationen vom Objekt „request“ ab, verarbeitet die Anforderung und verwendet die Methoden des Objekts „response“, um die Antwort an den Client zurückzuleiten. Die Methode service() kann andere Methoden aufrufen, um die Anforderung zu verarbeiten, z. B. doGet(), doPost() oder andere Methoden.
(3) Beendigung
Wenn der Server das Servlet nicht mehr benötigt oder eine neue Instanz des Servlets neu lädt, ruft der Server die destroy()-Methode des Servlets auf.
3). Java Servlet API
Das Java Servlet Development Tool (JSDK) stellt mehrere Softwarepakete bereit, die beim Schreiben von Servlets benötigt werden. Dazu gehören zwei Basispakete für alle Servlets: javax.servlet und javax.servlet.http. Die Java-Servlet-Entwicklungstools können von der Sun-Website heruntergeladen werden. Im Folgenden wird hauptsächlich die von javax.servlet.http bereitgestellte HTTP-Servlet-Anwendungsprogrammierschnittstelle vorgestellt.
HTTP Servlet verwendet ein HTML-Formular zum Senden und Empfangen von Daten. Um ein HTTP-Servlet zu erstellen, erweitern Sie die HttpServlet-Klasse, eine Unterklasse von GenericServlet, die spezielle Methoden zur Verarbeitung von HTML-Tabellen verwendet. HTML-Formulare werden durch die Tags