Java Servlet

Ein servlet ist eine javanische Programmiersprache-Klasse, die verwendet ist, um die Fähigkeiten zu Servern zu erweitern, die Anwendungszugang über ein Programmiermodell der Bitte-Antwort veranstalten. Obwohl servlets auf jeden Typ der Bitte antworten kann, werden sie allgemein verwendet, um die durch Webserver veranstalteten Anwendungen zu erweitern. So kann davon als Java Applet gedacht werden, der auf einem Server statt eines Browsers läuft.

Einführung

Ein Servlet ist Javas gestützte Server-Seitenwebtechnologie. Da der Name einbezieht, dient er einer Kundenbitte und erhält eine Antwort vom Server. Technisch sprechend ist Servlet eine javanische Klasse in Java EE, der nach Java Servlet API, ein Protokoll anpasst, durch das eine javanische Klasse auf Bitten antworten kann. Sie werden an ein spezifisches Client/Server-Protokoll nicht gebunden, aber werden meistenteils mit dem HTTP-Protokoll verwendet. Deshalb wird das Wort "Servlet" häufig in der Bedeutung "HTTP Servlet" verwendet. So kann ein Softwareentwickler einen servlet verwenden, um dynamischen Inhalt zu einem Webserver mit der javanischen Plattform hinzuzufügen. Der erzeugte Inhalt ist allgemein HTML, aber kann andere Daten wie XML sein. Servlets sind die javanische Kopie nach Nichtjava dynamische Webinhalt-Technologien wie CGI und ASP.NET. Servlets kann Staat in Sitzungsvariablen über viele Server-Transaktionen durch das Verwenden von HTTP Plätzchen oder dem URL-ADRESSE-Neuschreiben aufrechterhalten.

Um Servlet einzusetzen und zu führen, muss ein Webbehälter verwendet werden. Ein Webbehälter (auch bekannt als ein Behälter von Servlet) sind im Wesentlichen der Bestandteil eines Webservers, der mit dem servlets aufeinander wirkt. Der Webbehälter ist dafür verantwortlich, den Lebenszyklus von servlets zu führen, eine URL-ADRESSE zu einem besonderen servlet kartografisch darstellend und sicherstellend, dass der URL-ADRESSE-Antragsteller die richtigen Zugriffsrechte hat.

Die servlet API, die in der javanischen Paket-Hierarchie enthalten ist, definiert die erwarteten Wechselwirkungen des Webbehälters und eines servlet.

A ist ein Gegenstand, der eine Bitte erhält und eine auf dieser Bitte gestützte Antwort erzeugt. Das grundlegende servlet Paket definiert javanische Gegenstände, Servlet-Bitten und Antworten zu vertreten, sowie protestiert, um die Konfigurationsrahmen des servlet und Ausführungsumgebung zu widerspiegeln. Das Paket definiert HTTP-spezifische Unterklassen der allgemeinen servlet Elemente einschließlich Sitzungsverwaltungsgegenstände, die vielfache Bitten und Antworten zwischen dem Webserver und einem Kunden verfolgen. Servlets kann in einer KRIEGS-Datei als eine Webanwendung paketiert werden.

Servlets kann automatisch von Seiten von JavaServer (JSP) durch den Seitenbearbeiter von JavaServer erzeugt werden. Der Unterschied zwischen Servlets und JSP ist, dass Servlets normalerweise HTML innerhalb des javanischen Codes einbetten, während JSPs javanischen Code im HTML einbetten. Während der direkte Gebrauch von Servlets, um HTML (wie gezeigt, im Beispiel unten) zu erzeugen, selten, das höhere Niveau geworden ist, verwendet das MVC Webfachwerk in Java EE (JSF) noch ausführlich die Technologie von Servlet für die Bitte/Antwort der niedrigen Stufe, die über FacesServlet behandelt. Ein etwas älterer Gebrauch soll servlets in Verbindung mit JSPs in einem Muster genannt "das Modell 2" verwenden, das ein Geschmack nach dem MusterAnsicht-Kontrolleurmuster ist.

Geschichte

