Переназначить запросы изображений в веб-приложении (tomcat) с пружиной для абсолютного пути - PullRequest
1 голос
/ 14 августа 2011

Я пытаюсь найти способ переназначить путь на абсолютный, чтобы получить изображения, хранящиеся в файловой системе сервера, я также использую Spring MVC, но <mvc:resource> не может отобразить абсолютные пути, и я не могу найти хороший способ сделать это с помощью пружинных контроллеров

т.е. Мне нужно отобразить все запросы изображений из / images / ** в / root / var / img / **, таким образом, когда клиентский браузер пытается загрузить изображение страницы, все изображения остаются в пути, указанном выше

Ответы [ 2 ]

2 голосов
/ 14 августа 2011

Вы можете создать новый контекст с docBase ссылкой на вашу папку (/root/var/img). Он должен выглядеть следующим образом:

<Context path=”/images” docBase=”/root/var/img/” ... >
</Context>

Более подробную информацию смотрите в документации по настройке контекста Tomcat (например, для Tomcat 6: Справочник по настройке Apache Tomcat: Контейнер контекста ).

Во введении к этому документу перечислены возможные места, где могут быть определены элементы context .

EDIT

Как я уже упоминал в комментариях, специфичный для Spring способ сделать это без создания какого-либо нового контекста, похоже, использует RedirectView (ссылка на Spring v2.5 JavaDoc). Согласно JavaDoc:

"Представление, которое перенаправляет на абсолютный, относительный контекст или текущий запрашивать относительный URL, по умолчанию выставляя все атрибуты модели как HTTP параметры запроса. "

РЕДАКТИРОВАТЬ2

Кажется, я неправильно понял цель RedirectView, которая является старым добрым перенаправлением URL. Таким образом, ответ от @Jens должен быть более подходящим (+1). Мне все еще интересно, существует ли уже существующее стандартное решение в Spring (что я изначально думал, что RedirectView подойдет ...) Не то, чтобы было много кода для написания, но все же:)

EDIT3 Прочитав больше по этой теме, я обнаружил, что <mvc:resources> может это сделать (т. Е. Сопоставлять ресурс, используя не только относительный путь или classpath), вам просто нужно правильно настроить location используя файл: префикс. На самом деле, уже есть ответ на SO, который объясняет, что именно вам нужно сделать: Spring: обслуживание статических ресурсов вне контекста root

1 голос
/ 14 августа 2011

не уверен, правильно ли я понимаю, но я думаю, что общий способ сделать это - установить контроллер, который отображается на запросы к / images /:

@RequestMapping(value ="/images/")    
public void fetchImage(@RequestParam String id, HttpServletResponse response)

Тогда контроллер можетзагрузите запрошенное изображение из настроенного каталога, такого как «/ root / var / img», и запишите его в OutputStream ответа.Например:

org.apache.commons.io.IOUtils.copy(fileInputStram, response.getOutputStream())

Кроме того, в ответе необходимо указать правильный тип пантомимы и т. Д.

Дженс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...