Was ist Java Servlet?

275

Ich habe viele Artikel gelesen, um das Java-Servlet zu verstehen, aber es ist mir nicht gelungen.

Können Sie bitte eine kurze Einführung in Java-Servlets (in einfacher Sprache) geben? Wie ist Servlet? Was sind die Vorteile? Und all das.

Ich kann den Unterschied zwischen serverseitigen Programmiersprachen (PHP, ASP) und Servlets nicht verstehen.

Hardik
quelle
38
Bewegen Sie den servletsMauszeiger unter Ihre Frage, bis eine Blackbox angezeigt wird. Klicken Sie darin auf den Info- Link.
BalusC
1
Servlets Sie können darauf schauen. Ich denke, das ist Details und authentisch.
Shohan

Antworten:

335

Ein Servlet ist einfach eine Klasse, die auf eine bestimmte Art von Netzwerkanforderung reagiert - am häufigsten auf eine HTTP-Anforderung. Grundsätzlich werden Servlets normalerweise zum Implementieren von Webanwendungen verwendet. Es gibt jedoch auch verschiedene Frameworks, die über Servlets (z. B. Struts) arbeiten, um eine übergeordnete Abstraktion zu erzielen, als die Servlets "Hier ist eine HTTP-Anforderung, in diese HTTP-Antwort schreiben" zur Verfügung stellen.

Servlets werden in einem Servlet-Container ausgeführt, der die Netzwerkseite verwaltet (z. B. Parsen einer HTTP-Anforderung, Verbindungsbehandlung usw.). Einer der bekanntesten Open Source-Servlet-Container ist Tomcat .

Jon Skeet
quelle
16
Servlets sind Ausschnitte aus Java-Code, die vom Webserver im Webserver selbst aufgerufen werden . Wenn Sie möchten, dass etwas wie PHP oder ASP aussieht, benötigen Sie JSPs (die eine besondere Art von Servlets sind)
Thorbjørn Ravn Andersen
3
Vielen Dank für die Antwort, aber ich kann immer noch nicht die wirkliche Verwendung von Servlets bekommen. Es wäre besser, wenn Sie anhand eines Beispiels wie sitution erklären könnten, wo wir Servlets verwenden können. Ich habe die Verwendung von Servlets nicht so verstanden, wie es Servlets können, die andere serverseitige Programmiersprachen nicht können.
Hardik
4
@Hardik: Es ist nicht so, dass sie etwas tun können, was nicht anders gemacht werden kann. Servlets sind nur eine gängige Technologie für die serverseitige Java-Arbeit. Servlets sind keine Sprache - und ASPX auch nicht. Beides sind Plattformen, die Sie in Verbindung mit einer anderen Sprache verwenden - normalerweise Java bei Servlets.
Jon Skeet
7
@Hardik: Wie ich in meinem Beitrag geschrieben habe, sind Servlets Klassen, die in einem Servlet-Container arbeiten. Der Servlet-Container kann mehrere Servlets gleichzeitig hosten.
Jon Skeet
5
@ Hardik: Ja genau. Das Servlet kann den HTML-Code bereitstellen, um das Formular anzuzeigen und auch auf die Übermittlung zu reagieren. Servlets können auch zum Implementieren von Webdiensten verwendet werden. Sie können neben HTTP auch für andere Protokolle verwendet werden, aber HTTP ist überwiegend der häufigste Transport, der von Servlets ausgeführt wird.
Jon Skeet
101

Ein Servlet im Kern ist eine Java-Klasse. die HTTP-Anfragen verarbeiten kann. In der Regel kümmern sich Container wie Tomcat um das interne Problem beim Lesen einer HTTP-Anforderung und -Antwort über das Kabel. Dies geschieht, damit Sie sich als serverseitiger Entwickler darauf konzentrieren können, was mit den HTTP-Anforderungen und -Antworten zu tun ist, und sich nicht um Code kümmern müssen, der sich mit Netzwerken usw. befasst. Der Container kümmert sich um Dinge wie das Einwickeln des Ganzen in a HTTP-Antwortobjekt und senden Sie es an den Client (z. B. einen Browser).

