Quelle est la différence entre deux astérisques au lieu d'un astérisque lorsque nous nous référons à des chemins?
Plus tôt, je déboguais mon projet Spring 3. J'essayais d'ajouter un .swf en utilisant
<spring:url var="flashy" value="/resources/images/flash.swf"/>
Avec ResourceServlet de mon web.xml ressemblant
<servlet-name>Resource Servlet </servlet-name>
<url-pattern>/resources/*</url-pattern>
Mais malheureusement, j'obtenais cette erreur:
WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.
Je l'ai trouvé vraiment étrange puisque toutes mes images dans le dossier images
ont été accédées mais comment se fait-il que mon .swf ait été "protégé"?
Ensuite, j'ai décidé de changer le /resources/*
à /resources/**
et ça a finalement fonctionné. Ma question est ... pourquoi?
Il s'agit d'un modèle de chemin utilisé dans Apache ant
, l'équipe de printemps l'implémente et l'utilise dans tout le framework.
Pour référence, voir javadoc de AntPathMatcher ( le plus récent javadoc semble avoir un problème, donc je lie un ancien).
Revenons à votre problème, selon le document, il n'a que 3 règles:
?
correspond à un caractère*
correspond à zéro ou plusieurs caractères**
correspond à zéro ou plusieurs "répertoires" dans un chemin