Primavera: diferencia de / ** y / * con respecto a las rutas


83

¿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 imagesse 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é?


¿Estás seguro de que /resources/**funciona <url-pattern>?
axtavt

Como nota al margen , org.springframework.js.resource.ResourceServlet está en desuso. De la Guía de referencia de Spring Web Flow : "Tenga en cuenta que a partir de la versión 3.0.4, Spring Framework incluye un reemplazo para ResourceServlet (consulte la documentación de Spring Framework )".
informatik01

Respuestas:


49

Este es un patrón de ruta que se utilizó en Apache antSpring 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:

  1. ? coincide con un personaje
  2. * coincide con cero o más caracteres
  3. ** coincide con cero o más 'directorios' en una ruta

1
¿Es posible *igualar lo **que no?
Alexander Suraphel

3
Tenga en cuenta que AntPathMatcher de Springs contiene errores: no se ajusta completamente al estilo de patrón de hormiga. Ejemplo: **/*.cssno funcionará para rutas que comiencen con a /, aunque debería de acuerdo con las convenciones de Ant Style.
Devabc,
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.