398 Stimmen

Was ist Java Servlet?

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

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

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

4 Stimmen

Servlets Sie können es sich ansehen. Ich denke, dies ist Details und authentisch.

0 Stimmen

Um bei der letzten Frage zu bleiben: "Was ist der Unterschied zwischen serverseitiger Programmierung und Servlets". Servlet ist ein Teil des Servers, der z.B. eine http-Anfrage empfängt und dann darauf antwortet, z.B. eine HTML-Seite an den Benutzer zurückschickt. Es ist eigentlich ein Controller, der die endgültige Ansicht für den Benutzer erstellt (siehe MVC . Es ist also ähnlich wie bei Technologien wie PHP oder so, aber es kommt nur von Java.

460voto

Jon Skeet Punkte 1325502

Ein Servlet ist einfach eine Klasse, die auf eine bestimmte Art von Netzwerkanforderung antwortet - meistens eine HTTP-Anforderung. Grundsätzlich werden Servlets in der Regel zur Implementierung von Webanwendungen verwendet. Es gibt aber auch verschiedene Frameworks, die auf Servlets aufsetzen (z. B. Struts), um eine höhere Abstraktionsebene als die "hier ist eine HTTP-Anfrage, schreibe in diese HTTP-Antwort"-Ebene zu bieten, die Servlets bereitstellen.

Servlets laufen in einer Servlet-Container die sich um die Netzwerkseite kümmert (z. B. das Parsen einer HTTP-Anfrage, die Verbindungsbearbeitung usw.). Einer der bekanntesten Open-Source-Servlet-Container ist Tomcat .

1 Stimmen

Zunächst einmal danke für die Antwort, ist Java Servlets ist ein weiterer Server-Seite Programmiersprache wie PHP oder ASP?

22 Stimmen

Servlets sind Schnipsel von Java-Code, die vom Webserver aufgerufen werden innerhalb den Webserver selbst. Wenn Sie etwas wollen, das wie PHP oder ASP aussieht, brauchen Sie JSPs (eine spezielle Art von Servlets)

5 Stimmen

Thanx für die Antwort, aber immer noch kann ich nicht die wirkliche Verwendung von Servlets erhalten, wäre es besser, wenn u durch Beispiel wie sitution erklären kann, wo wir Servlets verwenden können. ich verstand nicht die Verwendung von Servlet wie was Servlet tun kann, dass andere Server-Seite Programmiersprachen nicht tun können.

165voto

Ayusman Punkte 8109

Ein Servlet ist im Grunde genommen eine Java-Klasse, die HTTP-Anfragen bearbeiten kann. Normalerweise wird die interne Feinarbeit des Lesens einer HTTP-Anfrage und -Antwort über die Leitung von Containern wie Tomcat übernommen. Dies geschieht, damit Sie sich als Entwickler auf der Serverseite darauf konzentrieren können, was mit den HTTP-Anfragen und -Antworten zu tun ist, und sich nicht um den Code kümmern müssen, der sich mit der Vernetzung usw. befasst. Der Container kümmert sich um Dinge wie das Verpacken des Ganzen in ein HTTP-Response-Objekt und sendet es an den Client (z. B. einen Browser) weiter.

Die nächste logische Frage, die sich stellt, ist: Wer entscheidet, was ein Container tun soll? Die Antwort lautet: Zumindest in der Java-Welt wird er von Spezifikationen geleitet (wohlgemerkt, ich habe nicht das Wort "kontrolliert" verwendet). Die Servlet-Spezifikationen (siehe Ressource 2) schreiben zum Beispiel vor, was ein Servlet können muss. Wenn Sie also eine Implementierung für die Spezifikation schreiben können, dann haben Sie gerade einen Container erstellt (technisch gesehen implementieren Container wie Tomcat auch andere Spezifikationen und machen knifflige Sachen wie benutzerdefinierte Klassenlader usw., aber Sie verstehen schon).

Angenommen, Sie haben einen Container, dann sind Ihre Servlets jetzt Java-Klassen, deren Lebenszyklus vom Container verwaltet wird, deren Reaktion auf eingehende HTTP-Anfragen aber von Ihnen bestimmt wird. Sie tun dies, indem Sie in die vordefinierten Methoden wie init(), doGet(), doPost() usw. schreiben, was Sie tun wollen. Sehen 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 ein paar System.out.println()-Anweisungen in seine Konstruktor-Methode (Ja, Sie können einen Konstruktor für ein Servlet haben), init(), doGet(), doPost()-Methoden und führen Sie das Servlet in Tomcat aus. Sehen Sie sich die Konsolenprotokolle und die Tomcat-Protokolle an.

Ich hoffe, das hilft, viel Spaß beim Lernen.

Ressourcen

  1. So sieht das HTTP-Servlet aus aquí (Beispiel Tomcat).

  2. Servlet Spezifikation .

  3. Einfaches Servlet Beispiel .

  4. Beginnen Sie mit der Lektüre der Buch online/PDF Hier können Sie auch das gesamte Buch herunterladen. Vielleicht ist das hilfreich. Wenn Sie gerade mit Servlets anfangen, ist es vielleicht eine gute Idee, das Material zusammen mit der Servlet-API zu lesen. Es ist ein langsamerer Lernprozess, aber viel hilfreicher, um die Grundlagen zu verstehen.

16 Stimmen

Von reinen Link-Antworten wird auf Stack Overflow abgeraten, da die Ressourcen, auf die sie verweisen, in Zukunft nicht mehr verfügbar sein oder sich ändern können. Ziehen Sie in Erwägung, den relevanten Inhalt des Links in Ihrer Antwort zusammenzufassen, um sie zu verbessern.

9 Stimmen

@Cupcake schätzt Ihr konstruktives Feedback. Ich habe versucht, der Antwort etwas mehr Inhalt zu geben. Danke, dass du die Community besser machst.

0 Stimmen

Wie passen Servlets zu Jax-RS und Springboot? Werden sie mit diesen beiden Technologien verwendet?

49voto

mike rodent Punkte 12041

Zusätzlich zu den oben genannten Punkten, und nur um auf das Offensichtliche hinzuweisen...

Für viele ist das überdeutlich, aber für jemanden, der es gewohnt ist, Anwendungen zu schreiben, die einfach nur ausgeführt werden und dann enden: ein Servlet verbringt die meiste Zeit damit, herumzuhängen und nichts zu tun... und darauf zu warten, dass etwas gesendet wird, eine Anfrage, und dann darauf zu reagieren. Aus diesem Grund hat ein Servlet eine Lebenszeit: es wird initialisiert und wartet dann, um auf alles zu reagieren, was ihm zugeworfen wird, und wird dann zerstört. Das bedeutet, dass es von etwas anderem (einem Framework) erstellt (und später zerstört) werden muss, dass es in einem eigenen Thread oder Prozess läuft und dass es nichts tut, wenn es nicht dazu aufgefordert wird. Außerdem muss auf die eine oder andere Weise ein Mechanismus implementiert werden, mit dem diese "Entität" auf Anfragen "hören" kann.

Ich schlage vor, dass die Lektüre von Threads, Prozessen und Sockets etwas Licht in diese Angelegenheit bringt: Es ist ganz anders als die Funktionsweise einer einfachen "Hallo Welt"-App.

Man könnte argumentieren, dass der Begriff "Server" oder "Servlet" ein wenig übertrieben ist. Eine vernünftigere und einfachere Bezeichnung könnte "Responder" sein. Der Grund für die Wahl des Begriffs "Server" ist historisch bedingt: Die ersten derartigen Einrichtungen waren "Dateiserver", bei denen mehrere Benutzer-/Client-Terminals eine bestimmte Datei von einem zentralen Rechner anforderten, die dann wie ein Buch oder ein Teller mit Fisch und Chips "serviert" wurde.

2 Stimmen

Ist es falsch, das Servlet als Analogon zu einem "Controller" in einem Standard-MVC-Framework zu betrachten?

1 Stimmen

Ich persönlich kann nicht erkennen, wie diese Analogie funktionieren soll. Ich neige auch zu der Annahme, dass Menschen, die meine Antwort für nützlich halten (sie hilft ihnen, die Dinge zu klären), durch Ihren Vorschlag verwirrt werden könnten.

0 Stimmen

Ich denke, diese Antwort ist nützlich. Aber ich habe mir auch (unabhängig von dieser Antwort und bevor ich sie gelesen habe) dieselbe Frage gestellt, die @user2490003 oben gestellt hat. Was ist der Unterschied zwischen einem Servlet und einem MVC-Framework Controller? Warum trifft die Analogie von user2490003 nicht zu?

32voto

Sankalp Punkte 1000

Was ist ein Servlet?

  • Ein Servlet ist einfach eine Klasse, die auf eine bestimmte Art von Netzwerkanforderung antwortet - meistens eine HTTP-Anforderung.

  • Grundsätzlich werden Servlets in der Regel zur Implementierung von Webanwendungen verwendet - es gibt aber auch verschiedene Frameworks, die auf Servlets aufsetzen (z.B. Struts), um eine höhere Abstraktionsebene als die "hier ist eine HTTP-Anfrage, schreibe in diese HTTP-Antwort"-Ebene zu ermöglichen, die Servlets bieten.

  • Servlets laufen in einem Servlet-Container, der sich um die Netzwerkseite kümmert (z.B. das Parsen einer HTTP-Anfrage, die Verbindungsbearbeitung usw.). Einer der bekanntesten Open-Source-Servlet-Container ist Tomcat.

  • In einem Anfrage/Antwort-Paradigma kann ein Webserver nur statische Seiten an den Client liefern

  • Für die Bereitstellung dynamischer Seiten benötigen wir Servlets.

  • Servlet ist nichts anderes als ein Java-Programm

  • Dieses Java-Programm hat keine main-Methode. Es hat nur einige Callback-Methoden.

  • Wie kommuniziert der Webserver mit dem Servlet? Über den Container oder die Servlet-Engine.

  • Servlet lebt und stirbt innerhalb eines Web-Containers.

  • Der Web-Container ist für den Aufruf von Methoden in einem Servlet zuständig. Er weiß, welche Callback-Methoden das Servlet hat.

Ablauf der Anfrage

  • Client sendet HTTP-Anfrage an Webserver
  • Der Webserver leitet diese HTTP-Anfrage an den Webcontainer weiter.
  • Da Servlet als Java-Programm kein HTTP versteht, sondern nur Objekte, wandelt der Web-Container diese Anfrage in ein gültiges Anfrageobjekt um
  • Web-Container spinnt einen Thread für jede Anfrage
  • Die gesamte Geschäftslogik wird in doGet()- oder doPost()-Callback-Methoden innerhalb der Servlets ausgeführt.
  • Servlet erstellt ein Java-Antwortobjekt und sendet es an den Container. Es wandelt es wieder in eine HTTP-Antwort um und sendet sie an den Client

Woher weiß der Container, welches Servlet der 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-mappings - der Pfad wie /Login oder /Notifications wird hier abgebildet in
      • Servlet-Name
      • url-Muster
    • und so weiter
  • Jedes Servlet in der Webanwendung sollte einen Eintrag in dieser Datei haben

  • Diese Suche läuft also wie folgt ab: url-pattern -> servlet-name -> servlet-class

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

Schiri - Schauen Sie sich das auf 1,5x an. https://www.youtube.com/watch?v=tkFRGdUgCsE . Dies ist eine großartige Erklärung.

1 Stimmen

Ein Link zu einer Lösung ist willkommen, aber bitte stellen Sie sicher, dass Ihre Antwort auch ohne diesen nützlich ist: Kontext um den Link hinzufügen damit Ihre Mitnutzer eine Vorstellung davon haben, worum es sich handelt und warum es dort ist, und zitieren Sie dann den wichtigsten Teil der Seite, auf die Sie verlinken, für den Fall, dass die Zielseite nicht verfügbar ist. Antworten, die kaum mehr als ein Link sind, können gelöscht werden.

2 Stimmen

Beachten Sie, dass sich die Welt weiterentwickelt hat. Im Jahr 2020 verwenden wir Anmerkungen zum Code anstelle einer zentralen stringbasierten Konfigurationsdatei in XML.

6voto

Navnath Adsul Punkte 316

Servlet ist eine serverseitige Technologie, die verwendet wird, um dynamische Webseite in der Webanwendung. Eigentlich Servlet ist ein api, die aus einer Gruppe von Klassen und Schnittstellen, die einige Funktionalität hat bestehen. Wenn wir die Servlet-API verwenden, können wir vordefinierte Funktionen von Servlet-Klassen und -Schnittstellen nutzen.

Lebenszyklus eines Servlets:

Der Web-Container verwaltet den Lebenszyklus der Servlet-Instanz.

1 . Servlet-Klasse geladen

2 . Servlet-Instanz erstellt

3 . die Methode init() wird aufgerufen

4 . die Methode service() wird aufgerufen

5 . die Methode destroy() wird aufgerufen

Wenn Anfrage durch Client (Browser) dann Web-Container prüft, ob das Servlet läuft oder nicht, wenn ja, dann es die Service()-Methode aufrufen und geben die Antwort an den Browser.

Wenn das Servlet nicht läuft, führt der Web-Container die folgenden Schritte aus.

1. Classloader lädt die Servlet-Klasse

2. Instanziiert das Servlet

3. Initialisiert das Servlet

4.die Methode service() aufrufen

nach dem Servieren der Anfrage Web-Container warten für bestimmte Zeit, in dieser Zeit, wenn die Anforderung kommt, dann rufen Sie nur Service()-Methode sonst rufen Sie destroy()-Methode.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X