Концепция: Пользовательский тег JSP
Этот раздел содержит технический обзор пользовательских тегов, механизма расширения API JSP.
Взаимосвязи
Связанные элементы
Основное описание

Введение

Пользовательские теги - это механизм расширения API JSP. Пользовательские теги позволяют декларативно расширять страницы JSP. Теги JSP реализуются в Java, но активируются в JSP посредством тегов, схожих с тегами HTML. Однако, в отличие от тегов HTML, теги JSP обрабатываются сервером, а не браузером клиента.

Пользовательские теги позволяют четко разграничить зоны ответственности между проектировщиками Web (разработчиками JSP) и программистами на Java. Программисты на Java реализуют пользовательские теги JSP. Проектировщики Web выбирают эти теги декларативно для активации реализации Java.

Проектировщик JSP "вызывает" код Java путем объявления тегов, а разработчик кода на Java создает код в обработчиках тегов, как показано на следующей диаграмме.

Диаграмма описана в прилагаемом тексте.

Для создания пользовательского тега разработчик кода на Java должен предоставить два объекта:

Обработчик тегов

Обработчик тегов - это класс, реализующий интерфейс Tag. Два библиотечных класса обеспечивают простое создание обработчиков тегов. Это классы javax.servlet.jsp.TagSupport и javax.servlet.jsp.BodyTagSupport. Класс TagSupport применяется для тегов без тела, класс BodyTagSupport - для тегов с телом.

Ниже приведен пример простейшей возможной реализации обработчика тегов.

Диаграмма описана в прилагаемом тексте.

Дескриптор библиотеки тегов

Для того чтобы страница JSP могла использовать пользовательские теги JSP, необходимо создать дескриптор библиотеки тегов. Это файл XML, развертываемый на Web-сервере вместе с обработчиками тегов.

Ниже приведен пример простого файла библиотеки тегов, содержащего дескриптор библиотеки тегов HelloWorld.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLScheme-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>simp</short-name>
<uri> http://www.inferdata.com/taglib/hello-world</uri>
<description>Простой пример пользовательского тега JSP</description>
<tag>
<name>hello</name>
<tag-class>com.inferdata.taglib.HelloWorld</tag-class>
<body-content>empty</body-content>
<description>Простой тег Hello world</description>
</tag>
</taglib>