Топ-100Работа с 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