Почему 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>
Другие вопросы по тегам