В чем разница между двумя звездочками вместо одной, когда мы говорим о путях?
Раньше я отлаживал свой проект 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/**
и он , наконец , работал. У меня вопрос ... почему?
/resources/**
работает<url-pattern>
?Ответы:
Это шаблон пути, который используется
Apache ant
командой Spring, реализует его и использует во всем фреймворке.Для справки см. Javadoc AntPathMatcher (у новейшего javadoc, похоже, есть проблема, поэтому я связываю старый).
Возвращаясь к вашей проблеме, согласно документу, у нее есть только 3 правила:
?
соответствует одному символу*
соответствует нулю или более символов**
соответствует нулю или более "каталогов" в путиисточник
*
ли сопоставить то, что**
не может?**/*.css
не будет работать для путей, начинающихся с символа/
, в то время как он должен соответствовать соглашениям стиля Ant.