powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Правильная работа со статическими ресурсами в спринг-проекте
6 сообщений из 6, страница 1 из 1
Правильная работа со статическими ресурсами в спринг-проекте
    #37854230
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из заголовка ясно, что использую Spring, Spring MVC (3.1).
Все запросы идут на спринговский DispatcherServlet, в том числе и статические. Отсекаю настройками:
Код: xml
1.
2.
3.
<mvc:resources mapping="/images/**" location="/images/"/>
<mvc:resources mapping="/scripts/**" location="/scripts/"/>
<mvc:resources mapping="/styles/**" location="/styles/"/>


В jsp ссылаюсь так:
Код: html
1.
2.
3.
<link rel="stylesheet" href="styles/home.css" type="text/css"/>
<script type="text/javascript" src="scripts/main.js"></script>
<img src="images/someimage.png"/>


Пока ссылки имеют вид localhost:8080/myapp/ или localhost:8080/myapp/somepath , загрузка статики работает. Однако если адрес "удлиняется" - localhost:8080/myapp/somepath/somepath2 - то статические элементы пытаются грузиться относительно него, скажем, localhost:8080/myapp/somepath/images/someimage.png , что совершенно не устраивает.

Решений навалом, все с доработками, но на результирующую страницу не влияют:
1. Можно ставить путь "/images/someimage.png" в расчете на продакшн и пути без контеста - совершенно не устраивает для тестов и разработки.
2. Можно использовать jstl-тэги: src="<core:url value="/images/someimage.png"/>" .
3. Можно использовать спринговские тэги: src="<spring:url value="/images/someimage.png"/>" .
4. Во все вьюшки передается параметр с полным путем: src="${siteAddress}/images/someimage.png" .

Можно поставить дефолтовый сервлет в web.xml, на который замапить статику, а в конфиге спринга добавить <mvc:default-servlet-handler/> (не пробовал, но много об этому пишут).

Много ссылок есть на реврайтер от Туки (?) - заведомо не буду юзать, но пользуются и такими решениями.

Вот и хотелось бы узнать - есть ли действительно правильное и простое решение, которое позволило бы не менять все ссылки в проекте (или хотя бы те, у которых урлы имеют вложенность более 2-ух)? Поигрался с маппингами в <mvc:resources>, но это не принесло результата. Не принципиально, но интересно.

P.S. Опять-таки, в продакшине этот вопрос не волнует, так как стоит веб-сервер, который отсекает статику до Томкета, но в разработке ставить желания нет.
...
Рейтинг: 0 / 0
Правильная работа со статическими ресурсами в спринг-проекте
    #37854247
JavaPhpLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

можно написать в хедере страницы:

Код: html
1.
2.
3.
<head>
<base href="http://localhost:8080/myapp/" />
</head>



тогда в хтмл сможешь писать со слешем вначале в URL у ресурсов, который не будет зависеть от текущего пути к странице:

Код: html
1.
2.
3.
<link rel="stylesheet" href="/styles/home.css" type="text/css"/>
<script type="text/javascript" src="/scripts/main.js"></script>
<img src="/images/someimage.png"/>
...
Рейтинг: 0 / 0
Правильная работа со статическими ресурсами в спринг-проекте
    #37854908
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н-да, спасибо, "век живи - век учись", вроде в вебе не первый день, а про <base> не знал. Да, это решило совершенно все проблемы.

Правда, адреса надо прописывать без начального слеша, потому что даже при <base href="localhost:8080/myapp/"/> адрес
<img src="/images/someimage.png"/> будет ссылаться на localhost:8080/images/someimage.png . А без него - как раз.
...
Рейтинг: 0 / 0
Правильная работа со статическими ресурсами в спринг-проекте
    #37884140
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

У меня похожая проблема, но на запрос какого-то статического ресурса возвращается 405. Покажите плиз строчки из маппига спринга ресурсов и контроллеров.
...
Рейтинг: 0 / 0
Правильная работа со статическими ресурсами в спринг-проекте
    #37884417
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в общем-то, все приведено в первом посте.
Помогло, в общем-то, применение тэга <base>, в котором прописываю путь до корня проекта (или адрес). А везде прописываю относительный путь без первого слеша (с ним используется только адрес вида домен:порт).

Поэтому выкладывай свой сорс.
...
Рейтинг: 0 / 0
Правильная работа со статическими ресурсами в спринг-проекте
    #37885638
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

Разобрался уже, косяк был в методе контроллера замапленного на @RequestMapping(value = {"/{somaId}"}). Он и обрабатывал мой запрос к статическому ресурсу.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Правильная работа со статическими ресурсами в спринг-проекте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]