|
|
|
Правильная работа со статическими ресурсами в спринг-проекте
|
|||
|---|---|---|---|
|
#18+
Из заголовка ясно, что использую Spring, Spring MVC (3.1). Все запросы идут на спринговский DispatcherServlet, в том числе и статические. Отсекаю настройками: Код: xml 1. 2. 3. В jsp ссылаюсь так: Код: html 1. 2. 3. Пока ссылки имеют вид 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. Опять-таки, в продакшине этот вопрос не волнует, так как стоит веб-сервер, который отсекает статику до Томкета, но в разработке ставить желания нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 05:50:27 |
|
||
|
Правильная работа со статическими ресурсами в спринг-проекте
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, можно написать в хедере страницы: Код: html 1. 2. 3. тогда в хтмл сможешь писать со слешем вначале в URL у ресурсов, который не будет зависеть от текущего пути к странице: Код: html 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 07:00:06 |
|
||
|
Правильная работа со статическими ресурсами в спринг-проекте
|
|||
|---|---|---|---|
|
#18+
Н-да, спасибо, "век живи - век учись", вроде в вебе не первый день, а про <base> не знал. Да, это решило совершенно все проблемы. Правда, адреса надо прописывать без начального слеша, потому что даже при <base href="localhost:8080/myapp/"/> адрес <img src="/images/someimage.png"/> будет ссылаться на localhost:8080/images/someimage.png . А без него - как раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 13:49:15 |
|
||
|
Правильная работа со статическими ресурсами в спринг-проекте
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, У меня похожая проблема, но на запрос какого-то статического ресурса возвращается 405. Покажите плиз строчки из маппига спринга ресурсов и контроллеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 16:25:42 |
|
||
|
Правильная работа со статическими ресурсами в спринг-проекте
|
|||
|---|---|---|---|
|
#18+
Да, в общем-то, все приведено в первом посте. Помогло, в общем-то, применение тэга <base>, в котором прописываю путь до корня проекта (или адрес). А везде прописываю относительный путь без первого слеша (с ним используется только адрес вида домен:порт). Поэтому выкладывай свой сорс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 19:23:21 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2131329]: |
0ms |
get settings: |
16ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
38ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 334ms |
| total: | 511ms |

| 0 / 0 |
