Спецификация Java Server Pages 1.2

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”.

Содержание раздела