Você está na página 1de 8

Java para Desenvolvimento Web

EL Expression Language

Expression Language (Linguagem de Expresso) foi introduzido na
verso 1.0 da JSTL (JSP Standard Tag Library), antes da JSTL scriplets eram
usados para manipular dados nas aplicaes. JSTL introduziu o conceito
de Linguagem de Expresso EL, no qual simplifica o desenvolvimento
de uma pgina provendo recursos atravs de tags. As tags existentes
prov recursos de tarefas estruturados como iteraes e condies,
processamento de arquivos XML, internacionalizao e acesso a dados
usando SQL.
Expression Language introduzida na JSTL 1.0 agora faz parte da
especificao JSP 2.0.
O padro para se identificar a EL ${}, onde entre as chaves
estar a expresso. possvel ignorar uma EL utilizando a seguinte
diretiva:
<%@ page isELIgnored ="true" %>

Uma EL apresenta resultados na camada de apresentao
introduzindo o desenvolvimento na abordagem do MVC. Com ela
possvel:
Acesso conciso a objetos armazenados em escopos;
${aluno}

Notao resumida para propriedade de Beans;
${aluno.nome}


Acesso simplificado para objetos de coleo;
${alunos[0]}

Acesso sucinto para parmetros de requisio, cookies e
outros dados de requisio.
${param.nome}
${cookie.nomeCookie.value}

Esses so os operadores possveis para utilizao de EL.

Operador Descrio
. Acesso a uma propriedade do
bean
[] Acesso a um element de um array
() Agrupamento de uma
subexpresso
? :
condition ? ifTrue : ifFalse
Condio
+ Adio
- Subtrao
* Multiplicao
/or div Diviso
% or mod M Mdulo
== or eq Igualdade
!= or ne No Igualdade
< or lt Menor que
> or gt Maior que
<= or le Menor ou igual a
>= or ge Maior ou igual a
&& or and Expresso lgica E
|| or or Expresso Lgica OU
! or not Operador Unrio de negao
empty Testa um elemento ( null, String,
array, Collection)
func(args) Chamada de Funo




Exemplo de uso de Operadores

Utilizando Scriplets:
<%
int k = 0;
%>

<%
k = 10 + 20;
out.println("Valor de k "+k);
%>


Utilizando EL:

Valor de k ${10 + 20}

O EL simplifica bastante operaes e exibio de dados, onde
com Scriplets exigiria mais cdigo e manuteno mais dficl, abaixo
uma tabela com outros exemplos de uso do EL.

Expresso Resultado
${10.2 + 20.3} 30.5
${50 mod 8} 2
${(10==20) ? "true" : "false"} false
${10 < 20} true
${10 == 10} true
${100 eq 100} true
${4.0 ge 3} true
${(5*20) != 100} false
${'a' < 'b'} true
${'4' > 3} true







Variveis de Escopo

Objetos armazenados pelo Servlet em escopos de pgina,
requisio, sesso, ou aplicao. Com EL possvel ter acesso a esses
objetos escrevendo apenas o nome do mesmo.

<%
Aluno a = new Aluno();
request.setAttribute("aluno", a);
%>

${aluno}

Ao encontrar uma tag de EL como acima (${aluno}), o contanier
JSP procurar por uma varivel em algum dos escopos (PageContext,
HttpServletRequest, HttpSession e ServletContext), caso encontre o
objeto, o mtodo toString invocado.

Caso haja dois atributos com o mesmo nome em escopos
diferentes, possvel especificar o escopo para escrita do valor, abaixo
uma lista de objetos implcitos que podem ser usados com EL.

Objeto Funo
pageContext Instncia de PageContext
pageScope

Instncia de Object
requestScope

Instncia de HttpServletRequest
sessionScope

Instncia de HttpSession
applicationScope

Instncia de ServletContext
param

Acesso a parmetros de uma
requisio
paramValues

Acesso a todos os paramtros
header

Acesso ao cabealho da
requisio
headerValues

Acesso a todos os dados do
cabealho de uma requisio
cookie

Acesso a Cookies
initParam

Acesso a parmetros de
inicializao do web.xml


Exemplo de uso de Objetos

Escopos

Acessando um atributo de page-scoped chamado nome

${pageScope.nome}

Acessando um atributo de request-scoped chamado
sobreNome

${requestScope.sobreNome}

Acessando um atributo de session-scoped chamado
ultimoNome

${sessionScope.ultimoNome}

Page Context
Acesso a todos os escopos atravs de PageContext

${pageContext.request.protocol}

${pageContext.response.locale}

${pageContext.session.id}

${pageContext.servletContext}


Cookies

Acessando Cookies

<%
Cookie c=new Cookie("nome","Joo");
response.addCookie(c);
response.sendRedirect("exibeCookie.jsp");
%>

Pagina1.jsp



Nome : ${cookie["nome"]}
Valor : ${cookie["nome"].value}
exibeCookie.jsp


Parmetros de inicializao


Acessando Parmetros de Inicializao

<context-param>
<param-name>email</param-name>
<param-value>aeciovc@gmail.com</param-value>
</context-param>

web.xml



meu email : ${initParam.email}


pagina3.jsp




EL e JavaBeans
Um dos principais usos do EL est na exibio de dados que so
JavaBeans. Para acessar atributos de um objeto JavaBean usa-se a
seguinte sintaxe:
${bean.propriedade}
${aluno.nome}

Ao utilizar a sintaxe acima o mtodos get da propriedade do
JavaBean invocado. Alm de invocar atributos mais comuns
possvel ainda aninhar atributos, onde o Bean Aluno tem uma
propriedade Curso, que tambm um Bean, ento caso seja
necessrio exibir a descrio do curso, a exibio seria da seguinte
forma:

${aluno.curso.descricao}


Exemplo de uso de JavaBeans

public class Aluno{

private String nome;
private String sobreNome;


//getters and setters

}
Aluno.java

<%

Aluno a = new Aluno();
a.setNome("Juliana");
a.setSobreNome("Vieira");

request.setAttribute("aluno", a);

%>
Nome: ${aluno.nome}
SobreNome: ${aluno.sobreNome}

Pagina1.jsp
















EL e Colees

A EL permite o acesso a entradas de variveis de escopo relativas
a array, List e Map usando a seguinte notao de arrays:

${atributo[entrada]}


Assim podemos acessar um ArrayList atravs do seu ndice:

${estado[1]}


Ou acessar um HashMap:


${capitais["Alagoas"]}


Exemplo de uso de Colees
<%

List estados = new ArrayList();
estados.add("Piau");
estados.add("Cear");
estados.add("Rio Grande do Norte");
estados.add("Paraba");
estados.add("Pernambuco");
estados.add("Alagoas");

Map capitais = new HashMap();
capitais.put("Piaui","Teresina");
capitais.put("Ceara","Fortaleza");
capitais.put("Rio Grande do Norte", "Natal");
capitais.put("Paraiba","Joo Pessoa");
capitais.put("Pernambuco", "Recife");
capitais.put("Alagoas", "Macei");

request.setAttribute("capitais", capitais);
request.setAttribute("estados", estados);


%>

Capital: ${capitais["Alagoas"]}
Estado: ${estados[5]}

estados.jsp