Die nächste logische Frage ist nun, wer entscheidet, was ein Container tun soll. Und die Antwort ist; Zumindest in der Java-Welt wird es von Spezifikationen geleitet (beachten Sie, dass ich das Wort gesteuert nicht verwendet habe). Zum Beispiel bestimmen die Servlet-Spezifikationen (siehe Ressource 2), was ein Servlet tun muss. Wenn Sie also eine Implementierung für die Spezifikation schreiben können, herzlichen Glückwunsch, Sie haben gerade einen Container erstellt (Technisch gesehen implementieren Container wie Tomcat auch andere Spezifikationen und erledigen knifflige Dinge wie benutzerdefinierte Klassenlader usw., aber Sie haben die Idee).

Angenommen, Sie haben einen Container, sind Ihre Servlets jetzt Java-Klassen, deren Lebenszyklus vom Container verwaltet wird, deren Reaktion auf eingehende HTTP-Anforderungen jedoch von Ihnen entschieden wird. Sie tun dies, indem Sie in die vordefinierten Methoden wie init (), doGet (), doPost () usw. schreiben, was Sie tun möchten. Schauen Sie sich Ressource 3 an.

Hier ist eine lustige Übung für Sie. Erstellen Sie ein einfaches Servlet wie in Ressource 3 und schreiben Sie einige System.out.println () -Anweisungen in die Konstruktormethode (Ja, Sie können einen Konstruktor eines Servlets haben), init (), doGet (), doPost () und führen Sie sie aus das Servlet in Tomcat. Siehe die Konsolen- und Tomcat-Protokolle.

Hoffe das hilft, viel Spaß beim Lernen.

Ressourcen

  1. Schauen Sie, wie die HTTP - Servlet sieht hier (Tomcat Beispiel).

  2. Servlet- Spezifikation .

  3. Einfaches Servlet- Beispiel .

  4. Beginnen Sie mit dem Lesen des Buches online / PDF. Außerdem können Sie das gesamte Buch herunterladen. Vielleicht hilft das. Wenn Sie gerade erst Servlets starten, ist es möglicherweise eine gute Idee, das Material zusammen mit der Servlet-API zu lesen. Es ist ein langsamerer Lernprozess, aber viel hilfreicher, um die Grundlagen klar zu machen.

Ayusman
quelle
12
Antworten, die nur auf Links basieren, werden beim Stapelüberlauf nicht empfohlen, da die Ressourcen, mit denen sie verknüpft sind, möglicherweise in Zukunft nicht mehr verfügbar sind oder sich ändern. Fassen Sie den relevanten Inhalt des Links in Ihrer Antwort zusammen, um ihn zu verbessern.
6
@ Cupcake schätzen Ihr konstruktives Feedback. Ich habe versucht, der Antwort etwas Fleisch hinzuzufügen. Danke, dass du die Community besser gemacht hast.
Ayusman
34

Zusätzlich zu den oben genannten und nur um auf die offensichtliche Blutung hinzuweisen ...

Für viele ist dies sehr offensichtlich, aber für jemanden, der es gewohnt ist, Apps zu schreiben, die nur ausgeführt werden und dann enden: Ein Servlet verbringt die meiste Zeit damit, nichts zu tun ... darauf zu warten, etwas gesendet zu werden, eine Anfrage zu stellen und dann darauf zu antworten . Aus diesem Grund hat ein Servlet ein Leben lang: Es wird initialisiert und wartet dann herum, reagiert auf alles, was darauf geworfen wird, und wird dann zerstört. Dies bedeutet, dass es von etwas anderem (einem Framework) erstellt (und später zerstört) werden muss, dass es in einem eigenen Thread oder Prozess ausgeführt wird und dass es nichts tut, wenn es nicht dazu aufgefordert wird. Und auch, dass auf die eine oder andere Weise ein Mechanismus implementiert werden muss, durch den diese "Entität" auf Anfragen "warten" kann.

