Просто создайте сервлет и в его методе doGet
подайте двоичное содержимое изображения (Content-Type: image / jpeg или gif).
Убедитесь, что в HttpServletResponse установлены следующие поля:
- ETag
- Last-Modified
- Content-Type
- Content-Length
Затем повторно запустите двоичный файл изображения как тело HttpServletResponse, запишите его непосредственно в поток, полученный через HttpServletResponse.getOutputStream
.
Вы можете передать ID изображения этому сервлету в качестве параметра URL, чтобы вы могли обслуживать разные изображения через один и тот же сервлет. Вы даже можете кэшировать образы на диске, но поскольку у вас есть сервлет, у вас будет возможность настроить временный каталог без виртуального сопоставления.
EDIT
На самом деле вы можете создать несколько виртуальных сопоставлений для этого сервлета, а в методе сервлета doGet
исследовать контекстный путь и обслуживать изображение на основе этого имени контекстного пути.