Heim  >  Artikel  >  Java  >  Ausführliche Erläuterung der Grundkenntnisse von Servlets in Java

Ausführliche Erläuterung der Grundkenntnisse von Servlets in Java

黄舟
黄舟Original
2017-07-26 15:11:202449Durchsuche

In diesem Artikel werden hauptsächlich die grundlegenden Informationen von Servlets ausführlich vorgestellt, die einen gewissen Referenzwert haben.

Servlet ist eine Technologie, die speziell zur Entwicklung dynamischer Webressourcen verwendet wird Servlet-Schnittstelle in seiner API (natürlich werden wir diese Schnittstelle nicht direkt implementieren, aber es ist besser, ihre Implementierungsklasse zu erben, daher bezieht sich Servlet im engeren Sinne auf diese Schnittstelle und im weitesten Sinne auf Servlet). Diese Schnittstelle bezieht sich auf jede Klasse, die diese Servlet-Schnittstelle implementiert. Die Verwendung von Servlet zur Entwicklung einer dynamischen Webressource bedeutet eigentlich die Entwicklung eines Java-Programms zur Ausgabe von Daten an den Browser.

Servlet ist eigentlich ein Java-Programm, das auf dem Server läuft. Daher können wir die J2SE-API-Dokumentation nicht lesen Dokumentation der Servlet-API. Werfen wir einen Blick auf die Dokumenteinführung von Servlet:

Aus dieser Einführung in die Servlet-Schnittstelle können wir ersehen, dass Sie die Servlet-Schnittstelle implementieren müssen, wenn Sie sie implementieren möchten Alle seine Methoden. Servlet Das Programm läuft auf dem Webserver und wird zum Empfangen und Beantworten von Anfragen von Clients verwendet. Wie ich bereits sagte, müssen Sie natürlich alle Methoden des Servlets überschreiben, wenn Sie eine Klasse schreiben, um die Servlet-Schnittstelle zu implementieren, aber wir können seine Implementierungsklasse erben, z. B. die GenericServlet-Klasse oder die HttpServlet-Klasse dass wir nur diejenigen überschreiben müssen, die wir überschreiben möchten. Verwenden Sie einfach die Methode.

Die Methoden in Servlet umfassen Lebenszyklusmethoden und Nichtlebenszyklusmethoden. Zu den Lebenszyklusmethoden in Servlet gehören: init (ServletConfig config), destroy (), service (ServletRequest req, ServletResponse res), dh Servlet-Initialisierung, Antwortdienst auf Anforderungen und Zerstörung von Servlet.

Zusätzlich zu den Servlet-Lebenszyklusmethoden gibt es auch Nicht-Lebenszyklusmethoden, wie z. B. die Methoden getServletConfig() und getServletInfo(), mit denen einige Informationen über das Servlet abgerufen werden können.

Der Servlet-Lebenszyklus bezieht sich auf den Prozess von der Erstellung über die Beantwortung von Clientanfragen bis hin zur endgültigen Zerstörung einer Servlet-Instanz. Der spezifische Prozess ist wie folgt:

1. Der Server erstellt eine Instanz von Servlet, das heißt, er ruft die init()-Methode auf.

2. Eine Client-Anfrage (Objekt) erreicht den Server;

 3. Server sendet die Anfrage an Servlet;

 4. Servlet generiert eine Antwort (Objekt) auf die Anfrage;

 5. Server aktiviert die service()-Methode von Servlet, das das Anforderungsobjekt übergibt und das Antwortobjekt als Parameter verwendet

6. Die Service()-Methode ruft die Informationen des Anforderungsobjekts ab, verarbeitet die Anforderung, greift auf Ressourcen zu und ruft die erforderlichen Informationen ab;

7. Die Service()-Methode verwendet die Antwortobjektmethode, die Antwort wird an den Server zurückgesendet und erreicht schließlich den Client. Die Service-Methode kann auch andere Methoden zur Bearbeitung von Anfragen aktivieren, wie zum Beispiel die Methode doGet() oder doPost()

8. Für weitere Client-Anfragen erstellt der Server neue Anfrage- und Antwortobjekte und aktiviert weiterhin dieses Servlet .service-Methode, übergeben Sie diese beiden Objekte als Parameter, und es ist nicht erforderlich, die init()-Methode aufzurufen. Im Allgemeinen werden Servlets nur einmal initialisiert. Wenn der Server das Servlet nicht mehr benötigt (normalerweise wird der Server heruntergefahren), ruft der Server die destroy()-Methode des Servlets auf, um das Servlet zu zerstören.

Wie aus dem Obigen hervorgeht, werden die drei Methoden im Servlet-Lebenszyklus vom Server aufgerufen. Man kann sagen, dass sie sich zu einem bestimmten Zeitpunkt im Prozess seit der Existenz von Servlet befinden bis zu ihrer Zerstörung (wenn ein Ereignis ausgelöst wird). Die Methode, die ausgeführt werden muss, wird als Lebenszyklusmethode bezeichnet.

Daher ist das Wichtigste in Servlet die service()-Methode. Wenn Sie Ressourcen vom Server zurück zum Client übertragen oder Daten an den Client senden möchten, geschieht dies in service()-Methode.

Gemessen an der Methode service(ServletTequest req, ServletResponse res) wird nicht nur die Methode service() vom Server aufgerufen und ausgeführt, sondern auch das ServletTequest-Anforderungsobjekt und das ServletResponse-Antwortobjekt werden vom Server bereitgestellt . Wenn wir ein einfaches schreiben möchten Nachdem die Daten an den Client übergeben wurden, können Sie das ServletResponse-Antwortobjekt in der service()-Methode bedienen:

Zunächst müssen wir die Entwicklung nicht verwenden Tool-IDE, um Servlet zu schreiben, aber schreiben Sie es zuerst manuell, um das Verständnis der zugrunde liegenden Prinzipien von Servlet zu erleichtern. Erstellen Sie meine Webanwendung im Verzeichnis [webapps] von Tomcat. Das Verzeichnis, in dem sich die Webanwendung befindet, ist [myservlet]. Wir erstellen zuerst [WEB-INF] im Verzeichnis [myservlet] und dann [classes] in [WEB]. -INF]. ]-Verzeichnis, [lib-Verzeichnis] ​​und web.xml-Datei, im Verzeichnis [classes] mein Java-Programm erstellen: FirstServlet.java

Da das Servlet, das wir schreiben, vom Server aufgerufen wird, muss die Servlet-Implementierungsklasse, die wir erstellen, öffentlich sein . Lassen Sie mich zunächst sagen, dass wir nicht alle Methoden des Servlets implementieren müssen Wir bitten den Client, Daten zu übertragen, wir müssen nur die Methode service() überschreiben. Dann müssen wir nur die Servlet-Implementierungsklasse erben und dann den Ausgabestream des entsprechenden Objekts ServletResponse ServletOutputStream erhalten Da die Ausgabe gleichzeitig ein Byte-Stream ist, müssen Sie die Zeichen in ein Byte-Array konvertieren und dann den benutzerdefinierten Paketnamen und das zu importierende Java-Paket manuell schreiben:


package fjdingsd.web;
import java.io.*;
import javax.servlet.*;
public class FirstServlet extends GenericServlet{
  public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
  {
   OutputStream out = res.getOutputStream();
   out.write("Hello Servlet".getBytes());
  }
}

Verwenden Sie hierfür cmd. Kompilieren Sie das Java-Programm. Beachten Sie jedoch, dass „javac“ standardmäßig nur das J2SE-Paket importiert und das J2EE-Paket nicht enthält. Wo finden wir also das J2EE-Servlet-Paket? Da Tomcat Servlet unterstützt, enthält das Verzeichnis [lib] von Tomcat tatsächlich das Servlet-JAR-Paket:

Daher sollten wir zuerst die Umgebungsvariable in cmd festlegen, indem wir diesen Schritt ausführen: set classpath = %classpath%; path/servlet-api.jar

Dann können Sie das Java-Programm jetzt kompilieren: javac –d .java

(„-d“ stellt das Verzeichnis dar, in dem die .class-Datei für den nächsten Befehl gespeichert ist, und „.“ stellt das aktuelle Verzeichnis dar)

Nach erfolgreicher Kompilierung können Sie sehen, dass bereits Bytecodes vorhanden sind das Verzeichnis, in dem sich die Webanwendung befindet. Die Datei- und Paketnamen lauten:

Natürlich gibt es bereits ein Servlet-Programm, aber der Browser kann noch nicht darauf zugreifen, weil das Das Servlet-Programm hat noch keinen externen Zugriffspfad festgelegt. Wo konfigurieren wir also die Servlet-Bytecode-Datei, die wir gerade erstellt haben, in einen Pfad, auf den der Browser zugreifen kann?

Die Antwort befindet sich in der web.xml-Datei in dieser Webanwendung. Jetzt verwenden wir nur das einfachste Format. Wie in „Tomcat Detaillierte Lernmethode (3)“ erwähnt, ändern Sie den Header von Tomcat und Der 870ae7edaa11700bcea972d006efb06e muss in der „Vorlage“ konsistent sein Paketname und Klassenname und f24969191491f87ff9bd53d183456a27 ist der externe Zugriffspfad, den wir festlegen können, und der Pfad kann angepasst werden. Die Einstellung dieses Pfads muss nicht geschrieben werden, da er sonst der Standardwert ist. Dann muss die Eingabeadresse im Browser nur den Namen der Webanwendung enthalten, aber selbst wenn sie auf den Standardwert eingestellt ist, ist der Inhalt in 66e1775cbd9d5002635ae3285442ba88 muss ebenfalls vorhanden sein. Es gibt einen Schrägstrich: „/“.

Öffnen Sie zu diesem Zeitpunkt den Tomcat-Server und Sie können auf das Servlet-Programm zugreifen, das Sie gerade im Browser geschrieben haben. Das Eingabeformat lautet: Hostname: Port (80 nicht Erforderlich)/Webanwendungsname/externer Zugriffspfad

Wenn es sich um einen Servlet-Zugriff handelt, müssen Sie nur den externen Zugriffspfad angeben Servlet, dasselbe Unzugänglich, wie unten gezeigt:

Es gibt ein weiteres Problem, wenn die externen Zugriffspfade mehrerer Servlets in der XML-Datei gleich konfiguriert sind nicht zugänglich sein, wie folgt Abbildung:

Konfigurieren Sie daher bitte unterschiedliche externe Zugriffspfade in der benutzerdefinierten web.xml für verschiedene Servlets.

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Grundkenntnisse von Servlets in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn