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

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

Ресурсу можно передать один или несколько параметров в теле элемента:

<jsp:forward page="адрес URL относительно контекста" >

<jsp:param name="имя■" value="значение или выражение JSP" />

</jsp:forward>

Пользовательские теги

Разработчик страниц JSP может расширить набор стандартных действий (тегов) JSP, создав свои собственные, как говорят, пользовательские теги (custom tags). Пользовательские теги организуются в виде целой библиотеки, даже если в нее входит только один тег. Описание каждой библиотеки хранится в отдельном XML-файле с расширением tld, называемым описателем библиотеки тегов TLD (Tag Library Descriptor). Этот файл хранится в каталоге WEB-INF данного Web-приложения или в его подкаталоге. Если Web-приложение упаковано в JAR-архив, то TLD-файлы, описывающие библиотеки пользовательских тегов этого приложения, находятся в каталоге META-INF архива.

В листинге 27.4 приведен пример простого TLD-файла, описывающего библиотеку пользовательских тегов с одним тегом head, реализуемым классом HeadTag. Полное объяснение использованных в нем элементов XML вы получите в следующей главе.

Листинг 27.4. Описатель TLD библиотеки тегов

<taglib xmlns=" 2ee"

xmlns:xsi="" xsi:schemaLocation=

" web-jsptaglibrary 2 0.xsd" version="2.0">

<tlib-version>1.0</tlib-version>

<short-name></short-name>

<uri>/sdo</uri>

<tag>

<name>head</name>

<tag-class>sdotags.HeadTag</tag-class>

<body-content>JSP</body-content>

<attribute>

<name>size</name>

<required>false</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

</taglib>

На странице JSP перед применением пользовательских тегов следует сослаться на библиотеку тегом

<%@ taglib uri="адрес URI библиотеки"

prefix="префикс тегов библиотеки" %>

Например, если на странице JSP написан тег

<%@ taglib uri="/WEB-INF/sdotaglib.tld" prefix="sdo" %>

то на ней можно использовать теги вида <sdo: head />.

У этого тега нет прямого XML-эквивалента. Префикс тегов библиотеки и ее адрес определяются в форме XML как пространство имен атрибутом xmlns в элементе <j sp: root>. Например, библиотека с префиксом тегов sdo и адресом /WEB-INF/sdotaglib.tld описывается так:

<j sp:root

xmlns:j sp="" xmlns:sdo="/WEB-INF/sdotaglib.tld" version="2.0"

>

Страница JSP </jsp:root>

Необязательный элемент <jsp:root>, если он присутствует, должен быть корневым элементом документа XML.

Как видите, к каждой странице JSP всегда подключается библиотека с префиксом тегов jsp. Стандартные (core) действия JSP входят в эту библиотеку. Префиксы jsp, jspx, java, j avax, servlet, sun, sunw зарезервированы корпорацией Sun Microsystems, их нельзя употреблять в библиотеках пользовательских тегов.

В конфигурационном файле web.xml можно создать псевдонимы адреса URI библиотеки с помощью элемента <taglib>, например: