Спецификация Java Server Pages 1.2

JSP.7.1.2.1 Обработчики Тэгов


Семантика специфики специальной акции в библиотеке тэгов описывается через класс обработчика тэга, который обычно инстанциируется на этапе прогона классом реализации JSP-страницы.


Если библиотека тэгов известна JSP-контейнеру (), это контейнер может использовать альтернативные реализации, пока семантика сохраняется.


Обработчик тэга это класс Java, реализующий интерфейс Tag, IterationTag или BodyTag и являющийся представлением специальной акции на этапе прогона.


Класс реализации JSP-страницы инстанциирует класс обработчика тэга или использует существующий объект обработчика тэга для каждой акции на JSP-странице. Объект обработчика это Java-объект, реализующий интерфейс javax.servlet.jsp.tagext.Tag. Объект обработчика отвечает за взаимодействие JSP-страницы и дополнительных серверных объектов/server-side objects.


Существуют три главных интерфейса: Tag, IterationTag и BodyTa.

  • Интерфейс Tag определяет базовые методы, необходимые всем обработчикам тэгов. Это методы setter для инициализации обработчика тэга, в контексте данных и значений атрибутов акции, и методы doStartTag() и doEndTag().
  • Интерфейс IterationTag является расширением Tag'а, предоставляя дополнительный метод doAfterBody(), вызываемый для повторного обсчёта тела тэга.
  • Интерфейс BodyTag является расширением IterationTag'а с двумя новыми методами для обработчика тэга для манипулирования телом тэга: setBodyContent() передаёт буфер, объект BodyContent, а doInitBody() даёт возможность обработки буфера до первого обсчёта тела в буфере.

Использование интерфейсов упрощает создание обработчика тэга из существующего Java-объекта.

Имеются также два класса поддержки, которые могут использоваться в качестве базовых классов: TagSupport и BodyTagSupport.


В JSP 1.2 имеется новый интерфейс, помогающий поддерживать целостность данных и обслуживать ресурсы при возникновении исключительных ситуаций.

Интерфейс TryCatchFinally может добавляться в класс, реализующий любой интерфейс: Tag, IterationTag или BodyTag.



Содержание раздела