12 а Библиотека тегов JSTL пособие.ppt
- Количество слайдов: 32
Стандартная библиотека тегов JSTL Профессор Хомоненко А. Д. ПГУПС, 08. 12. 2010 1
Вопросы: l l l Общие сведения о библиотеке тегов JSP Создание и использование библиотеки тегов Интерфейсы обрабатывающих тегов Использование тегов с атрибутами Стандартная библиотека тегов JSTL 2
Литература: Дейтел Х. М. , Дейтел П. Дж. , Сантри С. И. Технологии программирования на Java 2. Книга 3. Корпоративные системы, сервлеты JSP, Webсервисы. ─ М. : OOO “Бином-Пресс”, 2003. ─ 672 с. 2. Брюс У. Перри. Java сервлеты и JSP. Сборник рецептов. ─ М. : Кудиц-Пресс. 2006. ─ 768 с. 3. http: //ru. wikipedia. org/wiki/JSP. 4. http: //www. intuit. ru/department/se/compprog/14/7. html. 5. http: //download. oracle. com/javaee/5/tutorial/doc/bn agx. html. 1. 3
Стандартная библиотека тегов JSTL(Java. Server Pages Standard Tag Library) — «стандартная библиотека тегов JSP» . Она расширяет спецификацию JSP, добавляя библиотеку JSP тегов для общих нужд: l разбор XML данных, l условная обработка, l создание циклов, l поддержка интернационализации.
Пример использования тегов и JSTL Тег words: <%@ tag page. Encoding="UTF-8" %> <%@ taglib uri="http: //java. sun. com/jsp/jstl/core" prefix="c" %> <%@attribute name="str"%> <div> <strong>Исходнаястрока: </strong> ${str} </div> <table cellpadding="0" cellspacing="0" style="border: 1 px solid darkgray; margin: 8 px auto; "> <tr> <th style="width: 30 px; ">№</th> 5
Пример использования тегов и JSTL Тег words: <th style="width: 150 px; ">Слово</th> </tr> <c: for. Tokens items="${str}" var="word" delims=" , . ? !_=" var. Status="st"> <c: choose> <c: when test="${st. index % 2 == 0}"> <c: set var="bg. Color" value="lightgray"/> </c: when> <c: otherwise> <c: set var="bg. Color" value="white"/> 6
Пример использования тегов и JSTL </c: otherwise> </c: choose> <tr style="background-color: ${bg. Color}; "> <td>${st. count}</td> <td><c: out value="${word}"></c: out></td> </tr> </c: for. Tokens> </table> Вызов тега <tag: words str="Рекурсия - процесс повторения чего -либо самоподобным способом"/> 7
Пример использования тегов и JSTL Результат вызова тега 8
Пример цикла с тегом for. Each и код Java Цикл с тегом for. Each <body> <c: for. Each var="i" begin="2" end="10" step="2"> ${i}<br /> </c: for. Each> </body> Код Java <body> <% for(int i=2; i<=10; i+=2) { %><%=i%><br/><% } %> </body> 9
Группы тегов JSTL 10
Группа тегов core В JSP-страницу должна быть включена директива: <%@ taglib uri="http: //java. sun. com/jsp/jstl/core" prefix="c" %> Тег set служит для установления значения EL-переменной или свойства. Примеры: <c: set var="foo" scope="session" value="установка значения в атрибуте"/> <c: set var="foo 2" scope="session"> Установка значения в теле тега </c: set> 11
Группа тегов core Атрибутом scope устанавливается переменная разных областей видимости: страницы (page), сессии (session), приложения (application), запроса (request). Вывод значений EL-выражений тегом out: <h 3>Hello, <c: out value="${param. username}" default="guest" /></h 3> Тег if для записи условий: <c: if test="${page. Context. request. method=='POST'}"> <!– Выполняется при обработке POST-запроса --> </c: if> 12
Группа тегов core: choose <c: choose> <c: when test="${param. number < 0}"> Отрицательное значение </c: when> <c: when test="${param. number == 0}"> Ноль </c: when> <c: otherwise> Положительное значение </c: otherwise> </c: choose> 13
Группа тегов core: for. Each <table> <tr><th>Name</th><th>Quantity</th></tr> <c: for. Each items="${some. Map}" var="item"> <tr> <td>${item. key}</td> <td>${item. value}</td> </tr> </c: for. Each> </table> 14
Группа тегов core: for. Tokens <c: if test="${page. Context. request. method=='POST'}"> <table> <tr> <th>Номер</th><th>Слово</th> </tr> <c: for. Tokens items="${param. sentence}" var="word" delims=" , . ? !" var. Status="st"> <c: choose> <c: when test="${st. index % 2 == 0}"> <c: set var="bg. Color" value="lightgray"/> </c: when> 15
Группа тегов core: for. Tokens <c: otherwise> <c: set var="bg. Color" value="white"/> </c: otherwise> </c: choose> <tr style="background-color: ${bg. Color}; "> <td>${st. count}</td> <td><c: out value="${word}"></c: out></td> </tr> </c: for. Tokens> </table> </c: if> 16
Группа тегов core: redirect <c: if test="${ param. product == null }"> <c: redirect url="/book/error. jsp"> <c: param name="description"> Ошибка: продукт не выбран </c: param> </c: redirect> </c: if> 17
Группа тегов core: catch Обработка исключений, тег catch: <c: catch var="exc" > <% double total = Float. parse. Float(request. get. Parameter("total")); double price = Float. parse. Float(request. get. Parameter("price")); if (price == 0) throw new Exception("Invalid price value"); double quantity = total / price; %> 18
Группа тегов core: catch Обработка исключений, тег catch: </c: catch> <c: if test="${exc != null}"> Exception occured: ${ exc. message } </c: if> 19
Теги для работы с XML На JSP-странице помещается директива: <%@ taglib prefix="x" uri="http: //java. sun. com/jsp/jstl/xml" %> Документ books. xml: <? xml version="1. 0" encoding="UTF-8"? > <books> <book> <title> HTML 5 и CSS 3. Веб-разработка по новым стандартам </title> <authors> <author>Брайан. Хоган</author> </authors> 20
Теги для работы с XML <isbn>978 -5 -459 -00592 -9</isbn> <year>2011</year> </book> <title>Компьютерные сети</title> <authors> <author>Эндрю. Таненбаум</author> <author>Дэвид. Уэзеролл</author> </authors> <isbn>978 -5 -459 -00342 -0</isbn> <year>2012</year> </books> 21
Теги для работы с XML Для создания переменной, при использовании которой возможно выполнение запросов для получения частей XML-документа, служит тег parse: <c: import var="xml. Data" url=". /books. xml"/> <x: parse var="xml. Parsed" xml="${xml. Data}"/> Теги библиотеки: <x: out>, <x: if>, <x: choose>, <x: when>, <x: otherwise> и <x: for. Each> расширяют функциональность тегов в части поддержки языка запросов XPath к элементам XML-документа. 22
Теги для XML Например, тег out выводит значение узла или атрибута XML-документа, заданного атрибутом select: <x: out select="$xml. Parsed/ books/book[year='2012']/title" /> <%@ page content. Type="text/html; charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http: //java. sun. com/jsp/jstl/core" %> <%@ taglib prefix="x" uri="http: //java. sun. com/jsp/jstl/xml" %> <x: parse var="xml. Parsed“> 23
Теги для XML <c: import url="books. xml" char. Encoding="UTF-8"/> </x: parse> <html> <head> <title>JSTL-XML</title> </head> <body> <table> <tr> <th style="width: 30%; ">Название</th> 24
Теги для XML <th style="width: 30%; ">Авторы</th> <th style="width: 15%; ">Годиздания</th> <th style="width: 25%; ">ISBN-код</th> </tr> <x: for. Each select="$xml. Parsed/books/book[year>=2011]"> <tr> <td><x: out select="title"/></td> <td style="text-align: center; "> <x: for. Each select="authors/author" var="author" var. Status="st"> <x: out select=". "/><c: if test="${not st. last}">, <br/></c: if> </x: for. Each> </td> 25
Теги для XML <td style="text-align: center; "><x: out select="year"/></td> <td><x: out select="isbn"/></td> </tr> </x: for. Each> </table> </body> </html> 26
Вывод обработанного XML-документа 27
Функциональные теги и форматирования Группа JSTL-тегов-функций (http: //java. sun. com/jsp/jstl/functions) служит для упрощения обработки строковой информации и содержит теги для таких стандартных действий, как определение индекса первого вхождения подстроки(index. Of), чтение подстроки (substring), преобразование в нижний и верхний регистры (to. Lower. Case и to. Upper. Case) Например, фрагмент формирует приветствие с именем пользователя в верхнем регистре: l <h 3>Hello, ${fn: to. Upper. Case(param. username)}</h 3> 28
Функциональные теги и форматирования Функции starts. With и ends. With позволяют проверить, начинается или оканчивается строка подстрокой: ${fn: ends. With(filename, '. pdf') ? 'да, это PDF' : 'нет, это не PDF'} Функция length - для определения длины строк и размеров коллекций: Количество элементов в списке: ${fn: length(session. Scope. some. List)} Для форматированного вывода дат - тег format. Da: <jsp: use. Bean id="now" class="java. util. Date"/> <fmt: format. Date value="${now}" pattern="HH: mm dd. MM. yy"/> 29
30
JSTL содержит группу тегов для работы с реляционными базами данных (http: //java. sun. com/jsp/jstl/sql). Они позволяют указывать источники данных, выполнять SQLзапросы и транзакции. Прямое обращение к базе данных из JSP-страниц является неудачным стилем и не рекомендуется для использования. 31
Спасибо за внимание ! ПГУПС, каф. «ИВС» Зав. кафедрой Хомоненко Анатолий Дмитриевич khomon@mail. com 2010 г. 32
12 а Библиотека тегов JSTL пособие.ppt