Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
27.11.2024
Размер:
390.91 Кб
Скачать

Java Server Pages

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

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

Наличие пользовательских тэгов позволяет

организовать работу так, чтобы дизайнеры и программисты могли решать свои задачи

независимо друг от друга. При этом

дизайнеры ориентируются на

использование HTML и JSP тэгов а программисты сосредоточивают свое

внимание на реализации низкоуровневых

средств, например, для организации

доступа к БД, доступные для дизайнеров в

виде пользовательских тэгов.

2

Создание пользовательских тэгов

Для создания пользовательского тэга

необходимо создать Java-класс поддержки тэга, реализующий интерфейс:

javax.servlet.jsp.tagext.Tag

Интерфейс содержит 6 методов:

public void setPageContext(PageContext pc); public void setParent(Tag t);

public Tag getParent(); public int doStartTag(); public int doEndTag(); public void release();

Наиболее важными являются три последних 3

Создание пользовательских тэгов

Методы doStartTag и doEndTag вызываются

соответственно при встрече открывающего и закрывающего тэга. Методы возвращает

целочисленное значение - константы,

определенные в интерфейсе Tag.

Возвращаемое значение задает поведение контейнера сервлетов после завершения

метода.

Последним вызывается метод release,

который должен освободить ресурсы,

которые использовались классом

4

поддержки тэга.

Константы интерфейса Tag

В методе doStartTag ()

SKIP_BODY; тело тэга не обрабатывается

EVAL_BODY_INCLUDE; тело тэга

передается без изменений В методе doEndTag ()

SKIP_PAGE: часть документа, следующая за закрывающим тэгом, не обрабатывается

EVAL_PAGE: часть документа, следующая

за закрывающим тэгом, обрабатывается

5

Родительские тэги

Для каждого тэга определен родительский

тэг (null для тэга верхнего уровня). Тэг <one> не имеет родительского, но

является родительским по отношению к

тэгу <two>. Аналогично тэг <two> является

родителем для тэга <three>.

<one>

<two>

<three>

</three>

</two>

</one>

6

Родительские тэги

Интерфейс Tag предоставляет доступ к

родительскому дескриптору, с помощью методов setParent() и getParent() но set-

метод, также как и метод setPageContext()

предназначен для контейнера сервлетов,

и при создании пользовательских тэгов использовать его не следует.

7

Классы реализации пользовательских тэгов

Обычно разработчики не реализуют напрямую

интерфейс Tag, а наследуются от классов, которые уже реализовали интерфейс:

TagSupport, SimpleTagSupport или

BodyTagSupport.

При использовании подклассов классов

TagSupport или SimpleTagSupport тело тэга

либо игнорируется, либо передается без

изменений.

Подклассы BodyTagSupport используются для

обработки тела тэга.

8

Создание тэга

Чтобы создать пользовательский тэг

необходимо:

1.Создать TLD(tag library discriptor)-файл

2.Создать java-класс обработчик (Handler) тэга или тэг-файл с использованием JSP-

синтаксиса

3.Связать файл-обработчик или тэг-файл с

TLD-файлом (включить в библиотеку).

9

1. Создание TLD-файла

TLD-файл представляет собой XML-

документ, содержащий информацию о тэгах и соответствующим им обработчикам

добавленных в данный файл (библиотеку).

Обычно создается с использованием IDE,

но может быть создан и вручную

10