Лекция 19 JSTL Назначение JSTL – упростить разработку (и вид) JSP исходя из того, что не все разработчики JSP владеют Java. Кроме того, наличие на JSP.

Презентация:



Advertisements
Похожие презентации
Пользовательские действия (custom actions) в JSP. JSTL.
Advertisements

1 Java J2EE. JSP. 2 Технология Java Server Pages (JSP) Java Server Pages (JSP) обеспечивает разделение динамической и статической частей страницы, результатом.
Saint Petersburg, 2012 Java Lecture 12 JSTL. JSP -> JSTL JSP – хорошо Что делать если хотим добавить условие? Итерирование по списку и вывод каждого элемента.
XML eXtensible Markup Language 1.Пространства имён (Namespaces) 2.Язык навигации внутри XML-документа (XPath)
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
Уровень представления Apache Struts Framework Библиотека тэгов.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
Java Advanced XML Transformations 1.0 (XSLT 1.0).
Java Server Pages (JSP). JSP Позволяет веб разработчикам динамически генерировать HTML, XML - и другие веб страницы. Страницы компилируются JSP- компилятором.
XML eXtensible Markup Language 1.Язык навигации внутри XML-документа (XPath) 2.Пространства имён (Namespaces) 3.Язык трансформаций (XSLT)
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
Архитектура метаданных WWW. Язык RDF Архитектура метаданных WWW RDF.
Powerpoint Templates Page 1 Язык разметки гипертекста HTML.
Ekaterina B. Egorkina,© VEELTECH.RU Загрузка и вывод изображений Каким образом можно сохранить картинку в БД, а потом отобразить ее на странице?
Уровень представления JSP, EL-expressions, JSTLУровень представления JSP, EL-expressions, JSTL.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
XSLT-ТРАНСФОРМАЦИЯ XML- ТЕХНОЛОГИИ Лекция 4. Трансформация XML- данных Категории трансформации Структурные трансформации – трансформация одного словаря.
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Транксрипт:

Лекция 19

JSTL Назначение JSTL – упростить разработку (и вид) JSP исходя из того, что не все разработчики JSP владеют Java. Кроме того, наличие на JSP кода перегружает страницу, делая её не удобной для редактирования. JSTL предоставляет следующие возможности:

Поддержка Expression Language. Позволяет разработчику писать простые выражения внутри атрибутов тега и предоставляет прозрачный доступ к переменным в различных областях видимости. Условные переходы и циклы, основанные на тегах, а не на скриптовом языке. Простое формирование URL к различным ресурсам. Интернационализацию JSP. Взаимодействие с базами данных. Обработку XML. Обработку строк (форматирование и разбор).

Expression language JSTL вводит понятие Expression Language (EL) в JSP. EL используется для упрощения доступа к данным, хранящимся в различных областях видимости (page, request, application) и вычисления простых выражений. EL вызывается при помощи конструкции ${}. Начиная с версии спецификации JSP 2.0 / JSTL 1.1, EL является частью JSP и поддерживается безо всяких сторонних библиотек.

Доступ к данным EL идентификатор ссылается на переменную возвращаемую вызовом PageContext.findAttribute(identifier). В общем случае, переменная может быть сохранена в любой области видимости: page (PageContext), request (HttpServletRequest), session (HttpSession), application (ServletContext). В случае, если переменная не найдена, возвращается null. Также возможен доступ к параметрам запроса через предопределённый объект paramValues и к заголовкам запроса через requestHeaders.

Операторы Операторы, в EL поддерживают наиболее часто используемые манипулирования данными. Типы операторов: Стандартные операторы отношения: == (или eq), != (или neq), (или gt), = (или ge). Арифметические операторы: +, -, *, / (или div), % (или mod). Логические операторы: && (или and), || (или or), ! (или not). Оператор empty – используется для проверки переменной на null или пустое значение (термин пустое значение зависит от типа проверяемого объекта. Например, нулевая длина для строки, или нулевой размер для коллекции).

Пример1: User is guest. Пример2:... Автоматическое приведение типов EL использует набор правил для автоматического приведения типов. Например, если оператор ожидает параметр типа Integer, то значение идентификатора будет приведено к типу Integer (если это возможно).

