Spring MVC: cuidado con el Tag mvc:resources

La nueva versión de Sprign MVC (a partir de Spring MVC 3.0.4) incluye el tag <mvc:resources

Este tag permite servir las peticiones a URLs que contienen contenido estático (HTML, CSS, JS,…) a través de un Handler de una localización que no tiene que ser la propia aplicación Web.

Por ejemplo con esto:

<mvc:resources mapping="/resources/**" location="http://midominio.es/estatico/, /recursos/, classpath:/META-INF/public-web-resources/"/>

Cuando se haga una petición a /resources/images/logo.png Spring MVC lo buscará por orden en http://midominio.es/estatico/, luego en /recursos/ y luego en el classpath en classpath:/META-INF/public-web-resources/.

Aunque este funcionamiento es interesante puede no servir en muchos casos:

Por ejemplo si en nuestra infraestructura tenemos un Apache y luego un Tomcat y estamos entrando por el Apache la petición al Apache de http://midominio.es/resources/images/logo.png llegará a mi Tomcat y será este el que le pida al Apache el logo.

Para estos casos la única solución es usar el tag spring:url e indicar que el contexto es otro, de esta forma

<spring:url var="/resources/images " context="/estatico/" value="/images" />

Respuesta

  1. Tengo una duda con respecto a esto.
    Yo tengo un html con un img src = picture.png ( no lo puedo modificar)
    Pero tengo un problema, para que me aparezca la imagen tengo que ponner esto en el web.xml

    default
    *.png

    Sin embargo necesito redireccionar el pedido del img src = picture.png a img src = reportes/reporte/picture.png
    Como puedo hacerlo ?
    Recordemos que no puedo modoficiar el .html

Replica a Matias Cancelar la respuesta