Wie viel wissen Java Web Programming Servlet -Technologie?
1. Servlet -Basics <BR /> Für die Entwicklung der Servlet -Technologie bietet Sun Company einige Säulenschnittstellen und Klassen, von denen die wichtigste die Schnittstelle von Javax.Servlet.Servlet ist. Die beiden wichtigen Pakete sind javax.servlet und javax.servlet.http. Servlet ist eine Klasse, die die Servlet -Schnittstelle implementiert. Es wird von einem Webcontainer (Tomcat/Jetty usw.) aufgerufen und erstellt, um Benutzeranfragen zu empfangen und auf sie zu antworten. 5 abstrakte Methoden sind in der Servlet -Schnittstelle definiert:
Die Klassenstruktur der obersten Ebene von Servlet lautet wie folgt:
2. Das erste Servlet -Programm
Erstellen Sie ein neues Java -Webprojekt und erstellen Sie dann eine neue Hallo -Klasse. Der Quellcode von Hello.java lautet wie folgt:
Paket zzz; import Java.io.ioException; import Java.io.printwriter; import Javax.servlet.http.httpServlet; importieren Sie javax.servlet.http.httpServletrequest; importieren javax.servlet.http.httpletPletRetResponse; DOGGE (httpServletRequest-Anforderung, httpServletResponse-Antwort) löst IOException aus {// Antwortnachricht codieren. Printwriter out = response.getWriter (); out.println ("Hallo Welt"); } @Override public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ioException {this.doget (Request, Antwort) aus; }}Die Konfigurationsdatei web.xml lautet wie folgt:
<? XSI: Schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http id = "webapp_id" Version = "3.1"> <Display-name> zzz </display-name> <Servlet> <!-Register Servlet-> <Servlet-name> Hallo </Servlet-name> <!-Geben Sie den Servletnamen des Servlet-Namens an. Externer Zugriffspfad-> <Servlet-name> Hallo </Servlet-name> <!-Geben Sie den Servlet-Namen an-> <url-puftern>/hello </url-pattern> <!-Geben Sie den virtuellen Pfad an, um auf das Servlet zuzugreifen-> </servlet-mapping> </web-App>
Starten und Ausführen des Browsers zeigt wie folgt an:
3. Servlet Life Cycle
Der Dienerlebenszyklus ist ungefähr in 3 Stufen, die Initialisierungsstufe, die Operationsphase und die Zerstörungsstufe unterteilt. Im Folgenden finden Sie detaillierte Beschreibungen jeder Phase:
Initialisierungsphase: Wenn der Client eine Anfrage an den Servlet -Container stellt, um auf das Servlet zuzugreifen, analysiert der Container zuerst die Anforderung, zu überprüfen, ob sich das Servlet -Objekt im Speicher befindet und ob er direkt verwendet wird. Ansonsten erstellen Sie das Servlet -Objekt und rufen Sie dann die Init () -Methode auf. Beachten Sie, dass Init () nur einmal während des gesamten Erklärung Zyklus des Servlets aufgerufen wird.
Laufbühne: Dies ist die wichtigste Phase des Servlets. In dieser Phase konstruiert der Container ein ServletRequest- und ServletResponse -Objekt als Parameter und übergibt es an die Servlet Service () -Methode. Für jeden Zugriff eines Servlets wird der Servlet -Container einmal die Service () -Methode aufgerufen. Die Methode service () wird während des gesamten Lebenszyklus des Servlets mehrfach aufgerufen
Zerstörungsstufe: Wenn der Server geschlossen ist oder die Webanwendung aus dem Container entfernt wird, wird diese Phase eingegeben. Zu diesem Zeitpunkt wird die Methode Destroy () aufgerufen. Während des gesamten Lebenszyklus wird die Methode Destroy () nur einmal aufgerufen. Wenn der Client zum ersten Mal auf das Servlet zugreift, erstellt der Container das Servlet -Objekt, aber manchmal ist zu hoffen, dass das Servlet -Objekt gestartet wird, sobald Tomcat gestartet wird. Wie geht es damit um? Zu diesem Zeitpunkt müssen Sie nur das Element <Load-on-Startups in Web.xml verwenden. Die Beispielkonfiguration lautet wie folgt:
<servlet> <servlet-name> Hallo </Servlet-name> <Servlet-Class> zzz.hello </Servlet-Class> <!-Automatisches Laden des Servlet-Programms-> <Load-on-Startup> 1 </load-on-Startup> </Servlet> <Servlet-Mapping> <Servlet-name> Hello/Servlet-name> </<url-Patter>/hello-pattern> </servlet-name> <url-puffer>/hello-name> </servlet-name> <url-puffer>/hello-name> </servlet-name> <url-puffer>/hello-pattern>/hello-pattern>/hello/hello/hello-pattern
4. ServletConfig und ServletContext
Während der ServletConfig-Schnittstelle werden einige Hilfsinformationen erforderlich, z. B. Dateicodierung, Unternehmen, die Servlets usw. verwenden, diese Informationen mit dem Element <init-param in web.xml konfiguriert werden. Wenn Tomcat ein Servlet initialisiert, werden die Servlet -Konfigurationsinformationen in ein ServletConfig -Objekt eingekapselt und über Init (ServletConfig -Konfiguration) an das Servlet übergeben. ServletConfig definiert eine Reihe von Methoden, um Konfigurationsinformationen zu erhalten:
GetInitParameter () als Beispiel als Beispiel, um die Verwendung dieser Methode zu erklären:
Die Konfigurationsdatei web.xml lautet wie folgt:
<? XSI: Schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http id="WebApp_ID" version="3.1"> <display-name>zzz</display-name> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>zzz.Hello</servlet-class> <init-param> <param-name>company</param-name> <param-value>dahua</param-value> </init-param> </servlet> <Servlet-Mapping> <Servlet-name> Hallo </Servlet-name> <URL-Muster>/Hallo </url-pufter> </servlet-mapping> </web-App>
Hello.java -Datei lautet wie folgt:
Paket zzz; import Java.io.ioException; import Java.io.printwriter; import Javax.servlet.servletConfig; import Javax.servlet.http.httpServlet; importieren javax.servlet.http.httpletrequest; HttpServlet {@Override public void dodget (httpServletRequest-Anforderung, httpServletResponse-Antwort) löscht ioException {// Antwortnachricht codieren reaktionscodieren. Printwriter out = response.getWriter (); ServletConfig config = this.getServletConfig (); String param = config.getInitParameter ("Company"); out.println ("Firma:" + Param); } @Override public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ioException {this.doget (Request, Antwort) aus; }} ServletContext -Schnittstelle
Wenn der Servlet -Container gestartet wird, wird für jede Webanwendung ein eindeutiges ServletContext -Objekt erstellt, um die aktuelle Webanwendung darzustellen. Dieses Objekt fasst nicht nur alle Informationen der Webanwendung zusammen, sondern implementiert auch die Datenaustausch zwischen mehreren Servlet -Objekten. In web.xml können Sie nicht nur die Initialisierungsinformationen des Servlets konfigurieren, sondern auch die Initialisierungsinformationen der gesamten Webanwendung konfigurieren. Die Konfigurationsmethode lautet wie folgt:
<context-param> <param-name> name </param-name> <param-value> luoxn28 </param-value> </context-param> <context-param> </param-name> company </param-value> dahua </param-value> </context-param>
HINWEIS: In einem <Context-Param> -Element kann es nur einen <paramennamen> und <param-value> geben, und die obige Konfiguration wird unter <web-App> in web.xml konfiguriert. Hello.java -Datei lautet wie folgt:
Paket Zzz; Import Java.io.ioException; Import Java.io.printwriter; import Java.util.enumeration; import Javax.servlet.servletContext; import Javax.servlet.http.httpsert; Import Javax.servlet.http.httpletrequest; javax.servlet.http.httpServletResponse; öffentliche Klasse Hallo erweitert HttpServlet {@Override public void dagget (httpServletRequest Request, httpServletRespespect) löscht IOException {// setze die Antwortmeldung-Coding-Antwort. Printwriter out = response.getWriter (); ServletContext context = this.getServletContext (); Enumeration <string> paramnames = context.getInitParameternames (); while (paramnames.hasmoreElements ()) {String name = paramnames.nextElement (); String value = context.getInitParameter (Name); out.println (name + ":" + value + "<br/>"); }} @Override public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ioException {this.doget (request, Antwort) aus; }}Da alle Servlets in einer Webanwendung ein ServletContext -Objekt teilen, können die Domäneneigenschaften des ServletContext -Objekts von allen Servlets in der Webanwendung zugegriffen werden. In der ServletContext -Schnittstelle werden vier Methoden definiert, um die Eigenschaften der ServletContext -Domänen hinzuzufügen, zu löschen und festzulegen:
Mit der obigen Methode können Sie die Freigabe von Daten zwischen mehreren Servlets erkennen. Dieses spezielle Beispiel wird nicht mit Code veröffentlicht. Es gibt viele Informationen, auf die online verwiesen werden kann, z. B. Klicken:
Javaweb Servlet -Entwicklung Zusammenfassung (ii)
Das obige dreht sich alles um diesen Artikel, und ich hoffe, dass es für alle hilfreich sein wird, die Servlet -Technologie von Java Web zu verstehen.
Referenzen
1. "Einführung in das Java Web Program Development Development" Servlet Technology Chapter