Ich schlage vor, dass das Lesen über Threads, Prozesse und Sockets etwas Licht ins Dunkel bringt: Es unterscheidet sich erheblich von der Funktionsweise einer einfachen "Hallo Welt" -App.

Es könnte argumentiert werden, dass der Begriff "Server" oder "Servlet" ein bisschen übertrieben ist. Ein rationaler und einfacherer Name könnte "Responder" sein. Der Grund für die Wahl des Begriffs "Server" ist historisch: Die ersten derartigen Anordnungen waren "Dateiserver", bei denen mehrere Benutzer- / Client-Terminals eine bestimmte Datei von einem zentralen Computer anfordern und diese Datei dann "bereitgestellt" wird "wie ein Buch oder ein Teller mit Fish and Chips.

Mike Nagetier
quelle
1
Ist es falsch, das Servlet als analog zu einem "Controller" in einem Standard-MVC-Framework anzuzeigen?
user2490003
Persönlich kann ich nicht sehen, wie diese Analogie gilt. Ich würde auch eher denken, dass Leute, die meine Antwort für nützlich halten (hilft, die Dinge für sie zu klären), durch Ihren Vorschlag verwirrt sein könnten.
Mike Nagetier
Ich denke, diese Antwort ist nützlich. Aber ich habe mich auch (unabhängig von dieser Antwort und vor dem Lesen) die gleiche Frage gefragt, die @ user2490003 oben gestellt hat. Was ist der Unterschied zwischen einem Servlet und einem MVC-Framework-Controller? Warum gilt die Analogie von user2490003 nicht?
Cellepo
Eine MVC-Anordnung ist komplizierter und dennoch weniger kompliziert. Es muss nicht unbedingt auf Eingaben gewartet werden. Bei der Definition der Grundidee eines Server-Client-Setups möchte ich diese Einfachheit hervorheben. Sehen Sie sich hier das grundlegende MVC-Diagramm an: en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller . In einem einfachen Client-Server-Setup interagiert der Benutzer nur mit dem Client, nicht mit zwei Objekten, nämlich einer Ansicht und einem Controller. Mit MVC können auch mehrere Ansichten, mehrere Controller und mehrere Modelle vorhanden sein. Und das Warten auf Eingaben ist nicht (unbedingt) erforderlich.
Mike Nagetier
Darüber hinaus kann ein Server mehrere Benutzer bedienen, während dies bei einem MVC-Setup nicht erforderlich ist. Ein MVC-Setup gehört zur Welt des klassischen Computing, dh zu eigenständigen Apps. Mit Servern machen wir unseren ersten Schritt in das Universum des interaktiven Rechnens. Es ist nicht so, dass die Analogie zu 100% falsch ist, mehr zu 90% falsch, und vor allem, dass jede Analogie einfach keinen Nutzen hat, wenn sie niemandem oder irgendetwas in irgendeiner Weise hilft. Eine Server-Client-Vereinbarung ist so einfach wie eine Idee, die niemand braucht, um Analogien jeglicher Art zu verstehen.
Mike Nagetier
10

Was ist ein Servlet?

  • Ein Servlet ist einfach eine Klasse, die auf eine bestimmte Art von Netzwerkanforderung reagiert - am häufigsten auf eine HTTP-Anforderung.
  • Grundsätzlich werden Servlets normalerweise zum Implementieren von Webanwendungen verwendet. Es gibt jedoch auch verschiedene Frameworks, die über Servlets (z. B. Struts) arbeiten, um eine übergeordnete Abstraktion zu erzielen, als die Servlets "Hier ist eine HTTP-Anforderung, in diese HTTP-Antwort schreiben" zur Verfügung stellen.
  • Servlets werden in einem Servlet-Container ausgeführt, der die Netzwerkseite verwaltet (z. B. Parsen einer HTTP-Anforderung, Verbindungsbehandlung usw.). Einer der bekanntesten Open Source-Servlet-Container ist Tomcat.

  • In einem Anforderungs- / Antwortparadigma kann ein Webserver dem Client nur statische Seiten bereitstellen

  • Um dynamische Seiten bereitzustellen, benötigen wir Servlets.
  • Servlet ist nichts anderes als ein Java-Programm
  • Dieses Java-Programm hat keine Hauptmethode. Es gibt nur einige Rückrufmethoden.
  • Wie kommuniziert der Webserver mit dem Servlet? Über Container oder Servlet-Motor.
  • Servlet lebt und stirbt in einem Webcontainer.
  • Der Webcontainer ist für das Aufrufen von Methoden in Servlets verantwortlich. Es weiß, über welche Rückrufmethoden das Servlet verfügt.

