2011-01-25 5 views
5

Abundando en esto:¿Es posible trazar un servlet a/* sin anular el procesamiento JSP

asigno un servlet o filtro a "/ *"

Ahora, si puedo acceder a una URL como:

/test 

entonces esto va a ser dirigida al servlet (que está bien)

Pero si tengo acceso a una URL como:

/index.jsp 

Esto se dirigirá también al servlet, no quiero este comportamiento, lo que quiero es que index.jsp se procese como jsp.

¿Cómo se puede hacer esto?

+0

Sí, pero la mejor manera de hacerlo depende de qué servidor y marcos está utilizando. – OrangeDog

Respuesta

3

Mapa servlet controlador en una más específica url-pattern como /controller/* y crear un Filter que está mapeado en /* y hace más o menos como sigue en doFilter() método.

String uri = ((HttpServletRequest) request).getRequestURI(); 
if (uri.endsWith(".jsp")) { 
    chain.doFilter(request, response); // Just let it go. The container's builtin JspServlet will pickup this. 
} else { 
    request.getRequestDispatcher("/controller" + uri).forward(request, response); // Goes to controller servlet. 
} 
+0

La respuesta más cercana. Pero, ¿la llamada directa no rompería la cadena de filtros? ¿Cómo se puede manejar esto? –

+0

El reenvío llamará a los filtros con ' ADELANTE' también. – BalusC

+0

Acabo de probarlo, todavía tiene muchos problemas. Los archivos * .css se tratan sin jsp y, por lo tanto, se producen errores. No creo que lo use, pero es bueno saberlo. –

Cuestiones relacionadas