Тэги JSTL Библиотека тэгов JSTL состоит из четырёх групп тэгов: основные тэги - core, тэги форматирования - fmt, тэги для работы с SQL – sql, тэги для обработки XML – xml. JSTL core Библиотека core содержит в себе наиболее часто используемые теги. - для обычной JSP для XML формата JSP.

Тэги общего назначения - вычисляет и выводит значение выражения. Пример: You have items. По умолчанию, конвертирует символы,,, & в их коды (например, < конвертируется в &lt). Преобразование может быть отменено, если указать false в атрибуте escapeXml. Можно также в тэге указывать значение по умолчанию для случаев, где значение вычисляемого выражения равно null.

Пример: Синтаксис: Без тела: С телом: default value

- устанавливает переменную в указанную область видимости. Пример: может также быть использован для изменений свойств объектов JavaBeans или добавлять элементы в объект java.util.Map. Синтаксис 1: Установка переменной в указанную область видимости, используя значение аттрибута Пример ${param.name}

Синтаксис 2: Установка переменной в указанную область видимости, используя тело тега: body content Пример:

Синтаксис 3: Установка свойства объекта, используя значение атрибута Здесь target – имя переменной, чье свойство должно быть изменено; property – свойство, которое должно быть изменено; value – значение, которое должно получить свойство. Синтаксис 4: Установка свойства объекта, в теле тега body content

- удаляет переменную из указанной области видимости. Пример: Синтаксис:

- перехватывает обработку исключения. Пример:... Error Синтаксис: ………………………………….

Пример: Catching the Exception I can catch the exception: The exception will be thrown inside the catch:

The exception is : ${catchException} There is an exception: ${catchException.message} В браузере получим: I can catch the exception: The exception will be thrown inside the catch:20 The exception is : java.lang.ArithmeticException: / by zero There is an exception: / by zero

Тэги условного перехода - тело тэга вычисляется только в том случае если значение выражения true. Пример: This is your first visit. Welcome to the site!

Синтаксис: Без тела: С телом: body content

(, ) – то же что и с поддержкой нескольких условий, и действия, производимого по умолчанию. Пример:

Выражение if/then/else может быть легко записано как: No records matched your selection. records matched your selection.

Синтаксис: body content ( and subtags) body content conditional block

Итераторы - выполняет тело тега для каждого элемента коллекции. Пример:

Пример:

Класс BookList имеет вид: package aaa; import java.util.*; public class BookList extends AbstractCollection { public ArrayList book_list; public BookList() { book_list = new ArrayList (2); book_list.add(new Book("BookTitle_01","book_01.html")); book_list.add(new Book("BookTitle_02","book_02.html")); } public Iterator iterator() { return book_list.iterator();} public int size(){return 2;} }

Класс Book имеет вид: package aaa; public class Book { public String title; public String url; public Book(String new_title, String new_url) { title = new_title; url = new_url; } public String gettitle(){return title;} public String geturl(){return url;} }

- выполняет тело тега для каждого токена в строке. Синтаксис: body content

Пример: forTokens action Family member # is

Тэги обработки URL - перенаправляет запрос на указанный URL. Пример: - добавляет на JSP содержимое указанного WEB- ресурса. Примеры:

- формирует адрес с учётом контекста приложения (request.getContextPath()). - добавляет параметр к запросу, сформированному при помощи. Пример: >Register

JSTL fmt Содержит тэги форматирования и интернационализации. - для обычной JSP для XML формата JSP.

Тэги интернационализации - устанавливает объект Locale, используемый на странице. Пример:, - устанавливают объект ResourceBundle, используемый на странице. В зависимости от установленной локали, выбирается ResourceBundle, соответствующий указанному языку, стране и региону. Действие служит для создания локализированного контекста. Если атрибут var не определен, тогда для сохранения контекста используется конфигурационная переменная javax.servlet.jsp.jstl.fmt.localizationContext

Пример: Файл resource_bundle.properties имеет вид: title=My Company welcome=Welcome! Файл resource_bundle_ru.properties имеет вид: title=Моя компания welcome=Привет! В браузере получим Моя компания Привет!

- выводил локализованное сообщение. - используется для задания параметра в теге Синтаксис: Значение параметра задано в атрибуте value Пример: Персонализация приветствия

