Я делаю некоторые основные шаблоны в моем JSP-based webapp. Например, я хочу иметь стандартный верхний и нижний колонтитулы (базовый HTML), которые я втягиваю в каждый из моих JSP.JSP включить директиву, jsp: включить действие, относительные против абсолютных путей
Мое содержание JSP находится в /WEB-INF/jsp/home.jsp
, и у меня есть шаблон JSPs на /WEB-INF/jsp/template/
, например /WEB-INF/jsp/template/Body-Footer.jsp
.
Так что теперь, в пределах home.jsp
, я хочу вытащить файлы своих шаблонов. Во-первых, я стараюсь jsp:include
действие:
<jsp:include page="template/Body-Footer.jsp"></jsp:include>
Он генерирует ошибку javax.servlet.ServletException: File "/template/Body-Footer.jsp" not found
странным, учитывая, что Eclipse, говорит, что путь является действительным.
Ладно, тогда я переключаюсь директивы включают:
<%@ include file="template/Body-Footer.jsp" %>
Это работает просто отлично, тянет в моем колонтитуле HTML.
Но почему jsp:include
не работает? После нескольких экспериментов я обнаружил, что положить в абсолютном пути действительно заставить его работать:
<jsp:include page="/WEB-INF/jsp/template/Body-Footer.jsp"></jsp:include>
Сейчас он работает отлично, без ошибок.
Итак, вот мой вопрос: почему? Почему я (по-видимому) должен использовать абсолютный путь с действием jsp:include
, но не с директивой include?
Возможно, вы захотите начать [здесь] (http://stackoverflow.com/questions/7879906/what-is-the-difference-between-jspinclude-page-and-include-file). –