JSTL

JSTL - стандартная библиотека Java.

Позволяет обойтись на jsp-странице без скриплетов. Это позволяет лучше отделить задачу дизайнера от задач программиста.

Библиотека JSTL состоит из 4 частей


 * ядра
 * манипуляции xml
 * sql
 * интернационализация

Рассмотрим библиотеку ядра

Для использования библиотеки надо подключить ее к странице с помощью директивы taglib, где в качестве аттрибутов надо указать uri библиотеки и префикс - показывающий что данный тег относится к этой библиотеке.

<%@ taglib {uri ...} %>

Теги, предоставляемые библиотекой ядра:

Тег аналогичен jsp-тегу setProperty ( с помощью него можно устанавливать свойства javaBean) но тег set дополнительно позволяет создавать новые переменные:



Также можно указать область видимости, где будет видна переменная:


 * page
 * request
 * session
 * application

С помощью set можно устанавливать свойства существующих javaBean-ов. Для этого используется целевой аттрибут target -объект, которому устанавливает, propety - название аттррибута и value - значение аттрибута.

Тег set может удалить переменную, присвоев ей значение null.

Тег - выводит на страницу текст, который содержит, либо выражение, переданное в качестве аттрибута value.

Его использование аналогично использованию Expression-а на странице jsp типа <%= %>

Аттрибут default устанавливает значение по умолчанию, если value будет null.

escapeXML - позволяет экранировать http-символы

Тег  - работает аналогично сриплету с if в java 0}"> Значение в test истинно 

Одновременно значение выситанного в if можно сохранить в переменную, чтобы ее потом использовать. Для этого используется аттрибут var в которую поместится результат var - имя переменной, в которой будет результат. scope - видимость.

Аттрибут test - Обязательный

 - организет цикл

Перебор элементов некоторой коллекции и имя коллекции передается в аттрибуте items Либо операцию по целочисленной переменной и ее имя передается в аттрибут var.

Также можно использовать аттрибуты begin, чтобы указать начальное значение переменной или индекс элемента коллекции с которой будут операции. end - индекс последнего элемента коллекции (включительо) или последного элемента. step - с каким шагом

varStatus - позволяет получить информацию о текущем цикле. Например, хочется узнать первый это элемент коллекции или последний и сделать это можно через переменную, указанную в varStatus.

Пример 

 флаг == 1   флаг == 2   не попало ни в одно условие  

Проверяется до первого совпадения

Тег url   

Хорошо тем, что urlEncode выполняет сразу.

Пример:

<c:set var="book" value="${sessionScope.bkServ.book}"/> - вернет book из brServ, который помещен в объект сессии при помощи contextListener