JSTL (библиотека стандартных тегов JSP)
В этом руководстве по JSTL мы увидим, как использование различных тегов JSTL упростит кодирование JSP.
Что такое JSTL в Java?
JSTL стенды для Java стандартная библиотека тегов серверных страниц, представляющая собой набор пользовательских библиотек тегов JSP, которые обеспечивают общие функции веб-разработки. JSTL — это стандартная библиотека тегов JSP.
Преимущества JSTL
Ниже приведены преимущества JSTL:
- Стандартный тег: обеспечивает богатый уровень переносимой функциональности страниц JSP. Разработчику легко понять код.
- Код аккуратный и чистый: Поскольку сценарии сбивают с толку разработчика, использование JSTL делает код аккуратным и понятным.
- Автоматический Javaподдержка beansИнтероспекция: JSTL имеет преимущество перед скриптлетами JSP. Дескрипторы языка выражений JSTL JavaБин-код очень легко. Нам не нужно понижать значения объектов, которые были получены как атрибуты с ограниченной областью действия. Использование кода скриптлетов JSP будет сложным, а JSTL упростил эту задачу.
- Людям легче читать: JSTL основан на XML, который очень похож на HTML. Следовательно, разработчикам это легко понять.
- Компьютерам легче понять: такие инструменты, как 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. Следовательно, они не оцениваются как настоящие теги.
Синтаксис:
<c:out value="" default="" escapeXML="">
- Здесь значение представляет собой информацию для вывода, и оно является обязательным.
- По умолчанию – отказ от вывода информации, и это не является обязательным.
- escapeXML – имеет значение true, если экранирует символы XML.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
Coretag_jsp1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Core Tag JSP1</title> </head> <body> </body> </html>
Расшифровка кода:
Строка кода 3: Этот префикс библиотеки тегов требуется для всех тегов, а добавленный префикс — «c». Следовательно, его можно использовать в качестве префикса для всех основных тегов.
Строка кода 12: Здесь мы используем выходной тег coretag с префиксом «c», и этот выход будет печатать значение в теге выражения. Следовательно, вывод будет именем
При выполнении приведенного выше кода вы получите следующий результат:
Вывод:
- Мы получаем значение в виде имени из основного тега «out», который будет печататься в выходном потоке.
2. Поймать
- Он перехватывает любое вызываемое исключение, возникающее в теле, и отображает его как выходные данные.
- Он используется для обработки ошибок и их перехвата.
Синтаксис:
<c:catchvar="">
Здесь 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Core Tag JSP2</title> </head> <body> <c:catch var="guruException"> <% int num = 10/0; %> </c:catch> The Exception is : ${guruException} </body> </html>
Расшифровка кода:
Строка кода 3: Этот префикс библиотеки тегов необходим для всех тегов, добавлен префикс «c», поэтому его можно использовать в качестве префикса для всех основных тегов.
Строка кода 11–13: Coretag catch используется для перехвата исключения и его печати. Здесь исключение возникает при 10/0, и это исключение имеет имя «guruException».
Строка кода 14: Мы печатаем «guruException».
Когда вы выполните код, вы получите следующий результат:
Вывод:
- Мы получаем арифметическое исключение как /по нулю, и оно печатается на выходе с использованием переменной «guruException».
3. Импорт
- Мы можем импортировать содержимое другого файла на страницу JSP, как мы это сделали в JSP включает действие.
- Здесь мы также можем включить URL-адрес, и содержимое будет отображаться на этой странице.
Синтаксис:
<c:importvar="" uri="">
Здесь 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Core Tag JSP 31</title> </head> <body> <c:import var="displayfile" url="coretag_jsp32.jsp"> </c:import> <c:out value="${displayfile}"/> </body> </html>
Coretag_jsp32.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <a>The file is diplayed after importing</a> </body> </html>
Расшифровка кода:
Coretag_jsp31.jsp
Строка кода 3: Этот префикс библиотеки тегов необходим для всех тегов, добавлен префикс «c», поэтому его можно использовать в качестве префикса для всех основных тегов.
Строка кода 11–12: Здесь мы импортируем файл coretag_jsp32.jsp в этот файл, используя тег импорта.
Строка кода 13: Здесь мы печатаем файл coretag_jsp32.jsp, используя тег out.
Когда вы выполните приведенный выше код, вы получите следующий результат.
Вывод:
- Coretag_jsp32 печатается в выходных данных, поскольку этот файл был импортирован в coretag_jsp31.jsp.
4. для каждого
- Он используется для перебора количества элементов в серии операторов.
- Это то же самое, что Java цикл.
Синтаксис:
<c:forEach var="" begin="" end="">
- Здесь 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Core Tag JSP4</title> </head> <body> <c:forEach var="gurucount" begin="5" end="10"> <c:out value="${gurucount}"/> </c:forEach> </body> </html>
Расшифровка кода:
Строка кода 3: Этот префикс библиотеки тегов необходим для всех тегов, добавлен префикс «c», поэтому его можно использовать в качестве префикса для всех основных тегов.
Строка кода 11–13: Здесь мы используем цикл «forEach», где имя переменной — «gurucount», начальный отсчет которого равен 5, а конечный — 10. Мы выводим переменную gurucount, которая содержит числа от 5 до 10.
Когда вы выполните код, вы получите следующий вывод
Вывод:
- Результат, который мы получаем, начинается от 5 до 10.
5. Если
- Используется для Тестирование условиях.
- Если тег используется для проверки условия, истинно оно или нет, на основе этого блок кода будет выполнен.
Синтаксис:
<c:if test="${condition}></c:if>
Здесь, если условие истинно, выполняется серия операторов.
Пример:
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Core Tag JSP5</title> </head> <body> <c:set var="count" value="100"/> <c:if test="${count == 100}"> <c:out value="The count is 100"/> </c:if> </body> </html>
Расшифровка кода:
Строка кода 3: Этот префикс библиотеки тегов необходим для всех тегов, добавлен префикс «c», поэтому его можно использовать в качестве префикса для всех основных тегов.
Строка кода 11: Здесь мы устанавливаем переменную с именем count на 100.
Строка кода 12–14: Здесь мы используем «условие if», где проверяем, равно ли количество 100. Если оно равно 100, то мы получаем вывод «Количество равно 100».
Когда вы выполните приведенный выше код, вы получите следующий вывод
Вывод:
- Поскольку условие «если» истинно, мы получаем результат «Счетчик равен 100».
6. перенаправление
- Он используется для перенаправления текущей страницы на другой URL-адрес, предоставляя относительный URL-адрес этого тега.
- Он поддерживает контекстно-зависимые URL-адреса.
Синтаксис:
<c:redirect url="" context=""/>
Здесь 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Core Tag JSP6</title> </head> <body> <c:redirect url="/"/> </body> </html>
Расшифровка кода:
Строка кода 3: Этот префикс библиотеки тегов необходим для всех тегов, добавлен префикс «c», поэтому его можно использовать в качестве префикса для всех основных тегов.
Строка кода 11: Здесь мы используем «тег перенаправления», где мы указываем URL-адрес, и когда мы нажимаем на эту страницу, он перенаправляется на сайт, который был указан для перенаправления.
Когда вы выполните приведенный выше код, вы получите следующий результат:
Вывод:
- Мы получаем выходной URL-адрес guru99.com, который перенаправляется с помощью coretag_jsp6.jsp.
Пользовательские теги JSTL
- Это определяемый пользователем JSP языковой элемент.
- Когда JSP транслируется в сервлет, пользовательский тег преобразуется в класс, который выполняет действие над объектом и называется обработчиком тега.
- Эти действия при выполнении сервлета вызываются веб-контейнером.
- Чтобы создать пользовательский тег, нам нужно создать обработчик тега, который будет расширять SimpleTagSupport и переопределить метод doTag().
- Нам нужно создать TLD, где нам нужно сопоставить файл класса в TLD.
Преимущества пользовательских тегов в JSP
Вот преимущества пользовательских тегов в JSP:
- Портативный: Действие, описанное в библиотеке тегов, должно быть применимо в любом контейнере JSP.
- Простой: Неопытные пользователи должны быть в состоянии понять и использовать этот механизм. Поставщики функциональности JSP должны легко сделать его доступным для пользователей в качестве действий.
- Выразительный: Механизм должен поддерживать широкий спектр действий, включая вложенные действия, элементы сценариев внутри тел действий, создание, использование и обновление переменных сценариев.
- Можно использовать из разных языков сценариев: Хотя спецификация JSP в настоящее время определяет только семантику для скриптов в Java языке программирования, мы хотим оставить открытой возможность использования других языков сценариев.
- Создано на основе существующих концепций и оборудования: Мы не хотим переизобретать то, что уже существует в других местах. Кроме того, мы хотим избегать будущих конфликтов, когда мы можем их предсказать
Синтаксис:
Предположим, мы создаем тег testGuru и можем использовать класс taghandlertestTag, который переопределит метод doTag().
<ex:testGuru/> Class testTag extends SimpleTagSupport{ public void doTag()}
Кроме того, нам нужно будет сопоставить этот класс testTag с TLD (библиотека тегов). Descriptили) поскольку контейнер 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"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Custom Tag</title> </head> <body> <ex:guruTag/> </body> </html>
Custom.tld
<taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>Test TLD</short-name> <tag> <name>guruTag</name> <tag-class>demotest.guruTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
guruTag.java(TagHandler)
package demotest; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class guruTag extends SimpleTagSupport{ public void doTag() throws JspException,IOException { JspWriter out = getJspContext().getOut(); out.println("Guru Tag"); } }
Расшифровка кода:
guruTag.java(TagHandler)
Строка кода 6:Класс guruTag расширяет класс SimpleTagSupport, который присутствует в jar-файле javax.servlet.JSP.
Строка кода 7: Здесь мы переопределяем метод doTag(), который генерирует JspException и IOException.
Строка кода 9–10: В этом методе код будет встроен в пользовательский тег, который будет вызываться. Мы берем объект JspWriter, и он напечатает «Guru Tag».
Custom.tld
Строка кода 6: Здесь имя пользовательского тега — «guruTag».
Строка кода 7:Класс тега — taghandlerclass, т. е. guruTag.java. Требуется полный путь к файлу-обработчику, который включает путь к каталогу, в котором находится файл.
Customtag_jsp1.jsp
Строка кода 3:Этот префикс библиотеки тегов требуется для всех тегов, а добавленный префикс — «ex», поэтому его можно использовать в качестве префикса для всех основных тегов, а uri — это custom.tld, который отображает обработчик тега.
Строка кода 11: Здесь мы определяем пользовательский тег «guruTag», который будет вызывать метод doTag() класса-обработчика, и код внутри него будет выполнен.
Когда вы выполните приведенный выше код, вы получите следующий вывод
Вывод:
- Мы получаем выходные данные как «GuruTag» из guruTag.java, т.е. TagHandler, который переопределяет метод doTag() и печатает «Guru Tag» в качестве выходных данных.
Резюме
- В этом разделе мы узнали о стандартной библиотеке тегов JSP, в которой мы создавали основные и пользовательские теги.
- Основные теги включают теги for, if, redirect, import, catch, которые использовались для основных целей в JSP.
- Кроме того, мы создали собственные теги, в которых мы можем определить теги и использовать их в JSP.