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

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

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


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

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

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> EL JSP

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

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> JSTL JSP ${listelement} ${i}

Как видим, 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 код, что может сломать страницу.

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> EL JSP <%="

Hello!!

“%> <% response.getWriter().write("

Hello!!

“); %> ${‘

Hello!!

‘}

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


Тег c:import

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> JSTL JSP before import after import

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

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


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

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> JSTL JSP

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

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

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


Аналог resp.encodeURL.

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

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> JSTL JSP ${fullURL}

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

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


Тег c:forTokens.

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> JSTL JSP

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


Тег c:redirect.

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> JSTL JSP

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

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

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

Узнайте что такое шаблоны проектирования и как паттерн Factory помогает создавать однотипные объекты. Оптимизируйте создание экземпляров классов.
Time to read: 16

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

Singleton в Java: гарантия одного экземпляра класса. Пример. Сравнение с статическим классом и преимущества.
Time to read: 14

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

DAO паттерн в Java: изоляция доступа к данным. Узнайте, как отделить бизнес-логику от низкоуровневых операций с базой данных через Data Access Object.
Time to read: 13