Ablauf der Anfrage

  • Der Client sendet eine HTTP-Anfrage an den Webserver
  • Der Webserver leitet diese HTTP-Anforderung an den Webcontainer weiter.
  • Da Servlet HTTP, ein Java-Programm, nicht verstehen kann, versteht es nur Objekte, sodass der Webcontainer diese Anforderung in ein gültiges Anforderungsobjekt konvertiert
  • Der Webcontainer spinnt für jede Anforderung einen Thread
  • Die gesamte Geschäftslogik befindet sich in den Rückrufmethoden doGet () oder doPost () in den Servlets
  • Servlet erstellt ein Java-Antwortobjekt und sendet es an den Container. Es konvertiert diese Antwort erneut in eine HTTP-Antwort, um sie an den Client zu senden

Woher weiß der Container, welchen Servlet-Client angefordert hat?

  • Es gibt eine Datei namens web.xml
  • Dies ist die Masterdatei für einen Webcontainer
  • Sie haben Informationen über Servlet in dieser Datei-

    • Servlets
      • Servlet-Name
      • Servlet-Klasse
    • Servlet-Zuordnungen - Der Pfad wie / Login oder / Notifications wird hier in zugeordnet
      • Servlet-Name
      • URL-Muster
    • und so weiter
  • Jedes Servlet in der Web-App sollte einen Eintrag in diese Datei haben

  • Diese Suche erfolgt also wie folgt: URL-Muster -> Servlet-Name -> Servlet-Klasse

Wie "installiert" man Servlets? * Nun, die Servlet-Objekte werden von der Bibliothek javax.servlet geerbt. *. Tomcat und Spring können verwendet werden, um diese Objekte für den Anwendungsfall zu verwenden.

Ref- Sehen Sie sich dies auf 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE an . Dies hat eine großartige Erklärung.

Sankalp
quelle
1
Ein Link zu einer Lösung ist willkommen, aber stellen Sie sicher, dass Ihre Antwort ohne sie nützlich ist: Fügen Sie dem Link einen Kontext hinzu, damit Ihre Mitbenutzer eine Vorstellung davon haben, was es ist und warum es dort ist, und zitieren Sie dann den relevantesten Teil der Seite, die Sie verwenden. erneutes Verknüpfen mit, falls die Zielseite nicht verfügbar ist. Antworten, die kaum mehr als ein Link sind, können gelöscht werden.
Mogsdad
1
Beachten Sie, dass sich die Welt weiterentwickelt hat. Im Jahr 2020 verwenden wir Anmerkungen zum Code anstelle der zentralen, auf Zeichenfolgen basierenden Konfigurationsdatei in XML.
Thorbjørn Ravn Andersen
5

Servlet ist eine serverseitige Technologie, mit der dynamische Webseiten in Webanwendungen erstellt werden. Eigentlich ist Servlet eine API, die aus einer Gruppe von Klassen und Schnittstellen besteht und einige Funktionen hat. Wenn wir die Servlet-API verwenden, können wir vordefinierte Funktionen von Servlet-Klassen und -Schnittstellen verwenden.

Lebenszyklus von Servlet:

Der Webcontainer verwaltet den Lebenszyklus der Servlet-Instanz.

1. Servlet-Klasse geladen

2. Servlet-Instanz erstellt

3 . Die Methode init () wird aufgerufen

4. aufgerufene service () -Methode

