Весенний ОТДЫХ MVC :статические файлы недоступны из-за URL-шаблона
-
20-09-2019 - |
Вопрос
Мой URL-шаблон сервлета Spring Dispatcher - это /* (как предполагает spring MVC REST)
Теперь все запросы разрешаются этим сервлетом.даже CSS / JS / Images также разрешаются и обрабатываются сервлетом..
Итак, Spring MVC пытается найти контроллер..:(
Как обойти это?Есть ли какой-нибудь стандартный выход из этой проблемы??
& Не хочу менять URL-шаблон на /rest / * (таким образом, доступ к другим статическим ресурсам осуществляется через /css / или / js и т.д.)
Решение
Вы можете сопоставить свои контроллеры с меньшим набором URL-адресов (т.е./app/*), а затем перепишите URL-адреса, которые на самом деле видят ваши пользователи, так, чтобы они даже не знали об этом.Взгляните на пример веб-приложения mvc-basic, в частности web.xml и urlrewrite.xml посмотреть, как это делается.
Другие советы
Сопоставьте Spring dispatcher с некоторым подразделом пространства URL и используйте Такки чтобы переписать URL-адреса, с которыми имеет дело пользователь.
http://www.example.org/app/controller/action -> http://www.example.org/controller/action
Просто предупреждающая информация по этому поводу:конфигурация перезаписи по умолчанию, определенная в примере Spring, не сработала для меня "из коробки".Правила перезаписи для таблиц стилей, скриптов и т.д.были все еще обработаны в соответствии с правилом /app/* и впоследствии обработаны DispatchServlet
, что нежелательно.
Я должен был добавить last="true"
добавьте атрибут к правилам styles / scripts / images, чтобы указать, что другие правила не должны применяться, и мне пришлось использовать макрос URL-адреса FreeMarker Spring в любых путях включения CSS / JS.
На всякий случай, если кто-то столкнется с такой же проблемой.