Руководство по JSTL (стандартная библиотека тегов JSP): Core & Примеры пользовательских тегов

Содержание:

Anonim

JSTL - это стандартная библиотека тегов JSP. Здесь мы увидим, как использование разных тегов JSTL упростит кодирование JSP.

В этом руководстве вы узнаете:

  • Что такое JSTL
  • Ядро JSTL
  • Пользовательские теги JSP

Что такое JSTL?

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

Преимущества JSTL

  1. Стандартный тег : он обеспечивает богатый уровень переносимых функций страниц JSP. Разработчику легко понять код.
  2. Аккуратный и чистый код : поскольку сценарии сбивают разработчика с толку, использование JSTL делает код аккуратным и чистым.
  3. Автоматическая поддержка JavabeansInterospection : у него есть преимущество JSTL перед скриптлетами JSP. Язык выражений JSTL очень легко обрабатывает код JavaBean. Нам не нужно приводить к понижению значения объектов, которые были получены как атрибуты с заданной областью действия. Код сценариев JSP будет сложным, и JSTL упростил эту задачу.
  4. Людям легче читать : JSTL основан на XML, который очень похож на HTML. Следовательно, разработчикам это легко понять.
  5. Компьютерам легче понять : такие инструменты, как Dreamweaver и главная страница, генерируют все больше и больше HTML-кода. Инструменты HTML отлично справляются с форматированием HTML-кода. Код HTML смешан с кодом сценария. Поскольку JSTL выражается в виде тегов, совместимых с XML, при генерации HTML легко анализировать код JSTL в документе.

Ядро JSTL

Основные теги - это наиболее часто используемые теги в JSP. Они оказывают поддержку

  • Итерация
  • Условная логика
  • Поймать исключение
  • URL вперед
  • Перенаправление и т. Д.

Чтобы использовать основные теги, нам нужно сначала определить библиотеку тегов, а ниже приведен синтаксис для включения библиотеки тегов.

Синтаксис:

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Здесь,

  • префикс можно использовать для определения всех основных тегов и
  • uri - это библиотека taglib, из которой он импортируется

Давайте подробно рассмотрим некоторые из основных тегов,

1. Выход:

  • Результат выражения отображается в теге out
  • Он может напрямую экранировать теги XML. Следовательно, они не рассматриваются как фактические теги.

Синтаксис:

  • Здесь значение представляет информацию для вывода, и это обязательно
  • По умолчанию не выводится информация, и это не обязательно
  • escapeXML - верно, если экранирует символы XML.

Пример:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Основной тег JSP1 

Расшифровка кода:

Строка кода 3: этот префикс taglib требуется для всех тегов, а добавляемый префикс - 'c'. Следовательно, его можно использовать в качестве префикса для всех coretags.

Строка кода 12: Здесь мы используем coretag с префиксом «c», и этот out выведет значение в теге выражения. Следовательно, результат будет называться

Когда вы выполните приведенный выше код, вы получите следующий результат:

Выход:

  • Мы получаем значение в виде имени из основного тега out, которое будет печататься в потоке вывода.

2. Поймать

  • Он перехватывает любое генерируемое исключение, которое возникает в теле, и отображается как вывод.
  • Он используется для обработки ошибок и их обнаружения.

Синтаксис:

Здесь var представляет имя переменной, которая будет содержать генерируемое исключение.

Пример:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Основной тег JSP2 <% int num = 10/0; %>Исключение: $ {guruException}

Расшифровка кода:

Строка кода 3: этот префикс taglib требуется для всех тегов, а добавляемый префикс - 'c', поэтому его можно использовать как префикс для всех основных тегов.

Строка кода 11-13: Coretag catch используется для перехвата исключения и печати исключения. Здесь исключение возникает, когда 10/0, и это исключение имеет имя «guruException».

Строка кода 14: мы печатаем исключение guruException.

Когда вы выполните код, вы получите следующий результат:

Выход:

  • Мы получаем арифметическое исключение как / по нулю, и оно печатается в выводе с использованием переменной "guruException"

3. Импорт

  • Мы можем импортировать содержимое другого файла на страницу JSP, как мы это делали в действии JSP include.
  • Здесь мы также можем включить URL-адрес, и на этой странице будет отображаться содержимое.

