¿Cuál es la diferencia entre dos asteriscos en lugar de un asterisco cuando nos referimos a rutas?
Anteriormente, estaba depurando mi proyecto Spring 3. Estaba intentando agregar un .swf usando
<spring:url var="flashy" value="/resources/images/flash.swf"/>
Con ResourceServlet de mi web.xml luciendo como
<servlet-name>Resource Servlet </servlet-name>
<url-pattern>/resources/*</url-pattern>
Pero desafortunadamente recibí este error:
WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.
Lo encontré realmente extraño ya que images
se accedió a todas mis imágenes en la carpeta, pero ¿cómo es que mi .swf estaba "protegido"?
Después, decidí cambiar /resources/*
a /resources/**
y finalmente funcionó. Mi pregunta es ... ¿por qué?
spring
web
resources
url-pattern
mpmp
fuente
fuente
/resources/**
funciona<url-pattern>
?Respuestas:
Este es un patrón de ruta que se utilizó en
Apache ant
Spring Team, implementarlo y utilizarlo en todo el marco.Como referencia, vea javadoc de AntPathMatcher (el javadoc más nuevo parece tener un problema, así que vinculo uno antiguo).
Volviendo a tu problema, según el documento, solo tiene 3 reglas:
?
coincide con un personaje*
coincide con cero o más caracteres**
coincide con cero o más 'directorios' en una rutafuente
*
igualar lo**
que no?**/*.css
no funcionará para rutas que comiencen con a/
, aunque debería de acuerdo con las convenciones de Ant Style.