Zwykle nie należy zamykać strumienia. Kontener serwletów automatycznie zamknie strumień po zakończeniu działania serwletu w ramach cyklu życia żądania serwletu.
Na przykład, jeśli zamkniesz strumień, nie będzie on dostępny, jeśli zaimplementujesz filtr .
Powiedziawszy to wszystko, jeśli go zamkniesz, nic złego się nie stanie, o ile nie spróbujesz go ponownie użyć.
EDYCJA: kolejny link do filtra
EDIT2: adrian.tarau jest poprawny w tym sensie, że jeśli chcesz zmienić odpowiedź po tym, jak aplet wykonał swoje zadanie, powinieneś utworzyć opakowanie rozszerzające HttpServletResponseWrapper i buforować wyjście. Ma to na celu zapobieganie wysyłaniu danych wyjściowych bezpośrednio do klienta, ale także pozwala chronić, jeśli serwlet zamknie strumień, zgodnie z tym fragmentem (moje wyróżnienie):
Filtr modyfikujący odpowiedź musi
zwykle przechwytywać odpowiedź, zanim zostanie ona zwrócona klientowi. Sposobem na to jest przekazanie serwletowi, który generuje odpowiedź, strumienia zastępczego. Strumień rezerwowy zapobiega zamknięciu przez serwlet pierwotnego strumienia odpowiedzi po jego zakończeniu i umożliwia filtrowi modyfikację odpowiedzi serwletu.
Artykuł
Z oficjalnego artykułu firmy Sun można wywnioskować, że zamknięcie OutputStream
serwletu jest czymś normalnym, ale nie jest obowiązkowe.
close()
, co nic nie robi. Co ty powinien zrobić jest blisko każdego zasobu zamykany.