2011-01-25 9 views
5

Sviluppando questo:E 'possibile mappare un servlet per/* senza sostituire l'elaborazione JSP

traccio una servlet o un filtro a "/ *"

Ora, se io accedere a un URL del tipo:

/test 

Allora questo sarà diretto al servlet (che va bene)

Ma se ho accedere a un URL del tipo:

/index.jsp 

Questo sarà diretto anche al servlet, non voglio questo comportamento, quello che voglio è che index.jsp sia elaborato come jsp.

Come si può fare?

+0

Sì, ma il modo migliore per farlo dipende da quale server e framework si sta utilizzando. – OrangeDog

risposta

3

Mappa tua servlet controller su una più specifica url-pattern come /controller/* e creare un Filter che viene mappato su /* e fa più o meno come segue doFilter() metodo.

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 risposta più vicina. Ma la chiamata in avanti non spezzerebbe la catena del filtro? Come può essere gestito. –

+0

L'inoltro chiamerà i filtri con ' FORWARD'. – BalusC

+0

L'ho appena provato, ha ancora molti problemi. I file * .css vengono trattati non jsp e quindi si verificano errori. Non penso che lo userò, ma è bello saperlo. –

Problemi correlati