Wie funktioniert getWriter () in einer HttpServletResponse?

8

In der Methode service() verwenden wir

%Vor%

Bitte sagen Sie mir, wie es das Objekt PrintWriter class zurückgibt und dann eine Verbindung zum Browser herstellt und die Daten an den Browser sendet.

    
pratap 15.04.2009, 06:07
quelle

3 Antworten

11

Es macht keine Verbindung zum Browser - der Browser hat bereits eine Verbindung zum Server hergestellt. Es puffert entweder, was Sie im Speicher schreiben und überträgt dann die Daten am Ende der Anfrage, oder es stellt sicher, dass alle Header in die Netzwerkverbindung geschrieben wurden und gibt dann PrintWriter zurück, das Daten direkt in diese Netzwerkverbindung schreibt .

Im Pufferungsszenario gibt es möglicherweise eine feste Puffergröße, und wenn Sie dies überschreiten, werden die bisher geschriebenen Daten an die Netzwerkverbindung "geleert". Der große Vorteil eines Puffers ist, dass wenn Sie auf halbem Wege etwas falsch machen, Sie Ihre Antwort auf eine Fehlerseite ändern können. Wenn Sie bereits mit dem Schreiben der Antwort begonnen haben, wenn etwas schief geht, können Sie nicht viel tun, um den Fehler sauber anzuzeigen.

(Es gibt auch die Frage, ob die Inhaltslänge vor dem Inhalt übertragen werden soll.) Wenn Sie keinen Puffer mehr haben, bevor Sie die Antwort abgeschlossen haben, wird mir zuverlässig mitgeteilt, dass die Antwort eine Chunked-Codierung verwendet. )

    
Jon Skeet 15.04.2009 06:13
quelle
0

Eine ziemlich einfache Implementierung:

%Vor%     
Manoj 15.04.2009 11:16
quelle
-1

Beachten Sie außerdem, dass mehrere Open-Source-Implementierungen der Servlet-API verfügbar sind. So können Sie sehen, wie es gemacht werden kann.

Ich glaube, dass die offizielle Implementierung auch von Open Source stammt und im Glassfish-Server enthalten ist.

    
quelle

Tags und Links