mvc form espaƱol docs spring web resources url-pattern

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:

  1. ? coincide con un personaje
  2. * coincide con cero o más caracteres
  3. ** 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 !