Лучшее руководство по JSP Expression Language в 2024 году. В этом руководстве вы можете изучить Простой синтаксис,EL основной оператор,Функция JSP EL,JSP EL неявные объекты,объекты PageContext,Область применения Объекты,Param и paramValues объекты,объекты заголовка и HeaderValues,
JSP Expression Language (EL), так что данные доступа, хранящиеся в JavaBean становится очень простым. JSP EL либо могут быть использованы для создания арифметическое выражение также может быть использован для создания логического выражения. В JSP EL выражения могут использовать целое число, число с плавающей точкой, строки, константы истина, ложь, есть нуль.
Как правило, когда необходимо указать значение свойства, когда теги JSP, просто используйте строку:
<jsp:setProperty name="box" property="perimeter" value="100"/>
выражение JSP EL позволяет определить значение свойства. Простой синтаксис выражение выглядит следующим образом:
${expr}
Отличающийся тем, что выражение относится к выражению. В родовом оператора JSP EL является "." И "[]." Эти два оператора позволяют получить доступ широкий спектр встроенных свойств JSP бина через объект.
Например, указанное <JSP: SetProperty> тег может быть переписан с использованием языка выражений следующим образом:
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
Когда компилятор JSP, чтобы увидеть "$ {}" после того, как формат, он генерирует код для вычисления выражения, и генерирует заменитель, чтобы заменить значение выражения в свойстве.
Вы можете также использовать язык выражений на вкладке Шаблон текста. Например, <JSP: текст> Тег просто вставляется в текстовое тело JSP выход:
<jsp:text> <h1>Hello JSP!</h1> </jsp:text>
Теперь, в: используя выражение <Jsp текст> тег в теле, как это:
<jsp:text> Box Perimeter is: ${2*box.width + 2*box.height} </jsp:text>
EL выражения в скобках могут быть использованы для организации подвыражения. Например, $ {(1 + 2) * 3 равняется 9}, но $ {1 + (2 * 3)} = 7.
Хотите отключить оценку выражений EL, то вам необходимо использовать директиву страницы атрибут isELIgnored истина:
<%@ page isELIgnored ="true|false" %>
Таким образом, выражения EL игнорируются. Если установлено значение ложно, то контейнер будет рассчитываться выражения EL.
Выражение поддержки EL предоставляется большинством арифметических и логических операторов Java:
операторы | описание |
---|---|
, | Bean доступ к свойству или запись сопоставления |
[] | Доступ массив или список элементов |
() | Организовать подвыражения, чтобы изменить приоритет |
+ | плюс |
- | Сохранить или отрицательный |
* | Умножение |
/ Или DIV | за исключением |
% Или мод | Модульное |
== Или экв | Тест на равенство |
! = Или пе | Тест ли неравное |
<Или л | Проверьте, работают ли меньше |
> Или GT | Тест больше |
<= Ор ле | Проверить, является ли меньше или равно |
> = Или GE | Проверьте, работают ли больше или равно |
&& Или и | Тест логика и |
|| Или или | Тест логики или |
! Или нет | Тест отрицается |
пустой | Проверьте, работают ли нуль |
Функция JSP EL позволяет использовать в выражениях. Эти функции должны быть определены в библиотеке пользовательских тегов. Используйте синтаксис функции выглядит следующим образом:
${ns:func(param1, param2, ru.)}
нс относится к пространству имен (пространства имен), функ это имя функции, param1 относится к первому аргументу, param2 относится ко второму аргументу, и так далее. Например, существует функция п: длина, определенная в библиотеке JSTL может быть, как это, чтобы получить длину строки:
${fn:length("Get my length")}
Для того, чтобы использовать любую из функций библиотеки тегов, вы будете нуждаться в эти библиотеки, установленные на сервере, а затем использовать тег <TagLib> содержит библиотеки в файле JSP.
Поддержка JSP EL неявные объекты перечислены в следующей таблице:
Скрытые объекты | описание |
---|---|
PageScope | Область страницы |
requestScope | запрос сфера |
sessionScope | сфера сессии |
applicationScope | Область применения |
парам | Строка параметров объекта запроса |
paramValues | Параметр объекта запроса, сбор строка |
заголовок | Строка заголовка HTTP |
HeaderValues | заголовок HTTP, коллекция строка |
initParam | Параметры инициализации контекста |
печенье | значение Cookie |
PageContext | Текущая страница PageContext |
Вы можете использовать эти объекты в выражении, как, используя ту же переменную. Далее приведу несколько примеров, чтобы лучше понять эту концепцию.
PageContext объект является ссылкой на объект JSP PageContext. По объекту PageContext, вы можете получить доступ к объекту запроса. Например, чтобы получить доступ к объекту запроса передается в строке запроса, например:
${pageContext.request.queryString}
PageScope, requestScope, sessionScope, переменная applicationScope используется для получения доступа к данным, хранящимся в каждой переменной уровнях областей видимости.
Например, если вам нужно явно открыть окно applicationScope переменной слой, к нему можно обращаться: applicationScope.box.
парам и paramValues объект используется для доступа к значениям параметров, используя методы и request.getParameterValues метод request.getParameter.
Например, доступ к имени параметра порядка, вы можете использовать это выражение: $ {param.order} или $ {параметр [ "порядок"]}.
Следующие примеры показывают, как получить доступ к параметру запроса имени пользователя:
<%@ page import="java.io.*,java.util.*" %> <% String title = "Accessing Request Param"; %> <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 одну строку, объект paramValues возвращается массив строк.
Заголовок и объект HeaderValues используется для доступа к информации заголовка, используя методы и метод request.getHeaders request.getHeader.
Например, чтобы получить доступ к информации, называется заголовок агента пользователя, вы можете использовать это выражение: $ {header.user-агента} или $ {заголовок [ "User-Agent"]}.
Следующие примеры показывают, как получить доступ к заголовку User-Agent:
<%@ page import="java.io.*,java.util.*" %> <% String title = "User Agent Example"; %> <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 возвращает массив строк.