2011-01-25 7 views
5

Opracowanie na ten temat:Czy można zmapować Servlet/* bez przesłanianie przetwarzanie JSP

I mapować serwletu lub filtr do "/ *"

Teraz, jeśli mam dostępu do adresu URL, takich jak:

/test 

Wtedy to będą kierowane do serwletu (co jest w porządku)

Ale jeśli mam dostępu do adresu URL, takich jak:

/index.jsp 

Zostanie również skierowany do serwletu, nie chcę tego zachowania, chcę, aby plik index.jsp był przetwarzany jako jsp.

Jak można tego dokonać?

+0

Tak, ale najlepszy sposób na zrobienie tego zależy od tego, z jakiego serwera i frameworka korzystasz. – OrangeDog

Odpowiedz

3

Mapa kontroler servlet na bardziej szczegółowym url-pattern jak /controller/* i stworzyć Filter który jest odwzorowany na /* i robi mniej więcej jak następuje w doFilter() metody.

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

Najbliższa odpowiedź. Ale czy wywołanie w przód nie przerwałoby łańcucha filtrów? Jak można to załatwić. –

+0

Dalej będą wywoływane filtry z ' FORWARD'. – BalusC

+0

Po prostu próbowałem, nadal ma wiele problemów. Pliki * .css są traktowane jako nie jsp, a zatem występują błędy. Nie sądzę, bym go użył, ale miło wiedzieć. –

Powiązane problemy