Почему tomcat включает фрагменты *.jspf в виде статического текста, а Jetty обрабатывает их динамически?
Я разрабатывал свой игрушечный проект, используя плагин Jetty Maven и выполняя цель jetty:run
, Теперь я решил проверить, как это работает на Tomcat.
У меня есть два фрагмента JSPF: header.jspf
а также footer.jspf
Внутри WEB-INF/jspf/
содержащий общий код для всех моих страниц JSP. Я включаю такие фрагменты:
<jsp:include page="WEB-INF/jspf/header.jspf" flush="true">
<jsp:param name="pageTitle" value="Customer registration"/>
</jsp:include>
Jetty обрабатывал их как динамические фрагменты, а tomcat обрабатывал их как статический текст, поэтому я вижу:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
в начале веб-страницы в моем браузере. Проблема с tomcat была легко решена путем переименования: *.jspf в *.jsp. Вопрос в том, почему разные контейнеры сервлетов действуют по-разному? Я выполнил тесты на Tomcat 8/9 и пристани 9.3.7.
1 ответ
Добавьте новое расширение файла в файл mywebapp/WEB-INF/web.xml. Почему Tomcat не делает это по умолчанию, я не знаю. Значения по умолчанию находятся в файле conf/web.xml, вы также можете его редактировать. Другой механизм сервлетов может использовать другое имя сервлета, так что это решение Tomcat only.
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspf</url-pattern>
</servlet-mapping>