JSP - создавать пользовательские теги
Теги JSP выступает в качестве плагина к вашему JSP страниц. Это в основном классов Java, которые получают выполняется, когда JSP-страницы получить предоставляемых сервером и браузером. JSP входит в строй как JSP Теги: включить, JSP: вперед, но они не являются достаточными для удовлетворения веб мире. Для решения этой проблемы вы можете создавать теги, основанные на бизнес-требованиям. Эта статья поможет вам, как мы можем создавать пользовательские теги для JSP.
JSP пользовательские теги:
Все пользовательские теги JSP тегов реализует интерфейс. Чтобы узнать более подробную информацию о тегов интерфейса относятся к JSP Custom Tag интерфейс . Но мы не напрямую использовать тег интерфейса Вместо этого мы используем TagSupport и BodyTagSupport, это потому, что некоторые умолчанию реализации тегов интерфейс уже реализован в TagSupport BodyTagSupport и так становится легче писать собственный код тега.
Разница между TagSupport и BodyTagSupport:
В TagSupport мы определим все атрибуты, необходимые для отображения данных, где, как в BodyTagSupport перейдем атрибуты и тело содержимого JSP-тегов. BodyTagSupport не часто используется, если вы хотите управлять содержимого тела. Переходя атрибуты пользовательских тегов не является обязательным.
Пример TagSupport:
<test /> :showTime Пример BodyTagSupport:
<test> :showTime Текущее время: </> Тест
Если Вы видите в BodyTagSupport перейдем некоторые тела содержимое XML-тегов. Хотя тело содержания не является обязательным, но это будет ухудшать производительность, если вы не используете для вашего тела пользовательские теги и вы не используете TagSupport.
Важные функции в Call JSP Таможенный кодекс тегов:
doStartTag ():
Эта функция вызывается, когда JSP-теги получить инициализации. Эта функция целое значение, которое уже определено в тегов интерфейс в виде имени переменной. Мы обычно возвращают SKIP_BODY. SKIP_BODY рассказывает JSP двигателя, чтобы пропустить теле JSP-теги.
doEndTag ():
Эта функция вызывается сразу после doStartTag () функцию обработки делается. Как и в doStartTag () эта функция также возвращает целое значение. Обычно мы вернемся EVAL_BODY. EVAL_BODY рассказывает JSP двигателя обработки оставшихся код JSP.
Простые Таможенный кодекс тегов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ; пакет com.hiteshagrawal; ; импорт java.io. *; ; импорт javax.servlet.jsp .*; ; импорт javax.servlet.jsp.tagext.TagSupport; TagSupport { общественного класса испытаний распространяется TagSupport ( doStartTag ( ) throws JspException { общественного Int doStartTag () (бросает JspException попробуйте ( ( ) ; JspWriter из = pageContext. Джтаут (); "This is my first tag!" ) ; вне. печати ("Это мой первый тэг"); ( IOException ioe ) { ) Поймать (IOException МОР) ( ; МОР. printStackTrace (); "IOException while writing data to page" + ioe. getMessage ( ) ) ; проливают новый JspException ("IOException при записи данных на страницу" + МОР. GetMessage ()); ) возвращение SKIP_BODY; ) doEndTag ( ) throws JspException { общественного Int doEndTag () (бросает JspException возвращение EVAL_PAGE; ) ) |
Кодекс Пояснение:
- Класс распространяется TagSupport указанием мы не используем BodyTagSupport класса.
- doStartTag () Функция записывает содержимое строки, используя pageContext.getOut (), это формирует вывод, что получите, написанный на ваш JSP-страницы.
- doStartTag () Функция возвращает SKIP_BODY. Значение этой переменной уже определены в тегов интерфейс.
- doEndTag () Функция возвращает EVAL_PAGE. Значение этой переменной уже определены в тегов интерфейс.
Реализация JSP Tag кода Java в JSP:
Теперь нашим следующим шагом будет создание тегов Дескриптор библиотеки (TLD) файл. Он сообщает о JSP двигателя JSP Custom Tag, которая поможет использовать внутри JSP кодекса.
= "ISO-8859-1" ?> <? XML-версия = "1,0" кодировка = "ISO-8859-1"?> <! DOCTYPE TagLib PUBLIC "- / / Sun Microsystems, Inc / / DTD JSP Tag Library 1.2 / / EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> 1.0 </tlib > <tlib -version> 1,0 </ tlib> 1.2 </jsp > <jsp -version> 1,2 </> JSP test </short > <short тест> <-name / краткое> <тэг> <имя> TestingTag </> имя <tagclass> com.hiteshagrawal.Test </> tagclass <bodycontent> пустой </ bodycontent> </ Тэг> </ TagLib>
Если вы видите, я определил для файла TLD выше код JSP написано. Ваша система пользовательского JSP Tag должен быть написан внутри "тэг" элемент. Позвольте мне explaing письменного XML-файла:
- tlib-версия - Как следует из названия предложить это относится к Tag Library версия
- JSP-версия - Относится к версии JSP вы используете
- краткое имя - Имеются в виду имя JSP Custom Tag, что ваши JSP-код будет ссылкой на
- имя - ссылается на имя пользовательских тегов
- tagclass - Refersn к классу структура, используемая для JSP Метки
- bodycontent - используется в случае мы используем BodyTagSupport в TagSupport мы продолжаем эту пустую
Сохранить файл TLD по названию test.tld в папке WEB-INF.
TLD номер файла в JSP страницу:
Есть несколько способов refererence TLD файл в JSP и я обсуждали один из них в этой статье.
JSP Реализация пользовательских тегов JSP:
"test" uri = "/WEB-INF/test.tld" %> <% @ TagLib префикс = "тест" URI = "/ WEB-INF/test.tld"%> <HTML> <Головы> JSP Custom Tag Demo </ title > <Название> JSP Custom Tag Демо </> название </> Голову <Тело> TestingTag /> <Тест: TestingTag /> </> Тела </ HTML>
JSP кодекса Пояснение:
Если вы видите, я делаю ссылку на TagLib которая будет вызвана по имени "испытание". Кроме того, я передаю путь TLD файл будет в виду.
В заключение я призываю Custom Tag как показано в строке №: 7
JSP Вывод:
Когда мы выполнили выше код JSP, мы получим следующий результат.
Это мой первый теги! 


































На самом деле самый простой способ их реализации используются теги файлов. IWebMvc интенсивно использует метки, которые были созданы из файлов и / или классы. Посмотрите, если интересует то, "реальном мире" примеров.
См. также Coldtags комплекте: http://www.servletsuite.com/jsp.htm
Это крупнейший набор пользовательских тегов JSP через сеть.
Хороший учебник.
Nice учебник, легко понять. Спасибо за то же самое.