Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Пересылка картинки клиенту


Автор: zer 16.3.2006, 18:18
Всем привет!
Допустим мне нужно нарисовать картинку (график)
и отдать ее клиенту. В jsp страничке я вызываю класс который
формирует изображение, сохраняю его в $catalina_home\myapp\out.jpg
далее на этой же странице находится такой код:
<img src="http://hostname:7070/myapp/out.jpg" alt="">

Вопрос: правильно ли это? И что делать в такой ситуации когда
браузер берет эту картинку из кэша, когда ее нужно взять с
сервера (уже измененную)?

Автор: batigoal 16.3.2006, 21:55
Можно отсылать картинку напрямую из сервлета, как байтовый стрим. Тогда не придется делать сохранение на диск. Пример есть тут: http://forum.vingrad.ru/index.php?showtopic=54327&view=findpost&p=431362

Цитата(zer @ 16.3.2006, 19:18 Найти цитируемый пост)
И что делать в такой ситуации когда
браузер берет эту картинку из кэша, когда ее нужно взять с
сервера (уже измененную)?

Видимо, нужно поиграться с HTTP-заголовками (Cache-Control, Expires и еще какие-то).

Автор: zer 17.3.2006, 13:33
Цитата

Можно отсылать картинку напрямую из сервлета, как байтовый стрим. Тогда не придется делать сохранение на диск. Пример есть тут: http://forum.vingrad.ru/index.php?showtopi...p;#038;p=431362


Есть jsp-страница и есть сервлет (который по приведенной выше ссылке). Не пойму, как их увязать вместе,
мне нужно чтобы в определенном месте страницы появлялась картинка.
Я делаю так:

Код

response.setContentType("image/gif");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
... 
byte[] imageContent = baos.toByteArray();
response.getOutputStream().write(imageContent);


но в этом случае все содержимое страницы пропадает, остается лишь картинка в левом верхнем углу страницы. Как быть?

Автор: batigoal 17.3.2006, 13:55
1) делаешь сервлет, как указано в примере;
2) Маппишь его на УРЛ, например, /images/generatedImage
3) Добавляешь в свою страницу картинку, указав атрибут c этим УРЛом:
Код

<img src="/images/generatedImage">

Автор: zer 17.3.2006, 16:16
Lamer George, большое спасибо! Теперь все работает как надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)