2012-05-08 20 views
7

Czy można rozpoznać standardowy kontener serwletu Java EE, aby zinterpretować i wyrenderować plik jako plik JSP, nawet jeśli nie ma on rozszerzenia .jsp?Czy można renderować plik bez rozszerzenia .jsp jako strony JSP?

Powiedzmy, że mam plik o nazwie foo.xyz w katalogu głównym mojego WAR. Ten plik zawiera logikę jstl, jakiej można oczekiwać w pliku .jsp. Jeśli poprosię o numer http://myserver/myapp/foo.xyz, zobaczę literalny kod z tego pliku wyrenderowanego jako tekst. Czy istnieje sposób na skonfigurowanie aplikacji internetowej tak, aby renderowała plik za pomocą interpretera JSP bez zmiany rozszerzenia pliku?

Proszę nie pytać, dlaczego chciałbym to zrobić. Ograniczenia są skomplikowane.

Odpowiedz

5

Dodaj mapowanie serwletu JSP dla tego wzorca adresu URL do swojej aplikacji internetowej web.xml.

<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.xyz</url-pattern> 
</servlet-mapping> 

Zauważ, że ten zakłada, że ​​servletcontainer własny aplet JSP jest zarejestrowany pod nazwą servlet z jsp która jest de facto standardem nazwa aplet z serwletu JSP. Sprawdź wpis <servlet> wewnątrz własnego pliku servletcontainer o numerze web.xml. W przypadku na przykład Tomcat, jest to plik /conf/web.xml w folderze instalacyjnym.

+0

To rozwiązanie działa na serwerze Tomcat, ale nie na serwerze Websphere. Myślę, że to hack, a nie * de facto standard *. – LaurentG

+0

@ LaurentG: odpowiedź już to omówiła. Po prostu użyj tego samego '' jak sama Websphere. – BalusC

+0

Odkąd pracuję z Tomcat i wdrażam na Websphere, myślę, że najbardziej ogólne rozwiązanie, które zaproponowałem, jest lepsze (nie chcę zarządzać dwoma web.xml). Ale w przypadku najczęstszych przypadków Twoje rozwiązanie działa również dobrze. – LaurentG

8

Możesz dodać następującą konfigurację w web.xml aby pliki kończące się .xyz beeing przetwarzane jako JSP:

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.xyz</url-pattern> 
    </jsp-property-group> 
</jsp-config> 

Rozwiązanie współpracuje z Tomcat i WebSphere. I prawdopodobnie z dowolnym kontenerem serwera zgodnym z JEE.

Powiązane problemy