Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 430

Ильдар Шаукатович Хабибуллин

Второй, необязательный, атрибут

flush="true или false"

указывает, очищать ли выходной буфер перед включением ресурса. Его значение по умолчанию "false".

Вторая форма элемента, include, содержит теги <jsp:param> в теле элемента (обратите внимание на отсутствие наклонной черты в конце открывающего тега):

<jsp:include Атрибуты >

Здесь записываются теги вида <jsp:param>

</jsp:include>

В теле элемента можно записывать произвольные параметры. Они имеют вид

<jsp:param name="имя■ параметра"

value="значение параметра или выражение JSP" />

"Выражение JSP" записывается так же, как и в заголовке тега. Параметры передаются включаемому ресурсу как его начальные параметры, и их имена, разумеется, должны совпадать с именами начальных параметров ресурса.

Включаемый JSP-файл может быть оформлен не полностью, а содержать только отдельный фрагмент кода JSP. В таком случае его имя записывают обычно с расширением jspf (JSP Fragment).

Следующий стандартный тег <jsp:element> позволяет динамически определить какой-нибудь элемент XML. У него один обязательный атрибут name — имя создаваемого элемента XML. В его теле можно определить атрибуты создаваемого элемента XML с помощью элемента <jsp:attribute> и тело создаваемого элемента XML с помощью элемента <j sp:body>. Например:

<jsp:element name="${myElem}"

xmlns:j sp="">

<j sp:attribute name="lang">${content.lang}</j sp:attribute>

<j sp:body>${content.body}</jsp:body>

</jsp:element>

Еще один простой стандартный тег <jsp:text> не содержит атрибутов. Его тело без всяких изменений передается в выходной поток. Например:

<j sp:text>

while(k < 10) {a[k]++; b[k++] = $1;}

</jsp:text>

Вы, наверное, заметили, что теги JSP не создают никакого кода инициализации сервлета, того, что обычно записывается в метод init() сервлета. Такой код при необходимости как-то инициализировать полученный после компиляции сервлет надо записать в метод j spInit () по следующей схеме:

<j sp:declaration>

public void jspInit(){

// Записываем код инициализации

}

</jsp:declaration>

Аналогично, завершающие действия сервлета можно записать в метод jspDestroy() по такой схеме:

<j sp:declaration>

public void jspDestroy(){

// Записываем код завершения

}

</jsp:declaration>

Язык записи выражений EL

Хотя на странице JSP можно записать любое выражение языка Java в теге <%=.. .%> или в элементе XML <jsp:expression>...</jsp:expression>, в JSP, начиная с версии 2.0, введен язык EL (Expression Language), предназначенный для записи выражений. Язык JSP EL появился в русле тенденции к изгнанию со страниц JSP чужеродного кода и замены его своими "родными" конструкциями.

В языке JSP EL выражения окружаются символами ${...}, например ${2 + 2}. Это окружение дает сигнал к вычислению заключенного в них выражения. Выражение, записанное без этих символов, не будет вычисляться и воспримется как простой набор символов.