JSP - Lenguaje de expresión (EL)

JSP Expression Language (EL) permite acceder fácilmente a los datos de la aplicación almacenados en componentes JavaBeans. JSP EL te permite crear expresiones tanto(a) aritmética y (b)lógico. Dentro de una expresión JSP EL, puede utilizarintegers, floating point numbers, strings, the built-in constants true and false para valores booleanos y nulo.

Sintaxis simple

Normalmente, cuando especifica un valor de atributo en una etiqueta JSP, simplemente usa una cadena. Por ejemplo

<jsp:setProperty name = "box" property = "perimeter" value = "100"/>

JSP EL le permite especificar una expresión para cualquiera de estos valores de atributo. Una sintaxis simple para JSP EL es la siguiente:

${expr}

aquí exprespecifica la expresión en sí. Los operadores más comunes en JSP EL son. y []. Estos dos operadores le permiten acceder a varios atributos de Java Beans y objetos JSP integrados.

Por ejemplo, la sintaxis anterior <jsp:setProperty> La etiqueta se puede escribir con una expresión como -

<jsp:setProperty name = "box" property = "perimeter" 
   value = "${2*box.width+2*box.height}"/>

Cuando el compilador JSP ve el ${} forma en un atributo, genera código para evaluar la expresión y sustituye el valor de expresson.

También puede utilizar las expresiones JSP EL dentro del texto de la plantilla para una etiqueta. Por ejemplo, el<jsp:text>etiqueta simplemente inserta su contenido dentro del cuerpo de una JSP. El seguimiento<jsp:text> inserciones de declaración <h1>Hello JSP!</h1> en la salida JSP -

<jsp:text>
   <h1>Hello JSP!</h1>
</jsp:text>

Ahora puede incluir una expresión JSP EL en el cuerpo de un <jsp:text> etiqueta (o cualquier otra etiqueta) con la misma ${}sintaxis que utiliza para los atributos. Por ejemplo

<jsp:text>
   Box Perimeter is: ${2*box.width + 2*box.height}
</jsp:text>

Las expresiones EL pueden utilizar paréntesis para agrupar subexpresiones. Por ejemplo,${(1 + 2) * 3} equals 9, but ${1 + (2 * 3)} equals 7.

Para desactivar la evaluación de expresiones EL, especificamos el isELIgnored atributo de la directiva de la página como se muestra a continuación:

<%@ page isELIgnored = "true|false" %>

Los valores válidos de este atributo son verdadero y falso. Si es cierto, las expresiones EL se ignoran cuando aparecen en texto estático o atributos de etiqueta. Si es falso, el contenedor evalúa las expresiones EL.

Operadores básicos en EL

JSP Expression Language (EL) admite la mayoría de los operadores lógicos y aritméticos admitidos por Java. La siguiente tabla enumera los operadores más utilizados:

S.No. Operador y descripción
1

.

Acceder a una propiedad de bean o entrada de mapa

2

[]

Acceder a una matriz o elemento de lista

3

( )

Agrupar una subexpresión para cambiar el orden de evaluación

4

+

Adición

5

-

Resta o negación de un valor

6

*

Multiplicación

7

/ or div

División

8

% or mod

Módulo (resto)

9

== or eq

Prueba de igualdad

10

!= or ne

Prueba de desigualdad

11

< or lt

Prueba por menos de

12

> or gt

Prueba para mayor que

13

<= or le

Prueba por menor o igual

14

>= or ge

Prueba para mayor o igual que

15

&& or and

Prueba de AND lógico

dieciséis

|| or or

Prueba de OR lógico

17

! or not

Complemento booleano unario

18

empty

Prueba de valores de variable vacíos

Funciones en JSP EL

JSP EL también le permite usar funciones en expresiones. Estas funciones deben definirse en las bibliotecas de etiquetas personalizadas. El uso de una función tiene la siguiente sintaxis:

${ns:func(param1, param2, ...)}

Dónde ns es el espacio de nombres de la función, func es el nombre de la función y param1es el primer valor de parámetro. Por ejemplo, la funciónfn:length, que forma parte de la biblioteca JSTL. Esta función se puede utilizar de la siguiente manera para obtener la longitud de una cadena.

${fn:length("Get my length")}

Para usar una función de cualquier biblioteca de etiquetas (estándar o personalizada), debe instalar esa biblioteca en su servidor y debe incluir la biblioteca en su JSP usando el <taglib> directiva como se explica en el capítulo JSTL.

Objetos implícitos JSP EL

El lenguaje de expresión JSP admite los siguientes objetos implícitos:

S. No Objeto implícito y descripción
1

pageScope

Variables de ámbito del ámbito de la página

2

requestScope

Variables de alcance del alcance de la solicitud

3

sessionScope

Variables de alcance del alcance de la sesión

4

applicationScope

Variables de ámbito del ámbito de la aplicación

5

param

Solicitar parámetros como cadenas

6

paramValues

Solicitar parámetros como colecciones de cadenas

7

header

Encabezados de solicitud HTTP como cadenas

8

headerValues

Encabezados de solicitud HTTP como colecciones de cadenas

9

initParam

Parámetros de inicialización de contexto

10

cookie

Valores de las cookies

11

pageContext

El objeto JSP PageContext para la página actual

Puede utilizar estos objetos en una expresión como si fueran variables. Los ejemplos que siguen le ayudarán a comprender los conceptos:

El objeto pageContext

El objeto pageContext le da acceso al objeto JSP pageContext. A través del objeto pageContext, puede acceder al objeto de solicitud. Por ejemplo, para acceder a la cadena de consulta entrante para una solicitud, puede usar la siguiente expresión:

${pageContext.request.queryString}

Los objetos de alcance

los pageScope, requestScope, sessionScopey applicationScope Las variables proporcionan acceso a las variables almacenadas en cada nivel de alcance.

Por ejemplo, si necesita acceder explícitamente a la variable box en el ámbito de la aplicación, puede acceder a ella a través de la variable applicationScope como applicationScope.box.

Los objetos param y paramValues

Los objetos param y paramValues ​​le dan acceso a los valores de los parámetros normalmente disponibles a través del request.getParameter y request.getParameterValues métodos.

Por ejemplo, para acceder a un parámetro llamado orden, use la expresión ${param.order} o ${param["order"]}.

A continuación se muestra el ejemplo para acceder a un parámetro de solicitud llamado nombre de usuario:

<%@ 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>

El objeto param devuelve valores de cadena única, mientras que el objeto paramValues ​​devuelve matrices de cadenas.

header y headerValues ​​Objects

Los objetos header y headerValues ​​le dan acceso a los valores de encabezado normalmente disponibles a través del request.getHeader y el request.getHeaders métodos.

Por ejemplo, para acceder a un encabezado llamado user-agent, use la expresión ${header.user-agent} o ${header["user-agent"]}.

A continuación se muestra el ejemplo para acceder a un parámetro de encabezado llamado 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>

La salida será similar a la siguiente:

User Agent Example

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPNTDF; .NET4.0C; InfoPath.2)

El objeto de encabezado devuelve valores de cadena única, mientras que el objeto headerValues ​​devuelve matrices de cadenas.