JSP Expression Language (EL) hace que el acceso a los datos almacenados en JavaBeans sea muy sencillo. JSP EL se puede utilizar para crear expresiones tanto aritméticas como lógicas. En las expresiones JSP EL se pueden utilizar números enteros, números de punto flotante, cadenas, constantes verdadero, falso y nulo.
Normalmente, cuando necesita especificar un valor de atributo en una etiqueta JSP, simplemente usa una cadena:
<jsp:setProperty nombre="caja" propiedad="perímetro" valor="100"/>
JSP EL le permite especificar una expresión para representar un valor de propiedad. Una sintaxis de expresión simple es la siguiente:
${expr}
Entre ellos,
exprésSe refiere a una expresión. Los operadores comunes en JSP EL son
"."y
"[]". Estos dos operadores le permiten acceder a una variedad de
JavaBean Propiedades.
Por ejemplo, lo anterior
<jsp:establecerPropiedad>Las etiquetas se pueden reescribir usando el lenguaje de expresión de la siguiente manera:
<jsp:setProperty nombre="caja" propiedad="perímetro" valor="${2*box.width+2*box.height}"/>
Cuando el compilador JSP ve "
${}"Después de formatear, genera código para evaluar la expresión y producir un sustituto para el valor de la expresión.
También puedes utilizar lenguajes de expresión en el texto de la plantilla de la etiqueta. Por ejemplo
<jsp:texto>La etiqueta simplemente inserta el texto de su cuerpo en la salida JSP:
<jsp:text><h1>¡Hola JSP!</h1></jsp:text>
ahora, en
<jsp:texto>Utilice una expresión en el cuerpo de la etiqueta, como esta:
<jsp:text>El perímetro del cuadro es: ${2*box.width + 2*box.height}</jsp:text>
Los paréntesis se pueden utilizar para organizar subexpresiones en expresiones EL. Por ejemplo
${(1 + 2) * 3}es igual a 9, pero
${1 + (2 * 3)}Igual a 7.
Para deshabilitar la evaluación de expresiones EL, use
páginaLas instrucciones
esELIgnoradoEl valor del atributo se establece en
verdadero:
<%@ la página está ELIgnored="true|false" %>
De esta forma, se ignoran las expresiones EL. Si se establece en
FALSO, el contenedor evaluará la expresión EL.
Las expresiones EL admiten la mayoría de los operadores lógicos y aritméticos proporcionados por Java:
Operador | describir |
---|---|
. | Visita unFrijolAtributo o una entrada de mapa |
[] | Acceder a elementos de una matriz o lista enlazada |
( ) | Organizar una subexpresión para cambiar la precedencia |
+ | agregar |
- | menos o negativo |
* | llevar |
/ o div | eliminar |
% o modificación | toma un molde |
== o ecuación | Prueba de igualdad |
!= o ne | Prueba si es desigual |
< o lt | Pruebe si es menos de |
> o gt | Pruebe si es mayor que |
<= o le | Pruebe si es menor o igual a |
>= orge | Pruebe si es mayor o igual a |
&& o y | Prueba lógica Y |
|| o o | Prueba lógica O |
! O no | negación de prueba |
vacío | Prueba de valor nulo |
JSP EL le permite utilizar funciones en expresiones. Estas funciones deben definirse en la biblioteca de etiquetas personalizadas. La sintaxis para usar la función es la siguiente:
${ns:func(param1, param2, ...)}
ns se refiere al espacio de nombres,
funciónSe refiere al nombre de la función,
parámetro1Se refiere al primer parámetro,
parámetro2 se refiere al segundo parámetro, y así sucesivamente. Por ejemplo, hay una función
fn: longitud, definido en la biblioteca JSTL, se puede utilizar para obtener la longitud de una cadena de la siguiente manera:
${fn:length("Obtener mi longitud")}
Para usar funciones de cualquier biblioteca de etiquetas, debe instalar estas bibliotecas en el servidor y luego usar
<etiqueta>Las etiquetas incluyen estas bibliotecas en archivos JSP.
JSP EL admite los objetos implícitos enumerados en la siguiente tabla:
Objeto oculto | describir |
---|---|
alcance de la página | alcance de la página |
solicitudAlcance | alcance de la solicitud |
alcance de la sesión | alcance de la sesión |
aplicaciónAlcance | alcance de la aplicación |
parámetro | Parámetros del objeto Solicitud, cadena |
valoresparam | Parámetros del objeto Solicitud, colección de cadenas |
encabezamiento | Encabezado HTTP, cadena |
valores de encabezado | Encabezado HTTP, colección de cadenas |
parámetroinit | Parámetros de inicialización de contexto |
galletas | Valor de la cookie |
contexto de página | pageContext de la página actual |
Puede utilizar estos objetos en expresiones como variables. A continuación se darán varios ejemplos para comprender mejor este concepto.
contexto de páginaEl objeto está en JSP.
contexto de páginaReferencia de objeto. Aprobar
contexto de páginaObjeto al que puedes acceder
pedidoObjeto. Por ejemplo, visita
pedidoLa cadena de consulta pasada por el objeto, así:
${pageContext.request.queryString}
alcance de la página,
solicitudAlcance,
alcance de la sesión,
aplicaciónAlcanceLas variables se utilizan para acceder a variables almacenadas en varios niveles de alcance.
Por ejemplo, si necesita acceder explícitamente al
aplicaciónAlcanceEn capas
cajaSe puede acceder a las variables así:
aplicaciónScope.box.
parámetroy
valoresparamObjeto utilizado para acceder a los valores de los parámetros, mediante el uso
solicitud.getParameterMétodos y
solicitud.getParameterValuesMétodo.
Por ejemplo, acceder a un archivo llamado
orden parámetros, puedes usar expresiones como esta:
${param.order}, o
${param["orden"]}.
El siguiente ejemplo muestra cómo acceder a la solicitud en
nombre de usuarioParámetros:
<%@ page import="java.io.*,java.util.*" %><% String title = "Accediendo al parámetro de solicitud"; %><html><head><title><% out.print(title) ); %></título></cabeza><cuerpo><centro><h1><% out.print(título %></h1></centro><div); align="center"><p>${param["username"]}</p></div></body></html>
El objeto param devuelve una sola cadena, mientras que
valoresparamEl objeto devuelve una matriz de cadenas.
encabezamientoy
valores de encabezadoEl objeto se utiliza para acceder al encabezado de información, mediante el uso
solicitud.getHeaderMétodos y
solicitud.getHeadersMétodo.
Por ejemplo, para acceder a un archivo llamado
agente de usuario encabezado de información, puedes usar la expresión como esta:
${header.usuario-agente}, o
${encabezado["agente-usuario"]}.
El siguiente ejemplo muestra cómo acceder
agente de usuarioEncabezado de información:
<%@ page import="java.io.*,java.util.*" %><% String title = "Ejemplo de agente de usuario"; ); %></título></cabeza><cuerpo><centro><h1><% out.print(título %></h1></centro><div); align="center"><p>${header["user-agent"]}</p></div></body></html>
Los resultados de ejecución son los siguientes:
El objeto de encabezado devuelve un valor único, mientras que headerValues devuelve una matriz de cadenas.