Топ-100Курс Java: Работа с JSP Standard Tag Library (JSTL) - Codorbits
LogoCodOrbits

Раздел: JSP

В этом разделе вы узнаете, как использовать JavaServer Pages (JSP) для генерации HTML-контента на стороне сервера.

Все разделы
Иконка JSP

Работа с JSP Standard Tag Library (JSTL)

Last updated: 10 мая 2025 г.

JSTL — это теговая альтернатива стандартному Java-коду на JSP. То есть все стандартные конструкции типа создания переменных, циклов, условий, исключений,… можно делать тегами.

Нужен за тем же, зачем используются usebean, EL – чтобы легче страницу было разрабатывать дизайнеру.


Подключение JSTL

Для начала нужно подключить JSTL библиотеку. Для этого нужно скачать файл jstl-1.2.jar. Его довольно легко найти в интернете.

И после этого нужно поместить его в папку lib в папке WEB-INF.

Теперь нужно подключить библиотеку в самом jsp файлике с помощью <%@%> тега.

1<!--так подключаем библиотеку jstl Core-->
2<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
3<html>
4<head>
5    <title>EL JSP</title>
6</head>
7<body>
8</body>
9</html>

Простейшие теги JSTL

Для примера приведем тег цикла c:forEach. Аналог Java циклов for, while. foreach.

Пример программы:

1<!--так подключаем библиотеку jstl Core-->
2<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
3<html>
4<head>
5    <title>JSTL JSP</title>
6</head>
7<body>
8<!-- Ниже аналог for-each в Java.
9По очереди элементы из списка в атрибуте arrlist помещаются в listelement -->
10<c:forEach items="${arrlist}" var = "listelement">
11<!-- И таким образом каждый
12элемент списка выводиться. -->
13    ${listelement}
14</c:forEach>
15<!-- Можно вывести числа от 1 до 5 с помощью begin и end. -->
16<c:forEach var = "i" begin = "1" end = "5">
17    ${i}
18</c:forEach>
19</body>
20</html>

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

Вывод:

Как видим, первый цикл вывел все элементы списка в аттрибуте, а второй цикл вывел числа от 1 до 5.          

Search Icon

Другие простейшие теги типа c:if(условие), c:choose, c:when, c:otherwise (аналог if else или switch), c:catch (перехват ошибок) рассматривать не будем они очень просты и легко гугляться.

Далее рассмотрим лишь самые интересные.


Тег c:out

Тег c:out используется для вывода информации на страницу.

Он выполняет ту же функцию, что и ранее изученные способы:

  • <%=”<h2>Hello!!</h2>”%>,
  • resp.getWriter().write(“<h2>Hello!!</h2>”)
  • или \${<h2>Hello!!</h2>}.

Но в случае c c:out тег h2 не воспримется (выведет на странице <h2>Hello!!</h2>). c:out более безопасен и перед выводом на страницу интерпретирует html теги в специальные символы. Поэтому можно без страха через него выводить данные введенные пользователем, не боясь, что он ввел какой-то html код, что может сломать страницу.

Пример программы:

1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2<html>
3<head>
4    <title>EL JSP</title>
5</head>
6<body>
7<%="<h2>Hello!!</h2>"%>
8<% response.getWriter().write("<h2>Hello!!</h2>"); %>
9${‘<h2>Hello!!</h2>‘}
10<c:out value="${'<h2>Hello!!</h2>‘}"/>
11</body>
12</html>

Откроем эту jsp страницу.

Видим, что при выводе с помощью c:out теги h2 воспринялись как часть строки. То есть html, при выводе с помощью c:out, не работает.


Тег c:import

Подобен include в сервлетах, но он также может добавлять на страницу не только данные на нашем сервере, а и вставить в нашу jsp сторонний url.

Пример программы:

1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2<html>
3<head>
4    <title>JSTL JSP</title>
5</head>
6<body>
7    before import
8    <c:import url="https://www.twitch.tv/"/>
9    after import
10</body>

То есть сначала выведется всё, что было выше строки с import потом главная страница twitch, потом код после этой строки.

Видим, что сначала вывелось before import, потом страница twitch, потом after import.


Создание, удаление переменных.

С помощью JSTL можно создавать, удалять переменные.

Пример программы:

1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" 
2prefix="c" %>
3<html>
4<head>
5    <title>JSTL JSP</title>
6</head>
7<body>
8<!--создать переменную SomeVar 
9в application scope. в нее записываем 
10результат выражения в value-->
11<c:set var="SomeVar" scope="application" value="${5*7/3}"/>
12<c:out value="${SomeVar}"/>
13<!--можно удалить переменную. 
14для очистки памяти например.-->
15<c:remove var="SomeVar"/>
16<c:out value="${SomeVar}"/>
17</body>
18</html>

Откроем страницу.

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

После удаления же переменной, как видим, ничего не вывелось вторым c:out.


Аналог resp.encodeURL.

c:url – аналог resp.encodeURL, то есть преобразование адреса с добавлением JSESSIONID.

Также здесь можно увидеть добавление параметров с помощью c:param.

Пример программы:

1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2<html>
3<head>
4    <title>JSTL JSP</title>
5</head>
6<body>
7<!--c:url – аналог resp.encodeURL то есть преобразование адреса с добавлением JSESSIONID.
8в var записывается преобразованный адрес-->
9<c:url var="fullURL" value="/myservlet">
10    <!--добавляем параметры
11    к преобразовываемому адресу.-->
12    <c:param name="name" value="Carl"/>
13</c:url>
14<!--выводим полный URL-->
15${fullURL}
16</body>
17</html>

Откроем страницу.

Видим, что при выключенных куках JSESSIONID успешно добавился и параметр со значением Carl тоже успешно добавился.


Тег c:forTokens.

С помощью c:forTokens можно разбить строку по какому-то символу и над каждым элементом разбитой строки выполнить какие-то действия. То есть очевидно, что это такой вид цикла.

Пример программы:

1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2<html>
3<head>
4    <title>JSTL JSP</title>
5</head>
6<body>
7<!--делит строку items по разделителю delims
8и выполняет какие-то действия над каждым
9из элементов разделенной строки-->
10<c:forTokens items="John_Jonny_Carl" delims="_" var="name">
11    <c:out value="${name}"/><br>
12</c:forTokens>
13</body>
14</html>

Откроем страницу.


Тег c:redirect.

С помощью c:redirect можем перейти на сторонний ресурс, но при это можем еще вставить параметры в адресную строку.

Пример программы:

1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2<html>
3<head>
4    <title>JSTL JSP</title>
5</head>
6<body>
7    <!--можем совершить redirect на сторонний адрес-->
8    <c:redirect url="https://twitch.tv/">
9        <!--особенность что можем добавить 
10         параметры к этому адресу -->
11        <c:param name="name" value="Carl"/>
12    </c:redirect>
13</body>
14</html>

Откроем страницу.

Видим в адресной строке вставленный в адрес параметр.


Дополнительные материалы

Additional Material Icon

Следующие уроки

Что такое шаблоны проектирования? Шаблон Factory

16
мин.

Similar Articles Icon
Divider

Шаблон Singleton: обеспечение единственного экземпляра

14
мин.

Similar Articles Icon
Divider

Шаблон DAO: работа с БД через объект

13
мин.

Similar Articles Icon