Синтаксис:

Здесь var - имя переменной, которая является идентификатором, который будет содержать имя файла / uri.

uri - относительное имя файла или uriname.

coretag_jsp31.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Базовый тег JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Вставить заголовок здесь  Файл отображается после импорта 

Расшифровка кода:

Coretag_jsp31.jsp

Строка кода 3: этот префикс taglib требуется для всех тегов, а добавляемый префикс - 'c', поэтому его можно использовать как префикс для всех основных тегов.

Строка кода 11-12: Здесь мы импортируем файл coretag_jsp32.jsp в этот файл с помощью тега импорта.

Строка кода 13: Здесь мы печатаем файл coretag_jsp32.jsp, используя тег out.

Когда вы выполните приведенный выше код, вы получите следующий результат.

Выход:

  • Coretag_jsp32 печатается в выводе, поскольку этот файл был импортирован в coretag_jsp31.jsp.

4. forEach

  • Он используется для перебора количества элементов в серии операторов.
  • Это то же самое, что и forloop в Java.

Синтаксис:

  • Здесь var представляет имя переменной, которая будет содержать имя счетчика
  • Begin представляет начальное значение счетчика
  • Конец будет представлять его конечное значение

Пример:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Основной тег JSP4 

Расшифровка кода:

Строка кода 3: этот префикс taglib требуется для всех тегов, а добавляемый префикс - 'c', поэтому его можно использовать как префикс для всех основных тегов.

Строка кода 11-13: Здесь мы используем цикл «forEach», в котором имя переменной - «gurucount», в котором начальный счет равен 5, а конечный счет равен 10. Мы печатаем переменную gurucount с номерами от 5 до 10.

Когда вы выполняете код, вы получаете следующий результат

Выход:

  • Выходные данные, которые мы получаем, начинаются с 5 до 10.

5. Если

  • Он используется для условий тестирования.
  • Если тег используется для проверки условия, истинно оно или нет, на основании этого будет выполнен блок кода.

Синтаксис:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Основной тег JSP5 

Расшифровка кода:

Строка кода 3: этот префикс taglib требуется для всех тегов, а добавляемый префикс - 'c', поэтому его можно использовать как префикс для всех основных тегов.

Строка кода 11: здесь мы устанавливаем для переменной count значение 100.

Строка кода 12-14: Здесь мы используем «условие if», где мы проверяем, равно ли счетчик 100. Он равен 100, тогда мы получаем результат как «Счетчик равен 100».

Когда вы выполняете приведенный выше код, вы получаете следующий результат

Выход:

  • Поскольку условие «if» истинно, мы получаем результат как «Счетчик равен 100».

6. перенаправление:

  • Он используется для перенаправления текущей страницы на другой URL-адрес путем предоставления относительного URL-адреса этого тега.
  • Он поддерживает контекстно-относительные URL-адреса

Синтаксис:

Здесь URL-адрес - это относительный URL-адрес, на который он должен быть перенаправлен, и контекстное имя локального веб-приложения.

Пример:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Базовый тег JSP6 

Расшифровка кода:

Строка кода 3: этот префикс taglib требуется для всех тегов, а добавляемый префикс - 'c', поэтому его можно использовать как префикс для всех основных тегов.

Строка кода 11: Здесь мы используем «тег перенаправления», где мы указываем URL-адрес, и когда мы нажимаем на эту страницу, он перенаправляет на сайт, который был указан для перенаправления.

Когда вы выполняете приведенный выше код, вы получаете следующий результат:

Выход:

  • Мы получаем выходной URL-адрес guru99.com, который перенаправляется coretag_jsp6.jsp

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

  • Это определяемый пользователем языковой элемент JSP.
  • Когда JSP транслируется в сервлет, настраиваемый тег преобразуется в класс, который выполняет действие над объектом и вызывается как обработчик тега.
  • Эти действия при выполнении сервлета вызываются веб-контейнером.
  • Чтобы создать пользовательский настраиваемый тег, нам нужно создать обработчик тега, который будет расширять SimpleTagSupport и должен переопределить метод doTag ().
  • Нам нужно создать TLD, где нам нужно сопоставить файл класса в TLD.

