Проблема с OutputStream - PullRequest
       2

Проблема с OutputStream

0 голосов
/ 14 февраля 2011

Я прочитал Исключение сервлета - getOutputStream () уже был вызван для этого ответа , но я не нашел решения для моей проблемы.

В моем main.jsp у меня есть это утверждение:

<img src="ImageElaborator.jsp" style="float: left" alt="" height="70" width="70"/>

и в моем ImageElaborator.jsp:

byte[] photo = getPhoto();
response.getOutputStream().write(photo, 0, photo.length);

Этот фрагмент показывает мое изображение, но у меня есть эта ошибка:

java.lang.IllegalStateException: getOutputStream() has already been called for this response

Я не понимаю, как я могу это решить. Пожалуйста, помогите!

Ответы [ 3 ]

1 голос
/ 14 февраля 2011

Вы не должны помещать такой код в JSP, потому что во время выполнения кода некоторые пробелы, новые строки и т. Д. В начале JSP, вероятно, уже были отправлены в выходной поток JSP.

JSP следует использовать для вывода текста или разметки, но не для выполнения бизнес-логики и отправки необработанных байтов в выходной поток. Вы должны поместить этот вид кода в сервлет или в действие вашей любимой инфраструктуры MVC (Struts, Stripes, Spring MVC и т. Д.)

1 голос
/ 14 февраля 2011

В JSP нельзя вызывать OutputStream, так как он определен как неявная переменная, см. Неявную сессию и объекты: http://www.exforsys.com/tutorials/jsp/jsp-implicit-and-session-objects.html

Я считаю, что что-то вроде этого должно быть в порядке:

byte[] photo = getPhoto();
out.write(photo, 0, photo.length);

Но лучший способ сделать это - использовать сервлет, как было сказано.

1 голос
/ 14 февраля 2011

Не делайте этого в JSP. Сделай это в сервлете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...