2012-05-08 1 views
7

Можно ли указать стандартный контейнер сервлетов Java EE для интерпретации и рендеринга файла как JSP, даже если он не имеет расширения .jsp?Можете ли вы сделать файл без расширения .jsp как JSP?

Скажем, у меня есть файл foo.xyz в корневом каталоге моей WAR. Этот файл содержит некоторую логику jstl, как и ожидалось в файле .jsp. Если я запрошу http://myserver/myapp/foo.xyz, я собираюсь увидеть буквальный код из этого файла, представленного как текст. Есть ли способ настроить веб-приложение таким образом, чтобы он отображал файл с использованием JSP-интерпретатора без изменения расширения файлов?

Пожалуйста, не спрашивайте, почему я хотел бы это сделать. Сложности сложны.

ответ

5

Добавить JSP-сервлет, сопоставляющий этот шаблон URL-адреса, с вашимвашего webapp.

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

Обратите внимание, что это предполагает, что собственные JSP сервлет servletcontainer является зарегистрирован с именем сервлета jsp, который является стандартом де-факто имя сервлета сервлета JSP. Подтвердите запись <servlet> внутри собственного сервлетконтейнера web.xml. В случае, например, Tomcat, это файл /conf/web.xml в его установочной папке.

+0

Это решение работает на Tomcat, но не на Websphere. Я думаю, что это взломать, а не стандарт де-факто *. – LaurentG

+0

@LaurentG: ответ уже рассмотрел это. Просто используйте одно и то же '<имя сервлета>', которое использует сама Websphere. – BalusC

+0

Поскольку я разрабатываю Tomcat и развертываю на Websphere, я думаю, что наиболее общее решение, которое я предложил, лучше (я не хочу управлять двумя web.xml). Но для большинства распространенных случаев ваше решение работает хорошо. – LaurentG

8

Вы можете добавить следующую конфигурацию в вашем web.xml, чтобы файлы, оканчивающиеся .xyz неоспоримым обрабатывается как JSP:

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

Это решение работает с Tomcat и Websphere. И, вероятно, с любым контейнером сервера, совместимым с JEE.