Преимущества кастомных тегов в JSP:

  • Переносимость - действие, описанное в библиотеке тегов, должно быть использовано в любом контейнере JSP.
  • Просто - неискушенные пользователи должны уметь понимать и использовать этот механизм. Поставщики функциональных возможностей JSP должны легко сделать его доступным для пользователей в виде действий.
  • Выразительность - механизм должен поддерживать широкий спектр действий, включая вложенные действия, элементы сценария внутри тел действий, создание, использование и обновление переменных сценария.
  • Возможность использования из разных языков сценариев. Хотя в настоящее время спецификация JSP определяет только семантику сценариев на языке программирования Java, мы хотим оставить открытой возможность использования других языков сценариев.
  • Основано на существующих концепциях и механизмах - мы не хотим изобретать заново то, что существует где-то еще. Кроме того, мы хотим избегать будущих конфликтов всякий раз, когда мы можем их предсказать.

Синтаксис:

Предположим, мы создаем тег testGuru и можем использовать класс taghandlertestTag, который переопределит метод doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Кроме того, нам нужно будет сопоставить этот класс testTag в TLD (дескриптор библиотеки тегов), поскольку контейнер JSP автоматически создаст сопоставление между файлом класса и uri, которое было упомянуто в файле TLD.

Интерфейс тегов JSP

  • Этот класс должен будет расширить класс SimpleTagSupport.
  • Этот класс должен будет переопределить метод doTag (), который является частью класса SimpleTagSupport (переопределение - это метод, унаследованный от родительского класса).
  • Этот интерфейс является подчиненным интерфейсом интерфейса JSPTag.
  • Он предоставляет методы для выполнения в начале и в конце тега.
  • Кроме того, нам нужно отобразить этот класс в TLD, т.е. дескриптор библиотеки тегов.

Мы рассматриваем в примере ниже

Метод интерфейса тегов

  • doTag () - это метод, который нам нужно переопределить, который будет иметь содержимое для тега.
  • Требуется текущий контекст JSP с помощью getJSPContext ()

Пример:

Customtag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "ex" uri = "WEB-INF / custom.tld"%> Пользовательский тег <пример: guruTag />

Custom.tld

 1.0  2.0  Тестовый TLD <тег> guruTag  demotest.guruTag  пустой 

guruTag.java (TagHandler)

демотест пакета;import javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;открытый класс guruTag расширяет SimpleTagSupport {public void doTag () выбрасывает JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println («Таг гуру»);}}

Расшифровка кода:

guruTag.java (TagHandler)

Строка кода 6: класс guruTag расширяет класс SimpleTagSupport, который присутствует в javax.servlet.JSP jar

Строка кода 7: Здесь мы переопределяем метод doTag (), который генерирует исключения JspException и IOException.

Строка кода 9-10: в этом методе код будет встроен в настраиваемый тег, который будет вызван. Мы берем объект JspWriter, и он напечатает «Guru Tag».

Custom.tld

Строка кода 6: Здесь имя настраиваемого тега - «guruTag».

Строка кода 7: класс тега - taghandlerclass, то есть guruTag.java. Он принимает полный путь к файлу обработчика, который включает путь к каталогу, в котором находится файл.

Customtag_jsp1.jsp

Строка кода 3 : этот префикс taglib требуется для всех тегов, добавляется префикс ex, поэтому его можно использовать в качестве префикса для всех coretags, а uri - это custom.tld, который отображает обработчик тегов.

Строка кода 11: Здесь мы определяем настраиваемый тег «guruTag», который будет вызывать метод doTag () класса обработчика, и код внутри него будет выполнен.

Когда вы выполняете приведенный выше код, вы получаете следующий результат

Выход:

  • Мы получаем вывод как «GuruTag» из guruTag.java, то есть TagHandler, который переопределяет метод doTag () и выводит на экран «Guru Tag».

Резюме:

  • В этом разделе мы узнали о стандартной библиотеке тегов JSP, в которой мы создали основные теги и настраиваемые теги.
  • Основные теги включают теги for, if, redirect, import, catch, которые использовались для основных целей в JSP.
  • Кроме того, мы создали собственные теги, в которых мы можем определять теги и использовать их в JSP.