Можете ли вы отобразить файл без расширения .jsp как JSP?

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

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

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


person Mike Deck    schedule 08.05.2012    source источник


Ответы (2)


Добавьте сопоставление сервлета JSP с этим шаблоном URL-адреса в файл web.xml вашего веб-приложения.

<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 в папке установки.

person BalusC    schedule 08.05.2012
comment
Это решение работает на Tomcat, но не на Websphere. Я думаю, что это хак, а не стандарт де-факто. - person LaurentG; 19.02.2014
comment
@LaurentG: ответ уже касался этого. Просто используйте тот же <servlet-name>, что и сама Websphere. - person BalusC; 19.02.2014
comment
Поскольку я разрабатываю с Tomcat и развертываю в Websphere, я думаю, что наиболее общее решение, которое я предложил, лучше (я не хочу управлять двумя web.xml). Но для большинства распространенных случаев ваше решение тоже работает хорошо. - person LaurentG; 19.02.2014

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

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

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

person LaurentG    schedule 19.02.2014
comment
Ницца. Любая идея, как я мог бы сделать это, используя аннотации или какой-либо другой механизм вместо файла web.xml? До сих пор мне удавалось определять и настраивать сервлеты, используя новые аннотации сервлетов. - person Garret Wilson; 05.08.2018
comment
Чтобы ответить на мой собственный вопрос, я просмотрел спецификацию JSP, и web.xml кажется единственным местом, где можно указать конфигурацию JSP для контейнера. - person Garret Wilson; 12.12.2018