2011-09-16 35 views
6

Necesito servir mi aplicación principal con el patrón url "/*" por lo que este patrón se corresponde con un servlet. El problema que estoy teniendo ahora es que todos los archivos css y las imágenes ubicadas en "/css/all.css", "/ images /", etc. están pasando por este Servlet, lo cual es indeseable. Quiero que se acceda directamente a estos archivos. ¿Cuál es la mejor manera de manejar esta situación?¿Cómo excluir/redirigir cierto patrón de URL en web.xml o en el módulo de servlet Guice?

Nota: Estoy utilizando el módulo Servlet de Guice para configurar los patrones.

Gracias!

+0

[. No creo que '/ *' es el patrón que desea comenzar con] (http://stackoverflow.com/q/7447885/399649) –

Respuesta

5

Necesitamos saber específicamente qué solicitudes deben enrutarse a su servlet, para que sepamos cómo codificar las reglas. No puedo decir si a) todas las solicitudes, excepto CSS e imágenes, deben enviarse a su servlet, o b) su servlet solo debe gestionar las solicitudes a un conjunto específico de carpetas/directorios. Es probable que desee hacer una de dos cosas:

excluir carpetas específicas:

^/(?!css|images).* 

o incluir carpetas específicas:

^/myservlet/.* 

debería cambiar esos * símbolos para + si, como se indicado en su pregunta anterior, desea requerir al menos un carácter después del / en el patrón.

+0

Gracias ! ¡Intenté usar filtro para lograr esto, pero esto es más elegante! – Mayumi

+2

Tenga en cuenta que esto solo se aplica a Guice, y no a la web.xml mencionada en el título de la pregunta. El web.xml 'url-pattern' solo tiene soporte para comodines simples de trazado y extensión:'/* 'y'. * ' – Kapep

0

Esto debería funcionar para usted:

Hacer todos sus recursos de imagen/css, etc pasan por el default servlet. Y hacer un mapeo:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.xml</url-pattern> 
    <url-pattern>*.html</url-pattern> 
    <url-pattern>*.png</url-pattern> 
    <url-pattern>*.jpg</url-pattern> 
    <url-pattern>*.gif</url-pattern> 
    <url-pattern>*.js</url-pattern> 
    <url-pattern>*.css</url-pattern> 
</servlet-mapping> 
Cuestiones relacionadas