Die ganze servlet Spezifizierung wurde durch Sonne-Mikrosysteme, mit der Version 1.0 beendet im Juni 1997 geschaffen. Mit der Version 2.3 anfangend, wurde die servlet Spezifizierung unter dem javanischen Gemeinschaftsprozess entwickelt. JSR 53 definierte sowohl Servlet 2.3 als auch Spezifizierungen der Seite 1.2 von JavaServer. JSR 154 gibt Servlet 2.4 und 2.5 Spezifizierungen an. Bezüglich am 26. März 2010 ist die jetzige Version der servlet Spezifizierung 3.0.

In seinem blog auf java.net führen Sonne-Veteran und GlassFish Jim Driscoll berichtet über die Geschichte der servlet Technologie ausführlich. James Gosling hat zuerst an servlets in den frühen Tagen Javas gedacht, aber das Konzept ist kein Produkt geworden, bis Sonne das javanische Webserver-Produkt verladen hat. Das war davor, was jetzt die javanische Plattform ist, wurde Unternehmensausgabe in eine Spezifizierung gemacht.

Vorteile gegenüber CGI

Die Vorteile, servlets zu verwenden, sind ihre schnelle Leistung und Bequemlichkeit des Gebrauches, der mit mehr Macht über traditionellen CGI (Allgemeine Tor-Schnittstelle) verbunden ist. Traditionelle CGI in Java geschriebene Schriften haben mehrere Nachteile, wenn es zur Leistung kommt:

  • Wenn eine HTTP-Bitte gemacht wird, wird ein neuer Prozess für jeden Anruf der CGI Schrift geschaffen. Das oben der Prozess-Entwicklung kann besonders sehr systemintensiv sein, wenn die Schrift relativ schnelle Operationen tut. So wird Prozess-Entwicklung mehr Zeit nehmen als CGI Schrift-Ausführung. Java servlets löst das, weil ein servlet nicht ein getrennter Prozess ist. Jede Bitte, durch einen servlet behandelt zu werden, wird durch einen getrennten javanischen Faden innerhalb des Webserver-Prozesses behandelt, getrennten Prozess weglassend, der sich vom HTTP Dämon gabelt.
  • Gleichzeitige CGI-Bitte veranlasst die CGI Schrift, kopiert und ins Gedächtnis so oft geladen zu werden, wie es Bitten gibt. Jedoch, mit servlets, gibt es denselben Betrag von Fäden wie Bitten, aber es wird nur eine Kopie der servlet Klasse geben, die im Gedächtnis geschaffen ist, das dort auch zwischen Bitten bleibt.
  • Nur ein einzelne Beispiel antwortet auf alle Bitten gleichzeitig. Das reduziert Speichergebrauch und macht das Management von beharrlichen Daten leicht.
  • Ein servlet kann durch einen servlet Motor in einer einschränkenden Umgebung, genannt einen Sandkasten geführt werden. Das ist einem applet ähnlich, der im Sandkasten des WWW-Browsers läuft. Das macht einen einschränkenden Gebrauch von potenziell schädlichen servlets möglich.

Lebenszyklus eines servlet

  • Während der Initialisierungsbühne des Lebenszyklus von Servlet initialisiert der Webbehälter das servlet Beispiel durch das Nennen des init Methode. Der Behälter passiert einen Gegenstand, der die Schnittstelle von ServletConfig über den init Methode durchführt. Dieser Konfigurationsgegenstand erlaubt dem servlet, auf Namenwert-Initialisierungsrahmen aus der Webanwendung zuzugreifen.
  • Nach der Initialisierung kann der servlet Kundenbitten bedienen. Jede Bitte wird in seinem eigenen getrennten Faden bedient. Der Webbehälter nennt die Methode des servlet für jede Bitte. Die Methode bestimmt die Art der Bitte, die wird macht, und entsendet es zu einer passenden Methode, die Bitte zu behandeln. Der Entwickler des servlet muss eine Durchführung für diese Methoden zur Verfügung stellen. Wenn eine Bitte um eine Methode, die durch den servlet nicht durchgeführt wird, gemacht wird, wird die Methode der Elternteilklasse genannt, normalerweise auf einen Fehler hinauslaufend, dem Antragsteller zurückgegeben.
  • Schließlich nennt der Webbehälter die Methode, die den servlet aus dem Dienst nimmt. Die Methode, wie, wird nur einmal der Lebenszyklus eines servlet herbeigerufen.

Drei Methoden sind zum Lebenszyklus eines servlet zentral. Diese sind init , Dienst , und zerstören .

Sie werden durch jeden servlet durchgeführt und werden in spezifischen Zeiten durch den Server angerufen. Lassen Sie

