Вопрос по java, image – Передать динамическое изображение в JSP с сервлетом

2

У меня есть настольное приложение, которое создает графический 2D-объект, вставляет его в панель и рисует. Я пытаюсь преобразовать это приложение в веб-страницу с помощью сервлетов и jsps. Я читаю онлайн в течение 2 дней и не могу понять, как это сделать, каждый пример, который я нахожу, пропускает важную часть. Я не хочу сохранять изображение в файл, потому что каждый пользователь получит новое / другое изображение.

Могу ли я создать образ в сервлете вместе с другими переменными ответа и одновременно передать их в jsp? Затем вызовите изображение, используя что-то вроде $ {response.image}. Это кажется предпочтительным, но, похоже, не работает.

Или мне нужен отдельный сервлет только для изображения (это кажется сложнее)? Также, как мне подготовить объект Graphics2D для использования в качестве изображения в HTML?

"Это кажется предпочтительным, но, похоже, не работает." Может, просто устала. :( Нам нужны детали, чтобы помочь вам. An SSCCE твоей лучшей попытки тоже не сбиться с пути. Andrew Thompson

Ваш Ответ

2   ответа
3

что именно веб-браузер должен загружать отдельные изображения на основе URL-адресов<img> найденные элементы в найденном HTML-коде и что этон веб-сервер, который каким-то образом вставляет необработанный контент изображения в полученный HTML-код.

Для этого вам действительно нужно создать автономный сервлет изображений, который прослушивает эти конкретные URL-адреса<img> элементы. Вы можете сделать сервлет повторно используемым, указав уникальный идентификатор изображения в строке запроса или информацию о пути запроса во время генерации кода HTML.

Например

<img src="imageServlet?param1=value1&param2=value2" />

с

@WebServlet("/imageServlet")
public class ImageServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Create image based on request.getParameter() information.
        // Set proper content type by response.setContentType().
        // Write image to response.getOutputStream().
    }

}
Смотрите также Как извлечь и отобразить изображения из базы данных на странице JSP? - следует похожему подходу
Спасибо, это помогло мне понять. cafman
Пожалуйста BalusC
0

HTML-страницу, сначала необходимо сгенерировать HTML-страницу, которая будет содержать следующую разметку:

<img src="somePath" />

Эта HTML-разметка будет отправлена в ответ на запрос, и браузер проанализирует ее. Затем он отправит второй HTTP-запрос наsomePath, чтобы загрузить байты изображения.

Итак, вам нужно как-то сохранить сгенерированное изображение в памяти и дождаться второго запроса, а затем отправить байты в ответ, или вам нужно отложить генерацию изображения до поступления второго запроса. Я очень предпочитаю второе решение , Таким образом, целью кода, обрабатывающего первый запрос, будет просто создать разметку, содержащуюimgег @, указывающий на соответствующий URL. Этот URL должен содержать все параметры, необходимые для создания изображения.

Во второй части вам непременно придется создать экземпляр BufferedImage, нарисовать его объект Graphics2D и использовать ImageIO для записи этого BufferedImage в поток вывода ответа.

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