5. Die Methode destroy () wird aufgerufen

Wenn eine Anforderung vom Client (Browser) ausgelöst wird, prüft der Webcontainer, ob das Servlet ausgeführt wird oder nicht. Wenn ja, ruft er die service () -Methode auf und gibt die Antwort an den Browser.

Wenn das Servlet nicht ausgeführt wird, führen Sie die folgenden Schritte aus.

1. classloader lädt die Servlet-Klasse

2. Instanziiert das Servlet

3. Initialisiert das Servlet

4. Rufen Sie die service () -Methode auf

Nachdem der Anforderungs-Webcontainer bedient wurde, warten Sie eine bestimmte Zeit. Wenn in dieser Zeit eine Anforderung eingeht, ruft er nur die service () -Methode auf, andernfalls ruft er die destroy () -Methode auf.

Navnath Adsul
quelle
5

Wenn Sie Anfänger sind, kann dieses Tutorial eine grundlegende Vorstellung davon geben, was Servlet ist ...

Einige wertvolle Punkte finden Sie weiter unten unter dem angegebenen Link.

Die Servlet-Technologie wird verwendet, um eine Webanwendung zu erstellen, die sich auf der Serverseite befindet und eine dynamische Webseite generiert.

Servlet kann je nach Kontext auf viele Arten beschrieben werden.

  • Servlet ist eine Technologie, die zum Erstellen von Webanwendungen verwendet wird.
  • Servlet ist eine API, die viele Schnittstellen und Klassen einschließlich Dokumentationen bereitstellt.
  • Servlet ist eine Schnittstelle, die zum Erstellen eines Servlets implementiert werden muss.
  • Servlet ist eine Klasse, die die Funktionen der Server erweitert und auf eingehende Anforderungen reagiert. Es kann auf jede Art von Anfragen antworten.
  • Servlet ist eine Webkomponente, die auf dem Server bereitgestellt wird, um eine dynamische Webseite zu erstellen. Referenz: Hier .
Sandun Madola
quelle
1
Das ist ein wirklich gutes Tutorial, das Konzepte aus dem Grund erklärt
Nikhil Sahu
3

Java-Servlets sind serverseitige Java-Programmmodule, die Kundenanforderungen verarbeiten und beantworten und die Servlet-Schnittstelle aktualisieren. Es hilft bei der Verbesserung der Nützlichkeit von Webservern mit vernachlässigbarem Overhead, Wartung und Support.

Ein Servlet fungiert als Vermittler zwischen dem Kunden und dem Server. Da Servlet-Module weiterhin auf dem Server ausgeführt werden, können sie Anforderungen des Kunden abrufen und darauf reagieren. Bedarfs- und Reaktionsobjekte des Servlets bieten eine hilfreiche Methode, um mit HTTP-Anfragen umzugehen und Inhaltsinformationen an den Kunden zurückzusenden.

Da ein Servlet mit dem Java-Dialekt koordiniert ist, verfügt es zusätzlich über alle Java-Highlights, z. B. hohe Beweglichkeit, Bühnenautonomie, Sicherheit und Verfügbarkeit von Java-Datenbanken.

Poorna Senani Gamage
quelle
2

Servlet ist eine Java-Klasse, die auf eine HTTP-Anfrage antwortet und eine HTTP-Antwort erzeugt. Wenn wir eine Seite mit HTML erstellen, handelt es sich um eine statische Seite. Um sie dynamisch zu gestalten, verwenden wir SERVLET {in einfachen Worten man kann verstehen} Um Servlet zu nutzen, wird es von JSP überwunden, es verwendet den Code und das HTML-Tag beide an sich.

Roopam
quelle
2

Servlets sind Java-Klassen, die bestimmte Funktionen ausführen, wenn ein Website-Benutzer eine URL von einem Server anfordert. Diese Funktionen können Aufgaben wie das Speichern von Daten in einer Datenbank, das Ausführen von Logik und das Zurückgeben von Informationen (wie JSON-Daten) ausführen, die zum Laden einer Seite erforderlich sind.

Die meisten Java-Programme verwenden eine main()Methode, die Code ausführt, wenn das Programm ausgeführt wird. Java-Servlets enthalten doGet()und doPost()Methoden, die genau wie die main()Methode funktionieren. Diese Funktionen werden ausgeführt, wenn der Benutzer eine GEToder eine POSTAnfrage an die diesem Servlet zugeordnete URL stellt. So kann der Benutzer eine Seite für eine GETAnfrage laden oder Daten aus einer POSTAnfrage speichern .

Wenn der Benutzer eine GEToder eine POSTAnforderung sendet , liest der Server @WebServletoben in jeder Servlet-Klasse in Ihrem Verzeichnis, um zu entscheiden, welche Servlet-Klasse aufgerufen werden soll. Angenommen, Sie haben eine ChatBox-Klasse und diese befindet sich oben:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Wenn ein Benutzer die /chatURL anfordert , wird Ihre ChatBoxKlasse ausgeführt.

Kundus
quelle
0

Wie in diesem Artikel beschrieben, ist ein Servlet eine standardisierte Methode zum Erweitern eines Java-Servers und zum Zugreifen auf seine Funktionen.

Jedes Servlet kann als winziger Server (daher der Name) angesehen werden, der zusammen mit anderen Kontextdaten wie der Sitzung Zugriff auf die in Java-Code modellierte Anforderung und Antwort erhält.

Mit diesen Informationen kann der Java-Code des Servlets mit allem verbunden werden, was zum Rendern einer Antwort erforderlich ist, einschließlich der Übergabe an eine JSP-Seite zum Generieren einer HTML-Ansicht.

mtyson
quelle
-1

Ich denke, Servlet ist im Grunde eine Java-Klasse, die als Mittelweg zwischen HTTP-Anforderung und HTTP-Antwort fungiert. Servlet wird auch verwendet, um Ihre Webseite dynamisch zu gestalten. Angenommen, Sie möchten auf eine andere Webseite auf dem Server umleiten, dann müssen Sie Servlets verwenden. Eine weitere wichtige Sache ist, dass das Servlet sowohl auf localhost als auch auf einem Webbrowser ausgeführt werden kann.

Roopam
quelle
-2

Sie haben gerade die Antwort für ein normales Servlet erhalten. Ich möchte Ihnen jedoch etwas über Servlet 3.0 mitteilen

Was ist zuerst ein Servlet?

Ein Servlet ist eine Webkomponente, die von einem Container verwaltet wird und dynamischen Inhalt generiert. Servlets sind Java-Klassen, die zu Bytecode kompiliert werden, der dynamisch in einen Java-fähigen Webserver oder Servlet-Container geladen und von diesem ausgeführt werden kann.

Servlet 3.0 ist ein Update der vorhandenen Servlet 2.5-Spezifikation. Für Servlet 3.0 erforderliche API der Java Platform, Enterprise Edition 6. Servlet 3.0 konzentriert sich auf Erweiterbarkeit und Plug-in für Webframeworks. Servlet 3.0 bietet einige Erweiterungen wie EoD (Ease of Development), Pluggability, Async Support und Sicherheitsverbesserungen

Einfache Entwicklung

Sie können Servlets, Filter, Listener, Init-Parameter deklarieren und fast alles kann mithilfe von Anmerkungen konfiguriert werden

Steckbarkeit

Sie können ein Unterprojekt oder ein Modul mit einer web-fragment.xml erstellen. Dies bedeutet, dass steckbare Funktionsanforderungen unabhängig implementiert werden können.

Async-Unterstützung

Servlet 3.0 bietet die Möglichkeit der asynchronen Verarbeitung, z. B.: Warten auf die Verfügbarkeit einer Ressource, Asynchrones Generieren einer Antwort.

Sicherheitsverbesserungen

Unterstützung für die Sicherheitsmethoden für Authentifizierungs-, Anmelde- und Abmeldeservlets

Ich habe es im Java Servlet Tutorial gefunden

David Pham
quelle