wir denken, dass ein typisches Benutzerdrehbuch versteht, wenn diese Methoden genannt werden.

  1. Nehmen Sie an, dass ein Benutzer in eine Internetadresse (URL) zu einem WWW-Browser eingeht.
  2. * erzeugt Der Browser dann eine HTTP-Bitte um diese URL-ADRESSE.
  3. * wird Diese Bitte dann an den passenden Server gesandt.
  4. Die HTTP-Bitte wird durch den Webserver erhalten.
  5. * stellt Der Server diese Bitte zu einem besonderen servlet kartografisch dar.
  6. * wird Der servlet dynamisch wiederbekommen und in den Adressraum des Servers geladen.
  7. Der Server ruft die Methode des servlet an.
  8. * wird Diese Methode nur angerufen, wenn der servlet zuerst ins Gedächtnis geladen wird.
  9. * ist Es möglich, Initialisierungsrahmen zum servlet zu passieren, so kann es sich konfigurieren.
Der Server ruft die Methode des servlet an.
  1. * wird Diese Methode genannt, um die HTTP-Bitte zu bearbeiten.
  2. * werden Sie sehen, dass es für den servlet möglich ist, Daten zu lesen, der in der HTTP-Bitte zur Verfügung gestellt worden ist.
  3. * kann Es auch eine HTTP Antwort für den Kunden formulieren.
  4. Der servlet bleibt im Adressraum des Servers und ist verfügbar, um irgendwelche anderen von Kunden erhaltenen HTTP-Bitten zu bearbeiten.
  5. * wird Die Methode nach jeder HTTP-Bitte genannt.
  6. Der Server, an einem Punkt, kann sich dafür entscheiden, den servlet von seinem Gedächtnis auszuladen.
  7. * sind Die Algorithmen, durch die dieser Entschluss gemacht wird, zu jedem Server spezifisch.
  8. Der Server nennt die Methode, irgendwelche Mittel wie Dateigriffe aufzugeben, die für den servlet zugeteilt werden; wichtige Daten können zu einem beharrlichen Laden gespart werden.
  9. Das Gedächtnis, das für den servlet und seine Gegenstände zugeteilt ist, kann dann gesammelter Müll sein.

Beispiel

Das folgende Beispiel servlet druckt, wie oft seine Methode genannt wurde.

Bemerken Sie, dass das eine Unterklasse, eine Durchführung der Schnittstelle ist.

Die Methode von Klassenabsendungen bittet zu den Methoden und so weiter; gemäß der HTTP-Bitte. Im Beispiel unter der Methode wird überritten und unterscheidet nicht, welche HTTP um Methode bitten, der es dient.

Import java.io. IOException;

Import javax.servlet. ServletConfig;

Import javax.servlet. ServletException;

Import javax.servlet.http. HttpServlet;

Import javax.servlet.http. HttpServletRequest;

Import

javax.servlet.http.HttpServletResponse;

öffentliche Klasse ServletLifeCycleExample erweitert HttpServlet {\

private int Zählung;

@Override

öffentliche Leere init (ServletConfig config) wirft ServletException {\

super.init (config);

getServletContext .log ("init genannt");

count=0;

}\

@Override

geschützter leerer Dienst (Bitte von HttpServletRequest, Antwort von HttpServletResponse)

Werfen ServletException, IOException {\

getServletContext .log ("Dienst genannt");

Zählung ++;

response.getWriter .write ("Das Erhöhen der Zählung: Graf =" +count);

}\ @Override

öffentliche Leere zerstört {\

getServletContext .log ("zerstören genannt");

}\

}\

</Quelle>

Gebrauch

Servlets sind meistenteils an gewöhnt

  • Prozess oder Lager-Daten, der von einem HTML vorgelegt wurde, bilden
  • stellen Sie dynamischen Inhalt wie die Ergebnisse eines Datenbank Abfrage zur Verfügung
  • führen Sie Zustandinformation, die im staatenlosen HTTP-Protokoll, wie Füllung der Artikel in den Einkaufswagen des passenden Kunden nicht besteht.

Siehe auch

Server

  • Apachen-Kater
  • JBoss
  • Wellenbrecher
  • GlassFish
  • IBM WebSphere Application Server

Links


Andie MacDowell / 179
Impressum & Datenschutz