Тэги форматирования, - форматирует числа / даты с учётом установленной локали (либо указанного шаблона). Пример: Данный код напечатает следующее: SFr – если регион fr_CH $9,876, – если регион en_US

Атрибут pattern задает шаблон для вывода. С его помощью можно указывать количество разрядов после запятой. Например, код выведет следующее: Шаблон "#,#00.0#" указывает на то, что числовое значение будет представляться минимум двумя целыми разрядами, одним дробным и каждые 3 целые разряда будут разделяться запятыми. Например, код напечатает следющее: 123,

, - устанавливает временную зону используемую для форматирования. Синтаксис: body content атрибут value, может иметь тип либо String либо java.util.TimeZone Если атрибут value не определен, тогда временной зоной по умолчанию является GMT (Greenwich Mean Time - гринвичское время).

JSTL fmt:setTimeZone Tag " /> Date in Current Zone: Change Time Zone to GMT-8 Date in Changed Zone:

- переводит строковое представление числа в объект подклассов Number. Синтаксис:

JSTL fmt:parseNumber Tag Number Parsing: Parsed Number (1) : Parsed Number (2) :

JSTL sql Используется для выполнения запросов SQL и обработки результатов запроса на JSP. -для обычной JSP для XML формата JSP.

Доступ к физическим источникам данных предоставляется через объект javax.sql.DataSource. Пример: SELECT * FROM customers WHERE country = China ORDER BY lastname

вносит изменения в базу данных. Для поддержания целостности базы данных несколько операций могут быть объединены в транзакцию путем включения в тег. Пример: UPDATE account SET Balance = Balance - ? WHERE accountNo = ? UPDATE account SET Balance = Balance + ? WHERE accountNo = ?

JSTL xml Используется для обработки данных XML на JSP. - для обычной JSP для XML формата JSP.

Теги JSTL для работы с XML базируются на XPath. Теги и позволяют трансформировать XML документы в объекты String и Reader. Доступ к ресурсу через URL осуществляется с помощью тега. Пример:

Рассмотрим пример. Пропарсим xml файл Mahendra Singh Sofware developer 25 Anismita Singh Sofware developer 23

Ravi Kant Sr. Sofware developer 27 Suman Sr. Graphics Designer 25

Jsp страница будет иметь вид Example of x:parse tag Given Xml Document Some operations on this file

Expression Result $doc//*

$doc/org/* $doc/org/company/*

$doc/org/company/emp $doc/org/company[last()]

Рассмотрим подробнее. Данный тег имеет следующий вид Таким образом для разбора xml файла используются XPath выражения. Язык XML Path (XPath) является набором синтаксических и семантических правил для ссылок на части XML-документов. XPath предназначен для использования другими спецификациями, такими как XSL Transformations (XSLT) и XML Pointer Language (XPointer).

Рассмотрим некоторые XPath выражения Есть два типа маршрутов местоположения: относительный и абсолютный. Относительный маршрут местоположения - это последовательность местоположений, разделенных /. Например: list/item[currentPrice

Абсолютный маршрут местоположения состоит из /, за которым, возможно, следует относительный маршрут местоположения, здесь / ссылается на корневой узел. Абсолютный маршрут местоположения является относительным маршрутом местоположения, вычисляемым в контексте корневого узла, например: /list/item[currentPrice

@ используется для ссылки на атрибуты. Например, маршрут идентифицирует атрибут currency. идентифицирует элементы item с атрибутом private * используется для ссылки на все элементы, которые являются дочерними для узла используется для ссылки на все атрибуты узла контекста. [] могут также использоваться для ссылки на определенный элемент в упорядоченной последовательности. Например, list/item[2] ссылается на второй элемент item.

// используется для ссылки на все дочерние элементы узла контекста. Например, //item ссылается на все элементы item, а //list/item ссылается на все элементы item, которые имеют родителем list. используется для ссылки на сам узел контекста. Например,. выбирает узел контекста, а.//item ссылается на все элементы item, которые являются дочерними для узла контекста... используется для ссылки на родительский узел узла контекста. Например,../item ссылается на первый элемент item

XPath также допускает математические выражения и имеет библиотеку функций. Таким образом в браузере получим следующее: