Язык выражений JSP (EL) упрощает доступ к данным, хранящимся в JavaBeans. JSP EL можно использовать для создания как арифметических, так и логических выражений. В выражениях JSP EL можно использовать целые числа, числа с плавающей запятой, строки, константы true, false и null.
Обычно, когда вам нужно указать значение атрибута в теге JSP, вы просто используете строку:
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSP EL позволяет вам указать выражение для представления значения свойства. Простой синтаксис выражения следующий:
${выражение}
Среди них,
выражениеотносится к выражению. Обычными операторами в JSP EL являются
"."и
"[]". Эти два оператора позволяют получить доступ к множеству
JavaBeans Свойства.
Например, приведенное выше
<jsp:setProperty>Теги можно переписать с использованием языка выражений следующим образом:
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
Когда компилятор JSP видит "
${}«После форматирования он генерирует код для оценки выражения и создания замены значения выражения.
Вы также можете использовать языки выражений в тексте шаблона этикетки. Например
<jsp:текст>Тег просто вставляет текст из своего тела в вывод JSP:
<jsp:text><h1>Привет, JSP!</h1></jsp:text>
сейчас, в
<jsp:текст>Используйте выражение в теле тега, например:
<jsp:text>Периметр коробки: ${2*box.width + 2*box.height</jsp:text>
Круглые скобки можно использовать для организации подвыражений в выражениях EL. Например
${(1 + 2) * 3}равно 9, но
${1 + (2 * 3)}Равен 7.
Чтобы отключить оценку выражений EL, используйте
страницаИнструкции будут
isELIигнорируетсяЗначение атрибута установлено на
истинный:
<%@ страница isELIgnored ="true|false" %>
Таким образом, выражения EL игнорируются. Если установлено значение
ЛОЖЬ, контейнер оценит выражение EL.
Выражения EL поддерживают большинство арифметических и логических операторов, предоставляемых Java:
Оператор | описывать |
---|---|
. | ПосетитеФасольАтрибут или запись на карте |
[] | Доступ к элементам массива или связанного списка |
( ) | Организация подвыражения для изменения приоритета |
+ | добавлять |
- | минус или отрицательный |
* | брать |
/ или div | удалять |
% или мод. | Возьмите форму |
== или уравнение | Тест на равенство |
!= или нет | Проверьте, не равно ли |
< или лт | Проверьте, меньше ли |
> или GT | Проверьте, больше ли |
<= или ле | Проверьте, меньше ли или равно |
>= Ордж | Проверьте, больше или равно |
&& или и | Проверка логического И |
|| или или | Проверка логического ИЛИ |
! или нет | отрицание теста |
пустой | Проверка на нулевое значение |
JSP EL позволяет использовать функции в выражениях. Эти функции должны быть определены в библиотеке пользовательских тегов. Синтаксис использования функции следующий:
${ns:func(параметр1, параметр2, ...)}
ns относится к пространству имен,
функцияОтносится к имени функции,
параметр1Относится к первому параметру,
параметр2 относится ко второму параметру и так далее. Например, есть функция
фн: длина, определенный в библиотеке JSTL, можно использовать для получения длины строки следующим образом:
${fn:length("Узнайте мою длину")}
Чтобы использовать функции из любой библиотеки тегов, вам необходимо установить эти библиотеки на сервер, а затем использовать
<taglib>Теги включают эти библиотеки в файлы JSP.
JSP EL поддерживает неявные объекты, перечисленные в следующей таблице:
Поиск предметов | описывать |
---|---|
область видимости страницы | область страницы |
область запроса | объем запроса |
сессияScope | область сеанса |
область применения | область применения |
параметр | Параметры объекта запроса, строка |
параметрызначения | Параметры объекта Request, коллекция строк |
заголовок | HTTP-заголовок, строка |
заголовокЗначения | HTTP-заголовок, коллекция строк |
initParam | Параметры инициализации контекста |
печенье | Значение файла cookie |
Контекст страницы | pageContext текущей страницы |
Вы можете использовать эти объекты в выражениях так же, как переменные. Далее будет приведено несколько примеров, чтобы лучше понять эту концепцию.
Контекст страницыОбъект находится в JSP
Контекст страницыСсылка на объект. Проходить
Контекст страницыОбъект, к которому вы можете получить доступ
запросОбъект. Например, посетите
запросСтрока запроса, передаваемая объектом, выглядит следующим образом:
${pageContext.request.queryString}
область видимости страницы,
область запроса,
сессияScope,
область примененияПеременные используются для доступа к переменным, хранящимся на различных уровнях области видимости.
Например, если вам нужно явно получить доступ к
область примененияМногослойный
коробкаДоступ к переменным можно получить следующим образом:
applicationScope.box.
параметри
параметрызначенияОбъект, используемый для доступа к значениям параметров с помощью
request.getParameterМетоды и
request.getParameterValuesМетод.
Например, доступ к файлу с именем
заказпараметры, вы можете использовать такие выражения:
${param.order}, или
${парам["заказ"]}.
В следующем примере показано, как получить доступ к запросу в
имя пользователяПараметры:
<%@ page import="java.io.*,java.util.*" %><% String title = "Доступ к параметру запроса" %><html><head><title><% out.print(title ); %></title></head><body><center><h1><% out.print(title); %></h1></center><div; align="center"><p>${param["username"]</p></div></body></html>
Объект param возвращает одну строку, а
параметрызначенияObject возвращает массив строк.
заголовоки
заголовокЗначенияОбъект используется для доступа к заголовку информации с помощью
request.getHeaderМетоды и
request.getHeadersМетод.
Например, чтобы получить доступ к файлу с именем
пользовательский агентИнформационный заголовок, вы можете использовать выражение следующим образом:
${header.user-agent}, или
${header["пользовательский агент"]}.
В следующем примере показано, как получить доступ
пользовательский агентИнформационный заголовок:
<%@ page import="java.io.*,java.util.*" %><% String title = "Пример пользовательского агента"; %><html><head><title><% out.print(title ); %></title></head><body><center><h1><% out.print(title); %></h1></center><div; align="center"><p>${header["user-agent"]</p></div></body></html>
Результаты бега следующие:
Объект заголовка возвращает одно значение, а headerValues возвращает массив строк.