Помогите получить изображение с сервлета на страницу JSP [дубликаты]

одно из писем моего приложения постоянно помечено как спам. это был html с единственной ссылкой, которую я отправил как html в теле с типом содержимого text / html.

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

я изменил электронное письмо как многопользовательский / альтернативный mime-документ, и теперь я генерирую как текстовые, так и текстовые / текстовые части.

письмо больше не является обнаружен как мусор по перспективам.

13
задан ChronoXIII 20 July 2009 в 15:36
поделиться

4 ответа

Вам необходимо записать изображение как массив байтов в выходной поток ответа. Примерно так:

byte[] imageBytes = getImageAsBytes();

response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length);

response.getOutputStream().write(imageBytes);

Тогда в вашем JSP вы просто используете стандартный элемент img :

<img src="url to your servlet">
31
ответ дан 1 December 2019 в 18:06
поделиться

Я бы сделал что-то в этом роде, чтобы добиться этого:

На странице JSP вы помещаете ссылку на изображение:

<img src="servlet/path?word=value">the rest</img>

Эта ссылка указывает на ваш сервлет, он генерирует изображение, используя параметры запроса, сохранять их не нужно, просто поместите в выходной поток ответа. Вы должны не забыть отключить кеширование браузера для этого сервлета.

Сначала отображается страница JSP, затем запрашиваются все изображения, она должна работать нормально.

Конечно, вы не должны помещать текст для отображения в с таким параметром, возможно, вам следует как-то его зашифровать или сохранить в сеансе HTTP.

Надеюсь, это поможет.

3
ответ дан 1 December 2019 в 18:06
поделиться

Если я правильно понимаю вашу проблему, последовательность событий будет следующей:

  1. Вы генерируете HTML page;
  2. Эта HTML-страница отправляется клиенту; и
  3. Браузер клиента считывает URL-адрес изображения и запрашивает его как отдельный запрос.

Таким образом, вы не можете сгенерировать изображение и передать его JSP. Однако вы можете сгенерировать URL , чтобы получить изображение и поместить его в JSP. Это достаточно легко передать сервлету, поместив его в объект HttpServletRequest (область запроса в JSP). Например, сгенерируйте:

<a href="http://myhost.com/image_servlet?id=1234"/>

Вы не делаете ' Я действительно говорю, что это за текст или какая информация требуется для создания изображения. Если вы не можете инкапсулировать это в URL-адресе GET, вам может потребоваться добавить дополнительную информацию и поместить ее в HttpSession, чтобы ее можно было получить при следующем запросе получения изображения.

1
ответ дан 1 December 2019 в 18:06
поделиться

Вы не можете 1 вернуть оба в одном ответе, так как вы возвращаете разные типы (HTML-страница типа text / html и изображение типа image / jpeg , скажем).

Для такого рода вещей я буду генерировать изображение во время начального запроса сервлета (для содержащей HTML-страницы). Я сохраняю его в кэше своего сервлета и записываю HTML-страницу с тегом изображения, содержащим URL-адрес этого изображения с дескриптором.

например, браузер запрашивает http: // what / page

Сервлет генерирует изображение и записывает HTML-тег на странице, например

<img src="http://whatever/image/unique_handle_to_image">

. Браузер отображает HTML-страницу и как часть этого отправляет новый запрос моему сервлету с описателем изображения.

например, браузер теперь запрашивает http: // что угодно / image / unique_handle_to_image

Затем я возвращаю изображение как тип содержимого image / jpeg или подобное.

Итак, у вас выполняется два запроса. Один для страницы, на которой вы визуализируете изображение и временно сохраняете его, а второй, на котором вы возвращаете изображение. Вы должны не забыть очистить кеш изображений, но это все просто. Я бы не стал беспокоиться о хранении большого количества изображений, так как два запроса от браузера обычно (!) Приходят в быстрой последовательности.

  1. Думаю, можно использовать uri данных , если ваш браузер его поддерживает и создайте что-то вроде

     
                         
                         
    7
ответ дан 1 December 2019 в 18:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: