одно из писем моего приложения постоянно помечено как спам. это был html с единственной ссылкой, которую я отправил как html в теле с типом содержимого text / html.
Мое самое успешное решение этой проблемы состояло в том, чтобы составить электронное письмо, чтобы оно выглядело так, как будто оно было сгенерировано через почтовый клиент.
я изменил электронное письмо как многопользовательский / альтернативный mime-документ, и теперь я генерирую как текстовые, так и текстовые / текстовые части.
письмо больше не является обнаружен как мусор по перспективам.
Вам необходимо записать изображение как массив байтов в выходной поток ответа. Примерно так:
byte[] imageBytes = getImageAsBytes();
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length);
response.getOutputStream().write(imageBytes);
Тогда в вашем JSP вы просто используете стандартный элемент img
:
<img src="url to your servlet">
Я бы сделал что-то в этом роде, чтобы добиться этого:
На странице JSP вы помещаете ссылку на изображение:
<img src="servlet/path?word=value">the rest</img>
Эта ссылка указывает на ваш сервлет, он генерирует изображение, используя параметры запроса, сохранять их не нужно, просто поместите в выходной поток ответа. Вы должны не забыть отключить кеширование браузера для этого сервлета.
Сначала отображается страница JSP, затем запрашиваются все изображения, она должна работать нормально.
Конечно, вы не должны помещать текст для отображения в с таким параметром, возможно, вам следует как-то его зашифровать или сохранить в сеансе HTTP.
Надеюсь, это поможет.
Если я правильно понимаю вашу проблему, последовательность событий будет следующей:
Таким образом, вы не можете сгенерировать изображение и передать его JSP. Однако вы можете сгенерировать URL , чтобы получить изображение и поместить его в JSP. Это достаточно легко передать сервлету, поместив его в объект HttpServletRequest (область запроса в JSP). Например, сгенерируйте:
<a href="http://myhost.com/image_servlet?id=1234"/>
Вы не делаете ' Я действительно говорю, что это за текст или какая информация требуется для создания изображения. Если вы не можете инкапсулировать это в URL-адресе GET, вам может потребоваться добавить дополнительную информацию и поместить ее в HttpSession, чтобы ее можно было получить при следующем запросе получения изображения.
Вы не можете 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
или подобное.
Итак, у вас выполняется два запроса. Один для страницы, на которой вы визуализируете изображение и временно сохраняете его, а второй, на котором вы возвращаете изображение. Вы должны не забыть очистить кеш изображений, но это все просто. Я бы не стал беспокоиться о хранении большого количества изображений, так как два запроса от браузера обычно (!) Приходят в быстрой последовательности.
Думаю, можно использовать uri данных , если ваш браузер его поддерживает и создайте что-то вроде
7