
3к6с Современные технологии интернет-программирования / Лекции / JSP - Пользовательские тэги
.pdf
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