Весна: Різниця / ** та / * щодо шляхів


83

Яка різниця між двома зірочками замість однієї зірочки, коли ми маємо на увазі шляхи?

Раніше я налагоджував свій проект Spring 3. Я намагався додати .swf за допомогою

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

З моїм ресурсом Web.xml ResourceServlet виглядає так

<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/**і це нарешті вдалося. Моє питання ... чому?


Ви впевнені, що це /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не буде працювати для шляхів, які починаються з a /, тоді як це має відбуватися згідно з конвенціями Ant Style.
Devabc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.