Это возможно. Просто создайте imageservlet как этот пример здесь. Кстати, просто получите изображение как InputStream
из БД по ResultSet#getBinaryStream()
и запишите его в OutputStream
ответа, полученного как HttpServletResponse#getOutputStream()
обычный способ Java IO . Не забудьте добавить тип содержимого HTTP и заголовки длины содержимого. Если вы опустите тип контента, браузер не будет знать, что делать с информацией. Если вы опустите длину содержимого, оно будет отправлено с частичной кодировкой передачи, что чуть менее эффективно.
Что касается ссылки на сервлет в файле CSS, просто укажите URL относительно файла CSS. Таким образом, вам не нужно беспокоиться о пути к контексту. Определить относительный URL не так сложно, он работает так же, как и при доступе к путям файловой системы на локальном диске в командной консоли. cd ../../foo/bar/file.ext
и так далее. Вы когда-нибудь изучали это в школах, да?
ОК, предположим, что imageservlet расположен в http://example.com/context/image?id=x
, а CSS-файл расположен в http://example.com/context/css/globalstyle.css
(таким образом, текущая папка css
), а затем правильный относительный URL для imageservlet изнутри CSS. файл будет:
background-image: url('../image?id=123');
../
делает шаг назад в структуре каталогов, поэтому вы переходите из папки http://example.com/context/css
в http://example.com/context
. Если вам все еще сложно определить правильный относительный путь, то сообщите нам абсолютный URL как сервлета, так и файла CSS, и мы извлечем правильный относительный путь для вас.