English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
O EL suporta a maioria dos operadores aritméticos e lógicos fornecidos pelo Java:
Operador | Descriçã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 |
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.
O JSP EL suporta os objetos implícitos listados a seguir:
Objetos implícitos | Descriçã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.
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}
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 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.
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.