Подтвердить что ты не робот

Spring: обслуживание статических ресурсов вне контекста root

в веб-приложении, мне нужно обслуживать статическое содержимое (изображения), расположенное вне каталога контекста приложения. Для общей архитектуры приложения требуется, чтобы я использовал Tomcat для этого. Я думал, что мне может пригодиться Spring <mvc:resources>, чтобы настроить сопоставление URL-адресов приложений и содержимого каталога. Но атрибут AFAIK it mapping обрабатывает только контекстные относительные или сопоставления классов. Следовательно, что я хотел бы использовать:

<mvc:resources location="/images/**" mapping="/absolute/path/to/image/dir"/>

не работает. Поскольку я предпочел бы избежать написания простого сервлета передачи файлов, я был бы рад, если бы кто-нибудь мог дать мне несколько указателей на существующие решения/обходные решения Spring.

Большое спасибо.

Гомер

4b9b3361

Ответ 1

<mvc:resources> может обслуживать ресурсы извне, вам нужно использовать обычный Spring синтаксис пути ресурса:

<mvc:resources mapping="/images/**" location="file:/absolute/path/to/image/dir/"/> 

Ответ 2

Существует еще одна простая коррекция

код должен быть

<mvc:resources mapping="/images/**" location="file:/absolute/path/to/image/dir/"/>

Вы заметили разницу? Вы должны положить '/' в конце абсолютного пути.

или вы можете использовать конфигурацию java

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    String rootPath = System.getProperty("user.home");
    String imagePath = "file:"+rootPath + File.separator + "tmpFiles/";
    System.out.println(imagePath);
    registry.addResourceHandler("/resources/**").addResourceLocations("resources/");
    registry.addResourceHandler("/tmpFiles/**").addResourceLocations(imagePath);
}

Его работа для меня.