JSP Стандартная библиотека тегов (JSTL)
Стандартная библиотека тегов JSP (JSTL) — это набор тегов JSP, который инкапсулирует общую базовую функциональность JSP-приложений.
JSTL поддерживает общие структурированные задачи, такие как итерация, условные проверки, работа с XML-документами, теги интернационализации и теги SQL. Помимо этого, он также предоставляет фреймворк для использования пользовательских тегов, интегрирующихся с JSTL.
В зависимости от функциональности, предоставляемой тегами JSTL, их можно разделить на 5 категорий.
- Основные теги
- Теги форматирования
- Теги SQL
- Теги XML
- Функции JSTL
Установка библиотеки JSTL
Шаги по установке библиотеки JSTL в Apache Tomcat следующие:
Бинарный пакет (jakarta-taglibs-standard-current.zip), загруженный из Apache Standard Tag Library.
- Официальный адрес загрузки:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
- Адрес загрузки на этом сайте:jakarta-taglibs-standard-1.1.2.zip
Скачайтеjakarta-taglibs-standard-1.1.2.zipэтот пакет и распакуйте его, затемjakarta-taglibs-standard-1.1.2/lib/два jar-файла в:standard.jarиjstl.jarСкопируйте файлы в/WEB-INF/lib/.
Скопируйте необходимые tld-файлы из каталога tld в каталог WEB-INF.
Затем добавьте следующую конфигурацию в файл web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
Чтобы использовать любую библиотеку, необходимо включить тег<taglib>в начало каждого JSP-файла.
Основные теги
Основные теги — это наиболее часто используемые теги JSTL. Синтаксис для ссылки на библиотеку основных тегов следующий:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
| Тег | Описание |
|---|---|
| <c:out> | Используется для отображения данных в JSP, так же как <%= ... > |
| <c:set> | Используется для сохранения данных |
| <c:remove> | Используется для удаления данных |
| <c:catch> | Используется для обработки исключительных ситуаций, приводящих к ошибкам, и для сохранения информации об ошибке |
| <c:if> | То же, что и if, используемый в обычном программировании |
| <c:choose> | Сам по себе служит только родительским тегом для <c:when> и <c:otherwise> |
| <c:when> | Дочерний тег <c:choose>, используемый для определения, истинно ли условие |
| <c:otherwise> | Дочерний тег <c:choose>, размещённый после тега <c:when>, выполняется, когда тег <c:when> вычисляется как false |
| <c:import> | Извлекает абсолютный или относительный URL, затем предоставляет его содержимое странице |
| <c:forEach> | Базовый тег итерации, принимает несколько типов коллекций |
| <c:forTokens> | Разделяет содержимое по указанному разделителю и итеративно выводит его |
| <c:param> | Используется для передачи параметров включаемым или перенаправляемым страницам |
| <c:redirect> | Перенаправляет на новый URL. |
| <c:url> | Создает URL с необязательными параметрами запроса |
Теги форматирования
Теги форматирования JSTL используются для форматирования и вывода текста, дат, времени и чисел. Синтаксис ссылки на библиотеку тегов форматирования выглядит следующим образом:
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
| Тег | Описание |
|---|---|
| <fmt:formatNumber> | Форматирует числа с использованием указанного формата или точности |
| <fmt:parseNumber> | Разбирает строку, представляющую число, валюту или процент |
| <fmt:formatDate> | Форматирует даты и время с использованием указанного стиля или шаблона |
| <fmt:parseDate> | Разбирает строку, представляющую дату или время |
| <fmt:bundle> | Привязывает ресурсы |
| <fmt:setLocale> | Задаёт локаль |
| <fmt:setBundle> | Привязывает ресурсы |
| <fmt:timeZone> | Задаёт часовой пояс |
| <fmt:setTimeZone> | Задаёт часовой пояс |
| <fmt:message> | Отображает информацию о конфигурационном файле пакета ресурсов |
| <fmt:requestEncoding> | Задаёт кодировку символов запроса |
Теги SQL
Библиотека тегов JSTL SQL предоставляет теги для взаимодействия с реляционными базами данных (Oracle, MySQL, SQL Server и т. д.). Синтаксис для ссылки на библиотеку тегов SQL выглядит следующим образом:
<%@ taglib prefix="sql"
uri="http://java.sun.com/jsp/jstl/sql" %>
| Тег | Описание |
|---|---|
| <sql:setDataSource> | Указывает источник данных |
| <sql:query> | Выполняет операторы SQL-запроса |
| <sql:update> | Выполняет операторы SQL-обновления |
| <sql:param> | Устанавливает параметры в операторе SQL в указанные значения |
| <sql:dateParam> | Устанавливает параметр даты в операторе SQL в указанное значение объекта java.util.Date |
| <sql:transaction> | Обеспечивает вложенные элементы работы с базой данных в рамках общего подключения к базе данных, выполняя все операторы как единую транзакцию |
Теги XML
Библиотека тегов JSTL XML предоставляет теги для создания XML-документов и управления ими. Синтаксис подключения библиотеки тегов XML выглядит следующим образом:
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
Перед использованием XML-тегов необходимо скопировать связанные с XML и XPath пакеты в ваш <каталог установки Tomcat>\lib:
- XercesImpl.jar
Адрес загрузки:http://www.apache.org/dist/xerces/j/
- xalan.jar
Адрес загрузки:http://xml.apache.org/xalan-j/index.html
| Тег | Описание |
|---|---|
| <x:out> | Аналогично <%= ... >, но используется только для выражений XPath |
| <x:parse> | Разбирает XML-данные |
| <x:set> | Задает выражение XPath |
| <x:if> | Вычисляет выражение XPath; если истинно, выполняет содержимое внутри тела, иначе пропускает тело |
| <x:forEach> | Перебирает узлы в XML-документе |
| <x:choose> | Родительский тег для <x:when> и <x:otherwise> |
| <x:when> | Дочерний тег <x:choose>, используемый для условной проверки |
| <x:otherwise> | Дочерний тег <x:choose>, выполняемый, когда <x:when> вычисляется как false |
| <x:transform> | Применяет XSL-преобразование к XML-документу |
| <x:param> | Используется вместе с <x:transform> для установки XSL-таблицы стилей |
Функции JSTL
JSTL содержит ряд стандартных функций, большинство из которых — функции общего назначения для обработки строк. Синтаксис ссылки на библиотеку функций JSTL выглядит следующим образом:
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
| Функция | Описание |
|---|---|
| fn:contains() | Проверяет, содержит ли входная строка указанную подстроку |
| fn:containsIgnoreCase() | Проверяет, содержит ли входная строка указанную подстроку без учета регистра |
| fn:endsWith() | Проверяет, заканчивается ли входная строка указанным суффиксом |
| fn:escapeXml() | Экранирует символы, которые могут использоваться как разметка XML |
| fn:indexOf() | Возвращает позицию указанной строки во входной строке |
| fn:join() | Объединяет элементы массива в строку и выводит её |
| fn:length() | Возвращает длину строки |
| fn:replace() | Заменяет указанную позицию во входной строке указанной строкой и возвращает её |
| fn:split() | Разделяет строку с помощью указанного разделителя на массив подстрок и возвращает его |
| fn:startsWith() | Проверяет, начинается ли входная строка с указанного префикса |
| fn:substring() | Возвращает подмножество строки |
| fn:substringAfter() | Возвращает часть строки после указанной подстроки |
| fn:substringBefore() | Возвращает часть строки до указанной подстроки |
| fn:toLowerCase() | Преобразует символы в строке в нижний регистр |
| fn:toUpperCase() | Преобразует символы в строке в верхний регистр |
| fn:trim() | Удаляет начальные и конечные пробельные символы |