
12 Библиотека тегов JSP.ppt
- Количество слайдов: 40
Библиотека тегов JSP Профессор Хомоненко А. Д. ПГУПС, 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
Общие сведения о библиотеке тегов Библиотека тегов – это коллекция действий, инкапсулирующих некоторую функциональность, которые могут использоваться из страницы JSP. Библиотека тегов представляет собой javaклассы, реализующие определенную бизнеслогику в соответствии с Tag Libraries Interface (интерфейс библиотеки тегов). Библиотека тегов включает один или несколько тегов-классов и XML-дескриптор, содержащий описание тегов и параметров, используемых тегами. 4
Общие сведения о библиотеке тегов Преимуществом использования библиотеки тегов перед компонентами Java. Bean заключается в том, что тег (java-класс) имеет доступ к странице JSP и может оперировать с ее содержимым. Установка библиотек тегов требует большей работы по сравнению с компонентами Java. Bean. 5
Создание и использование библиотеки тегов Для использования/создания библиотеки тегов нужно разработать: l класс (Tag handler class), обрабатывающий тег и определяющий его функциональность; l XML-файл – дескриптор библиотеки тегов Tag Library Descriptor (файл TLD) – связывающий имена элементов описания тегов с их реализацией. 6
Создание и использование библиотеки тегов Кроме того, нужно: l Зарегистрировать в дескрипторе web. xml с описание библиотеки тегов. Например: <taglib> <taglib-uri>/sdo</taglib-uri> <taglib-location>/WEB-INF/tlds/templates. tld </taglib-location> </taglib> 7
Создание и использование библиотеки тегов На странице JSP можно использовать ссылку на библиотеку: <%@ taglib uri="/sdo" prefix="sdo %> l На странице JSP с помощью директивы необходимо указать местоположение файла TLD. Пример : <%@ taglib uri=”/WEB-INF/tlds/templates. tld" prefix="tag" %> l 8
Создание и использование библиотеки тегов Пользовательские действия определяются согласно структуре: l открывающее тег – действие, выполняемое java-классом при открытии тега; l тело действия; l закрывающее тег – действие, выполняемое java-классом при закрытии тега. 9
Пример. Класс c тегом для вывода текста public Copyright. Tag extends Tag. Support { public int do. Start. Tag() throws Exception { page. Context. get. Out(). print("<small>© Copyright, 2011</small>"); return SKIP_BODY; } public int do. End. Tag() { return EVAL_PAGE; } } 10
Пример. Страница JSP c тегом для вывода текста 11
Пример. Файл дескриптора библиотеки тегов 12
Пример. Файл дескриптора библиотеки тегов 13
Пример. Класс обработчик тега 14
Пример. Класс обработчик тега 15
Интерфейсы обрабатывающих тегов Java-класс, обрабатывающий тег, может реализовывать один из интерфейсов: l Tag; l Iteration. Tag; l Body. Tag. 16
Интерфейсы обрабатывающих тегов Интерфейс Tag определяет базовые методы: l Setter для инициализации переменных; l do. Start. Tag () – определяет начало обработки действия тега; l do. End. Tag () (либо do. Finally () при использовании интерфейса Try. Catch. Finally ()) – определяет окончание обработки. 17
Интерфейсы обрабатывающих тегов Когда контейнер обнаруживает дескриптор пользователя, он вызывает методы set. Page. Context () и set. Parent () объекта, реализующего интерфейс Tag. Затем контейнер вызывает метод do. Start. Tag (), определяя начало выполнения действия, и завершает его вызовом метода do. End. Tag (). 18
Использование тегов с атрибутами Обращение к пользовательскому тегу с атрибутами на странице JSP имеет формат: <prefix: tag_name attribute 1='value 1' attribute 2='value 2' … /> 19
Язык выражений (Expression Language (EL)) добавлен в JSP 2. 0 как средство создания JSP. EL предложения обеспечивают более простой синтаксис для выполнения аналогичных действий как элементы сценариев JSP. Предложения EL можно использовать для: l печати значений переменных; l доступа к полям объектов на страницах. EL имеет богатое множество математических, логических, относительных операций, может использоваться для вызова функций Java. 20
Язык выражений Предложения EL устанавливают двумя способами: l для отдельных страниц с помощью страничной директивы; l для целого множества страниц с помощью описателя развертывания. Формат страничной директивы для активизации или отключения предложения EL имеет вид: <%@ page is. ELIgnored="true|false" %> Если атрибут is. ELIgnored имеет значение true, то предложения EL в JSP игнорируются. 21
Язык выражений При значении false предложения EL оцениваются. Базовый синтаксис предложений EL: l ${expr} где expr − действительное выражение. Для EL 2. 1 допускается синтаксис: l #{expr} Действительные выражения могут включать литералы, операторы, ссылки на объекты (переменные) и вызовы функций. Предложения EL не могут вкладываться. Например, не допустимо: ${ 2 + ${subexpr} } 22
Язык выражений. Литералы: Value Description Boolean literals true or false values. String literals Any string delimited by single or double quotes. The backslash is Integer literals Any positive or negative integer number (– 13, 45, 2374, and so on). Floating-point literals Any positive or negative floating-point number (– 1. 3 E-30, 3. 14159, 2. 00000001, . 45, . 56 e 2, and so on). Null literal A null value. 23
Язык выражений, Примеры простых выражений и их оценки: ${true} <%-- evaluates to true --%> l ${"Single quotes inside 'double quotes' do not need to be escaped"} l <%-- evaluates to Single quotes inside 'double quotes' do not need to be escaped --%> l ${2*4} <%-- evaluates to 8 --%> l 24
Язык выражений. Операторы 25
Язык выражений. Скобки As with most expressions, parentheses can change the precedence of the expression: ${ (2 * 4) + 3 } <%-- evaluates to 11 --%> ${ 2 * (4 + 3) } <%-- evaluates to 14 --%> You can use the empty operator to test for various conditions. Example: ${empty name} 26
Стандартная библиотека тегов JSTL(Java. Server Pages Standard Tag Library) — «стандартная библиотека тегов JSP» . Она расширяет спецификацию JSP, добавляя библиотеку JSP тегов для общих нужд: l разбор XML данных, l условная обработка, l создание циклов, l поддержка интернационализации.
Использование JSTL Для использования JSTL необходимо создать в папке /WEB-INF web-приложения поддиректорию /tld и разместить в ней TLDфайлы с описанием стандартных библиотек тэгов. Имя файла должно соответствовать префиксу библиотеки (Core, Fmt, SQL, XML, Functions). Для библиотеки Core-тэгов с префиксом «c» файл будет называться «c. tld» . TLD-файлы можно взять из набора разработчика Java WSDP. 28
Фрагмент файла TLD с функцией <? xml version="1. 0" encoding="UTF-8" ? > <taglib xmlns="http: //java. sun. com/xml/ns/j 2 ee" mlns: xsi="http: //www. w 3. org/2001/XMLSchemainstance" xsi: schema. Location="http: //java. sun. com/xml/ns/j 2 ee web-jsptaglibrary_2_0. xsd" version="2. 0"> <description>JSTL 1. 1 functions library</description> <display-name>JSTL functions</display-name> l 29
Фрагмент файла TLD с функцией <tlib-version>1. 1</tlib-version> <short-name>fn</short-name> <uri>http: //java. sun. com/jsp/jstl/functions</uri> <function> <description> Tests if an input string contains the specified substring. </description> <name>contains</name> 30
Фрагмент файла TLD с функцией <function-class>org. apache. taglibs. standard. functions. Functions</function-class> <function-signature>boolean contains(java. lang. String, java. lang. String)</function-signature> <example> < c: if test="${fn: contains(name, search. String)}"> </example> </function> </taglib> 31
Теги функций fn: contains() fn: contains. Ignore. Case() fn: ends. With() fn: escape. Xml() fn: index. Of() fn: join() fn: length() fn: replace() fn: split() fn: starts. With() fn: substring. After() fn: substring. Before() fn: to. Lower. Case() fn: to. Upper. Case() fn: trim() 32
Теги ядра (Core) c: catch c: choose c: if c: import c: for. Each c: for. Tokens c: out c: otherwise c: param c: redirect c: remove c: set c: url c: when 33
Пример использования тега из JSTL <%@ taglib prefix="c" uri="http: //java. sun. com/jsp/jstl/core" %> <html> <head> <title>JSTL: Expression Language Support -- Expr Example</title> </head> <body bgcolor="#FFFFFF"> <h 3><c: out></h 3> 34
Пример использования тега из JSTL <table border="1"> <c: for. Each var="customer" items="${customers}"> <tr> <td><c: out value="${customer. last. Name}"/></td> <td><c: out value="${customer. phone. Home}" default="no home phone specified"/></td> 35
Пример использования тега из JSTL <td> <c: out value="${customer. phone. Cell}" escape. Xml="false"> <font color="red">no cell phone specified</font> </c: out> </td> </tr> </c: for. Each> </table> 36
Пример использования тега из JSTL <h 4><c: out> with Reader object</h 4> <% java. io. Reader reader 1 = new java. io. String. Reader("<foo>Text for a Reader!</foo>"); page. Context. set. Attribute("my. Reader 1", reader 1); java. io. Reader reader 2 = new java. io. String. Reader("<foo>Text for a Reader!</foo>"); page. Context. set. Attribute("my. Reader 2", reader 2); %> 37
Пример использования тега из JSTL Reader 1 (escape. Xml=true) : <c: out value="${my. Reader 1}"/> Reader 2 (escape. Xml=false): <c: out value="${my. Reader 2}" escape. Xml="false"/> </body> </html> 38
39
Спасибо за внимание ! ПГУПС, каф. «ИВС» Зав. кафедрой Хомоненко Анатолий Дмитриевич khomon@mail. com 2010 г. 40
12 Библиотека тегов JSP.ppt