JSP.4.4 <jsp:include>
Элемент <jsp:include .../> предоставляется для включения статических и динамических ресурсов в тот же контекст, что и у текущей страницы. См. в резюме по облегчению включения.
Включение производится в текущее значение out/вывода. Этот ресурс специфицирован путём использования relativeURLspec/спецификации относительного URI, которая интерпретируется в контексте web-сервера (т.е. она отображается/mapped).
Атрибуты page акций jsp:include и jsp:forward интерпретируются относительно текущей JSP-страницы, поскольку атрибут file в директиве include интерпретируется относительно текущего JSP-файла. См. ниже примеры таких комбинаций.
Включаемая страница имеет доступ только к объекту JspWriter и не может устанавливать шапки/headers. Это предотвращает вызов методов, подобных setCookie(). Попытки вызова таких методов будут игнорироваться. Это ограничение эквивалентно ограничению, вводимому методом include() класса RequestDispatcher.
Акция jsp:include может иметь субэлементы jsp:param, которые могут предоставлять значения некоторым параметрам в запросе для использования в процессе включения.
Процессинг запроса продолжается вызовом JSP-страницы, после того как включение выполнено.
Атрибут flush управляет очисткой. Если он true, тогда, если вывод страницы буферизуется и атрибут flush получает значение ’true’, буфет очищается до включения, в ином случае буфер не очищается. По умолчанию атрибут flush имеет значение ’false’.
Примеры
<jsp:include page=”/templates/copyright.html”/>
Вышеприведённый пример - это простое включение объекта. Путь интерпретируется в контексте Web-Приложения. Это похоже на static/статичный объект, но он может также отображаться в, например, Servlet посредством web.xml.
Например, в качестве более сложного набора включений рассмотрим следующие 4 ситуации, построенные с использованием 4 JSP-файлов: A.jsp, C.jsp, dir/B.jsp и dir/C.jsp:
- A.jsp говорит <%@ include file=”dir/B.jsp”%>, а dir/B.jsp говорит <%@ include file=”C.jsp”%>.
В данном случае относительная спецификация “C.jsp” разрешается в “dir/C.jsp”. - A.jsp говорит <jsp:include page=”dir/B.jsp”/>, а dir/B.jsp говорит <jsp:include page=”C.jsp” />.
В данном случае относительная спецификация “C.jsp” разрешается в “dir/C.jsp”. - A.jsp говорит <jsp:include page=”dir/B.jsp”/>, а dir/B.jsp говорит <%@ include file=”C.jsp” %>.
В данном случае относительная спецификация “C.jsp” разрешается в “dir/C.jsp”. - A.jsp говорит <%@ include file=”dir/B.jsp”%>, а dir/B.jsp говорит <jsp:include page=”C.jsp”/>.
В данном случае относительная спецификация “C.jsp” разрешается в “C.jsp”.
Синтаксис
<jsp:include page=”urlSpec” flush="true|false"/>
и
<jsp:include page=”urlSpec” flush="true|false">
{ <jsp:<code></code> .... /> }*
</jsp:include>
В первом примере синтаксиса выполняется включение на этапе запроса.
Во втором случае значения в субэлементах param используются для увеличения запроса с целью включения.
Верными атрибутами являются:
Таблица JSP.4-4
page | Этот URL является относительным urlSpec, как указано в . Относительные пути интерпретируются относительно текущей JSP-страницы. Принимает атрибут времени запроса value (который обязан вычисляться до String, которая является спецификацией относительного URL). |
flush | Необязательный булев атрибут. Если “true”, буфер немедленно очищается. По умолчанию - “false”. |