Was ist Inter-Servlet-Kommunikation?

0
13964

Wie der Name schon sagt, handelt es sich um die Kommunikation zwischen Servlets. Servlets reden miteinander. [Es gibt viele Möglichkeiten, zwischen Servlets zu kommunizieren, einschließlich

  • Versand anfordern
  • HTTP-Weiterleitung
  • Servlet-Verkettung
  • HTTP-Anfrage (mithilfe von Sockets oder der URLConnection-Klasse)
  • Gemeinsam genutzte Sitzungs-, Anforderungs- oder Anwendungsobjekte (Beans)
  • Direkter Methodenaufruf (veraltet)
  • Gemeinsam genutzte statische Variablen oder Instanzvariablen (veraltet)

Durchsuchen Sie die FAQ, insbesondere das Thema Message Passing (einschließlich Request Dispatching), nach Informationen zu jeder dieser Techniken. -Alex]

Grundsätzlich wird die Kommunikation zwischen Servlets durch Servlet-Verkettung erreicht. Dabei handelt es sich um einen Prozess, bei dem Sie die Ausgabe eines Servlets als Eingabe an ein anderes übergeben. Diese Servlets sollten auf demselben Server ausgeführt werden.

zB ServletContext.getRequestDispatcher(HttpRequest, HttpResponse).forward(“NextServlet” ; Sie können das aktuelle Anforderungs- und Antwortobjekt aus der letzten Formularübermittlung an das nächste Servlet/JSP übergeben. Sie können diese Objekte ändern und übergeben, sodass das nächste Servlet/JSP die Ergebnisse dieses Servlets verwenden kann.

Es gibt einige Servlet-Engine-spezifische Konfigurationen für die Servlet-Verkettung.

Servlets können auch öffentliche Funktionen anderer Servlets aufrufen, die auf demselben Server ausgeführt werden. Dies kann erreicht werden, indem über das ServletContext-Objekt ein Handle für das gewünschte Servlet abgerufen wird, indem ihm der Servlet-Name übergeben wird (dieses Objekt kann alle auf dem Server ausgeführten Servlets zurückgeben). Und dann die Funktion für das zurückgegebene Servlet-Objekt aufrufen.

zB TestServlet test= (TestServlet)getServletConfig().getServletContext().getServlet(“OtherServlet”); otherServletDetails= Test.getServletDetails();

Sie müssen vorsichtig sein, wenn Sie die Methoden eines anderen Servlets aufrufen. Wenn das Servlet, das Sie aufrufen möchten, die SingleThreadModel-Schnittstelle implementiert, könnte Ihr Aufruf mit der Single-Threaded-Natur des Servlets in Konflikt geraten. (Der Server kann nicht eingreifen und sicherstellen, dass Ihr Aufruf erfolgt, wenn das Servlet nicht mit einem anderen Client interagiert.) In diesem Fall sollte Ihr Servlet anstelle direkter Aufrufe eine HTTP-Anfrage an das andere Servlet senden.

Servlets könnten andere Servlets auch programmgesteuert aufrufen, indem sie eine HTTP-Anfrage senden. Dies könnte durch Öffnen einer URL-Verbindung zum gewünschten Servlet erfolgen.