Christian Heindl: Tomcat: getOutputStream() has already been called

Beitrag lesen

<%@ page contentType="DeinMimeTyp" %>
<% response.sendRedirect("DeineURL/DeinContext/DeinFileName"); %>
Dazu muss sich die Datei im Pfad des entsprechenden Web-Kontextes befinden (wenn Context-Switching erlaubt ist, sollte auch ein anderer funktionieren).

Und das will ich eigentlich mit dem JSP verhindern: Ich möchte nicht alle Daten öffentlich zugänglich machen in dem ich das Verzeichniss, in dem die Bilddateien lagern, in den Servlet-Context stelle. In der JSP werden nämlich auch noch Zugriffsrechte (die nur mit der Datenbank zu prüfen sind) geprüft.

Ich habe aber intwischen eine Lösung gefunden:

bevor ich byteStream.writeTo(response.getOutputStream()); (o.s.a.) aufrufe rufe ich jetzt vorher nochmal out.clear(); auf. Damit funktionierts dann auch.

  1. Verlagere diese Funktionalität komplett in ein Servlet. Hier kannst Du mit "response.getOutputStream()" problemlos arbeiten.

Wäre auch gegangen, allerdings fällt das im Gesamtprojekt etwas aus dem Rahmen, weil nur JSP´s inkl. Beans genutzt werden.

Trotzdem Danke.
Mit freundlichen Grüßen
Christian