JSTL
— это теговая альтернатива стандартному Java-коду на JSP. То есть все стандартные конструкции типа создания переменных, циклов, условий, исключений,… можно делать тегами.
Нужен за тем же, зачем используются usebean, EL – чтобы легче страницу было разрабатывать дизайнеру.
Подключение JSTL
Для начала нужно подключить JSTL библиотеку. Для этого нужно скачать файл jstl-1.2.jar
. Его довольно легко найти в интернете.
И после этого нужно поместить его в папку lib в папке WEB-INF.

Теперь нужно подключить библиотеку в самом jsp файлике с помощью <%@%>
тега.
Простейшие теги JSTL
Для примера приведем тег цикла c:forEach
. Аналог Java циклов for, while. foreach.
Пример программы:
Как видим, JSTL теги используются в паре с EL выражениями.
Вывод:

Как видим, первый цикл вывел все элементы списка в аттрибуте, а второй цикл вывел числа от 1 до 5.
Другие простейшие теги типа 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 код, что может сломать страницу.
Пример программы:
Hello!!
“%> <% response.getWriter().write("Hello!!
“); %> ${‘Hello!!
‘}
Видим, что при выводе с помощью c:out
теги h2 воспринялись как часть строки. То есть html, при выводе с помощью c:out, не работает.
Тег c:import
Подобен include в сервлетах, но он также может добавлять на страницу не только данные на нашем сервере, а и вставить в нашу jsp сторонний url.
Пример программы:
То есть сначала выведется всё, что было выше строки с import потом главная страница twitch, потом код после этой строки.

Видим, что сначала вывелось before import, потом страница twitch, потом after import.
Создание, удаление переменных.
С помощью JSTL можно создавать, удалять переменные.
Пример программы:
Откроем страницу.

Видим, что результат выражения, который сохранился в переменную правильный.
После удаления же переменной, как видим, ничего не вывелось вторым c:out
.
Аналог resp.encodeURL.
c:url
– аналог resp.encodeURL, то есть преобразование адреса с добавлением JSESSIONID
.
Также здесь можно увидеть добавление параметров с помощью c:param
.
Пример программы:
Откроем страницу.

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

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

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