Expression language

Содержание

Слайд 2

Expression Language JSR 245 Скриптовый язык доступ к Java компонентам более

Expression Language

JSR 245
Скриптовый язык
доступ к Java компонентам
более

наглядный, чем с помощью действий
вычисления выражений
имеет свой синтаксис
Составная часть JSP (c JSP 2.1)

Kolesnikov D.O. SED KNURE

Слайд 3

Синтаксис EL Общий вид: ${EL expression} Выражение может включать: операторы EL

Синтаксис EL

Общий вид: ${EL expression}
Выражение может включать:
операторы EL / литералы

арифиметические выражения
конструкции доступа к полям атрибутов
конструкции доступа к элементам контейнеров
массивы / списки / карты
неявные объекты
вызов функций (стандартные/user-defined)

Kolesnikov D.O. SED KNURE

Слайд 4

Литералы Литералы - это константы. В выражениях EL могут быть использованы

Литералы

Литералы - это константы.
В выражениях EL могут быть использованы следующие литералы:

Boolean: true / false
Integer: 43 / 0
Double: 443.11E3 / 443.11
String: 'str' / "str"
экранирование в строках: \' \" \\
Нул-тип: null

Kolesnikov D.O. SED KNURE

Слайд 5

Доступ к полям бинов user.getLogin() ${user.login} ~ ${user["login"]} ~ ${user['login']} Поиск

Доступ к полям бинов

user.getLogin()
${user.login} ~ ${user["login"]} ~ ${user['login']}
Поиск атрибута с именем

user:
page request session application
атрибут не найден - вывода нет
атрибут найден
вызов метода getLogin и приведение к String
вывод результата

Kolesnikov D.O. SED KNURE

Слайд 6

Доступ к элементам Массив: ${ar['1']} ~ ${ar["1"] ${ar[index-as-attribute]} Список: ${list['1']} ~

Доступ к элементам

Массив: ${ar['1']} ~ ${ar["1"]
${ar[index-as-attribute]}
Список: ${list['1']} ~ ${list["1"]
${list[name-of-index-attribute]}
Карта: ${map['key']} ~

${map["key"]} ~ ${map.key}
${map[name-of-key-as-attribute]}
key – строка.

Kolesnikov D.O. SED KNURE

Слайд 7

Операторы [] . Выражение expr-a.identifier-b эквивалентно expr-a["identifier-b"] При вызове функций (см.

Операторы [] .

Выражение expr-a.identifier-b
эквивалентно expr-a["identifier-b"]
При вызове функций (см. последний слайд)
expr-a.identifier-b(params)
expra["identifier-b"](params)

Kolesnikov D.O.

SED KNURE
Слайд 8

Контейнеры атрибутов Неявные объекты, тип Map pageScope requestScope sessionScope applicationScope Определены

Контейнеры атрибутов

Неявные объекты, тип Map
pageScope requestScope
sessionScope applicationScope
Определены для использования внутри выражений.
Поиск

атрибута user только в области session: ${sessionScope.user.login}

Kolesnikov D.O. SED KNURE

Слайд 9

Неявные объекты Контейнеры, имеют тип Map Контейнер элементы контейнера paramValues header

Неявные объекты

Контейнеры, имеют тип Map
Контейнер элементы контейнера
paramValues <имя парам., массив

значений> header <имя заголовка, значение> headerValues <имя заг., массив значений> cookie <имя cookie, объект Cookie> initParam <имя парам. контекста, значение>
массив значений – массив строк

Kolesnikov D.O. SED KNURE

Слайд 10

Логические операции && and ===> И по краткой схеме || or

Логические операции

&& and ===> И по краткой схеме || or ===> ИЛИ по краткой

схеме ! not ===> ОТРИЦАНИЕ Оба операнда приводятся к Boolean.

Kolesnikov D.O. SED KNURE

Слайд 11

Оператор empty Проверяет на пустоту объект. Пример: ${empty x} Возвращает true

Оператор empty

Проверяет на пустоту объект. Пример: ${empty x} Возвращает true если x: 1) null 2) строка

нулевой длины 3) массив длиной 0 4) пустые Map или Collection Во всех других случаях возвращает false

Kolesnikov D.O. SED KNURE

Слайд 12

Операции сравнения == eq ===> равно != ne ===> не равно

Операции сравнения

== eq ===> равно != ne ===> не равно Для сравнения используется метод equals. < lt ===> меньше > gt

===> больше <= le ===> меньше или равно >= ge ===> больше или равно Для сравнения используется метод compareTo. Если один из операндов или оба равны null, то результат операций false, кроме ==/eq: null == null ==> true null eq null ==> true

Kolesnikov D.O. SED KNURE

Слайд 13

Унарный минус Меняет знак числа на противоположный. Пример: ${-4} Если операнд

Унарный минус

Меняет знак числа на противоположный. Пример: ${-4} Если операнд null, результат 0 Замечание: операция

унарный + в EL не определена.

Kolesnikov D.O. SED KNURE

Слайд 14

Условный оператор выбора Вид: A ? B : C Значение A

Условный оператор выбора

Вид: A ? B : C Значение A ===> Результат
true ===>

B false ===> C

Kolesnikov D.O. SED KNURE

Слайд 15

Арифметические операции + ===> сложение - ===> вычитание * ===> умножение

Арифметические операции

+ ===> сложение - ===> вычитание * ===> умножение / div ===> деление % mod ===> остаток от деления Если один из операндов

null, вместо него будет подставлен 0. Пример: ${2+3*4}

Kolesnikov D.O. SED KNURE

Слайд 16

Определение функций Определить публичный статический метод в некотором классе. В TLD

Определение функций

Определить публичный статический метод в некотором классе.
В TLD

библиотеки определить имя функции и ее сигнатуру по сигнатуре метода.
Связать функцию с классом, который ее реализует.
На JSP странице подключить библиотеку, вызывать функцию.

Kolesnikov D.O. SED KNURE