Весна: разница / ** и / * в отношении путей

83

В чем разница между двумя звездочками вместо одной, когда мы говорим о путях?

Раньше я отлаживал свой проект Spring 3. Я пытался добавить .swf, используя

<spring:url var="flashy" value="/resources/images/flash.swf"/>

С моим ResourceServlet web.xml, выглядящим как

<servlet-name>Resource Servlet </servlet-name>
<url-pattern>/resources/*</url-pattern>

Но, к сожалению, я получал эту ошибку:

WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.

Мне это показалось действительно странным, поскольку все мои изображения в imagesпапке были доступны, но почему мой .swf был «защищен»?

После этого я решил изменить , /resources/*чтобы /resources/**и он , наконец , работал. У меня вопрос ... почему?

mpmp
источник
Вы уверены, что это /resources/**работает <url-pattern>?
axtavt
Кстати , org.springframework.js.resource.ResourceServlet устарел. Из Справочного руководства Spring Web Flow : «Обратите внимание, что, начиная с версии 3.0.4, Spring Framework включает замену ResourceServlet (см. Документацию Spring Framework )».
informatik01

Ответы:

49

Это шаблон пути, который используется Apache antкомандой Spring, реализует его и использует во всем фреймворке.

Для справки см. Javadoc AntPathMatcherновейшего javadoc, похоже, есть проблема, поэтому я связываю старый).

Возвращаясь к вашей проблеме, согласно документу, у нее есть только 3 правила:

  1. ? соответствует одному символу
  2. * соответствует нулю или более символов
  3. ** соответствует нулю или более "каталогов" в пути
Ранги Лин
источник
1
Возможно *ли сопоставить то, что **не может?
Александр Сурафель
3
Обратите внимание, что AntPathMatcher Springs содержит ошибки: он не полностью соответствует стилю шаблона Ant. Пример: **/*.cssне будет работать для путей, начинающихся с символа /, в то время как он должен соответствовать соглашениям стиля Ant.
Devabc