English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linguagem de Expressão JSP

A linguagem de expressão do JSP (EL) simplifica muito o acesso aos dados armazenados em JavaBean. O JSP EL pode ser usado para criar expressões aritméticas e lógicas. Dentro das expressões do JSP EL, você pode usar números inteiros, números de ponto flutuante, strings, constantes true, false e null.

uma sintaxe simples

typicalmente, quando você precisa especificar um valor de propriedade em um rótulo JSP, é suficiente usar uma string simplesmente:

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

O JSP EL permite que você especifique uma expressão para representar o valor da propriedade. A sintaxe de expressão simples é a seguinte:

${expr}

Neste caso, expr se refere à expressão. No JSP EL, os operadores comuns são . e {} . Esses operadores permitem que você acesse várias propriedades de JavaBean por meio de objetos JSP incorporados.

Por exemplo, o rótulo <jsp:setProperty> acima pode ser reescrito na forma a seguir usando a linguagem de expressão:

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

Quando o compilador JSP vê o formato "${" em uma propriedade, ele gera código para calcular essa expressão e cria um substituto para o valor da expressão.

Você também pode usar a linguagem de expressão dentro do texto do rótulo. Por exemplo, a etiqueta <jsp:text> simplesmente insere o texto do corpo na saída do JSP:

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

Agora, use expressões dentro do corpo da etiqueta <jsp:text> assim:

<jsp:text>
Perímetro do Box é: ${2*box.width + 2*box.height}
</jsp:text>

Pode usar parênteses em expressões EL para organizar subexpressões. Por exemplo, ${(1 + 2) * 3igual a9mas ${1 + (2 * 3igual a7.

Para desativar a avaliação de expressões EL, é necessário usar a instrução page para definir o valor da propriedade isELIgnored como true:

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

Dessa forma, a expressão EL será ignorada. Se definido como false, o container calculará a expressão EL.

Operadores básicos no EL

O EL suporta a maioria dos operadores aritméticos e lógicos fornecidos pelo Java:

OperadorDescrição
. Acessar uma propriedade de Bean ou uma entrada de mapeamento
[] Acessar um elemento de um array ou uma lista de链条
( ) Organizar uma subexpressão para alterar a precedência
+ Adição
- Subtração ou negativo
* Multiplicação
/ ou div Divisão
% ou mod Resto
== ou eq Testa se é igual a
!= ou ne Testa se é diferente de
< ou lt Testa se é menor que
> ou gt Testa se é maior que
<= ou le Testa se é menor ou igual a
>= ou ge Testa se é maior ou igual a
&& ou and Testa lógico e
|| ou ou Testa lógico ou
! ou not Testa negação
empty Testa se é nulo

Funções no JSP EL

O JSP EL permite que você use funções em expressões. Essas funções devem ser definidas em bibliotecas de etiquetas personalizadas. A sintaxe de uso das funções é a seguinte:

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

ns refere-se ao espaço de nomes (namespace), func ao nome da função, param1Refere-se ao primeiro parâmetro, param2Refere-se ao segundo parâmetro, e assim por diante. Por exemplo, há uma função fn:length, definida na biblioteca JSTL, que pode ser usada da seguinte forma para obter o comprimento de uma string:

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

Para usar quaisquer funções de bibliotecas de etiquetas, você precisa instalar essas bibliotecas no servidor e, em seguida, usar a etiqueta <taglib> em arquivos JSP para incluir essas bibliotecas.

Objetos implícitos do JSP EL

O JSP EL suporta os objetos implícitos listados a seguir:

Objetos implícitosDescrição
pageScope Escopo page
requestScope Escopo request
sessionScope Escopo session
applicationScope Escopo application
param Parâmetros do objeto Request, string
paramValues Parâmetros do objeto Request, conjunto de strings
header Cabeçalhos de informações HTTP, string
headerValues Cabeçalhos de informações HTTP, conjunto de strings
initParam Parâmetros de inicialização do contexto
cookie Valor do Cookie
pageContext O pageContext da página atual

Você pode usar esses objetos em expressões, como se fossem variáveis. A seguir, alguns exemplos serão dados para melhor entender esse conceito.

Objeto pageContext

O objeto pageContext é uma referência ao objeto pageContext no JSP. Através do objeto pageContext, você pode acessar o objeto request. Por exemplo, para acessar a string de consulta passada no objeto request, você pode fazer assim:

${pageContext.request.queryString}

Objeto Scope

As variáveis pageScope, requestScope, sessionScope e applicationScope são usadas para acessar variáveis armazenadas em diferentes níveis de escopo.

Por exemplo, se você precisar acessar explicitamente a variável box no escopo applicationScope, você pode fazer assim: applicationScope.box.

Os objetos param e paramValues

Os objetos param e paramValues são usados para acessar valores de parâmetros, através dos métodos request.getParameter e request.getParameterValues.

Por exemplo, para acessar um parâmetro chamado order, você pode usar a expressão: ${param.order} ou ${param["order"]}.

O próximo exemplo ilustra como acessar o parâmetro username no request:

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

O objeto param retorna uma string única, enquanto o objeto paramValues retorna um array de strings.

header e headerValues objetos

Os objetos header e headerValues são usados para acessar cabeçalhos de informações, através dos métodos request.getHeader e request.getHeaders.

Por exemplo, para acessar um cabeçalho chamado user-As informações de cabeçalho do agente podem ser usadas assim: ${header.user-agent} ou ${header["user-agent"]}。

O próximo exemplo demonstra como acessar o user-Cabeçalho de informações do agente:

<%@ page import="java.io.*,java.util.*" %>
<%
    String title = "Exemplo de User Agent";
%>
<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>

O resultado da execução é o seguinte:

O objeto header retorna um único valor, enquanto headerValues retorna um array de strings.