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 !