form - spring mvc netbeans 8
Spring: diferencia de/** y/* con respecto a las rutas (2)
¿Cuál es la diferencia entre dos asteriscos en lugar de un asterisco cuando nos referimos a rutas?
Antes estaba depurando mi proyecto de Spring 3. Estaba tratando de agregar un .swf usando
<spring:url var="flashy" value="/resources/images/flash.swf"/>
Con ResourceServlet de mi web.xml se parece a
<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 se accedió a todas mis imágenes en la carpeta de images
pero ¿cómo es que mi .swf estaba "protegido"?
Después, decidí cambiar /resources/*
a /resources/**
y finalmente funcionó. Mi pregunta es ... ¿por qué?
Este es un patrón de ruta que se utilizó en Apache ant
equipo de primavera lo implementó y lo utilizó en todo el marco.
Como referencia, vea javadoc de AntPathMatcher (el newest javadoc parece tener un problema, así que enlace uno antiguo).
De regreso a su 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 ruta
- Un asterisco
(''*'')
coincide con cero o más caracteres, hasta la aparición de un carácter''/''
(que sirve como un separador de ruta). Una cadena, como"/abcd/docs/index.html"
, no coincidiría correctamente con el patrón''/*/*.index.html''
. El primer asterisco coincide solo con el primer separador de ruta, lo que da como resultado la cadena"abcd"
. Un patrón de coincidencia exitoso sería''/*/*/*.html''
. - Una cadena que contiene dos asteriscos
(''**'')
coincide con cero o más caracteres. Esto podría incluir el separador de ruta''/''
. En este caso,"/abcd/docs/index.html"
coincidiría correctamente con el patrón''/**/*.html''
. El asterisco doble, incluido el separador de ruta, coincidiría con la cadena "abcd / docs".
Espero que ayude !