Apresentação sobre a linguagem de expressão (EL) 2.0, que integra os materiais didáticos do curso DAWJ - Desenvolvimento de Aplicativos Web com Servlet e JavaServer Pages, um dos cursos totalmente a distância oferecidos pelo prof. Antonio Passos. Para mais informações, acesse http://www.antoniopassos.com/.
2. EL - Motivação
Substituir na etapa final - apresentar os resultados
na página JSP - da abordagem MVC os elementos
de script e os elementos jsp:useBean,
jsp:getProperty e jsp:setProperty por entradas
curtas e legíveis, simplificando a camada de
apresentação.
3. EL – Vantagens (1/2)
Acesso conciso a objetos armazenados
●
Ex.: ${pessoa}
Notação resumida para propriedades de beans
●
Ex.: ${pessoa.nome}
Acesso simples para elementos de coleção
●
Ex.: ${pessoas[3]}
Acesso sucinto para parâmetros de requisição,
●
cookies e outros dados de requisição
Ex.: ${param.idPessoa}
${cookie.pessoaCookie.value}
4. EL – Vantagens (2/2)
Conjunto de operadores simples
●
Ex.: +, -, * e / (aritméticos)
== e != (relacionais)
&& e || (lógicos)
Operador condicional
●
Ex.: ${ teste ? expressão_1 : expressão_2}
Conversão automática de tipos
●
Valores vazios em vez de mensagens de erros
●
5. EL - Sintaxe
${expressão}
ou
#{expressão}
'expressão' é a expressão EL a ser avaliada
6. EL – Palavras reservadas
and eq
● ●
gt true
● ●
instanceof or
● ●
ne lt
● ●
false empty
● ●
not if
● ●
ge null
● ●
div mod
● ●
7. EL – Variáveis de escopo
”Variáveis de escopo” são os objetos
●
armazenados pelo Servlet através do método
setAttribute em HttpServletRequest, HttpSession
ou ServletContext
Para acessá-los através de EL, simplemente usa-
●
se seu nome em um elemento EL.
Ex.: ${pessoa}
procurará em PageContext, HttpServletRequest,
HttpSession e ServletContext por um atributo
”pessoa”. Se localizado, seu método toString
será chamado. Se não, será devolvido uma
string vazia.
9. EL – Exemplo 01 (cont)
<%@ page language=quot;javaquot; contentType=quot;text/html; charset=UTF-8quot;
pageEncoding=quot;UTF-8quot;%>
<!DOCTYPE html PUBLIC quot;-//W3C//DTD HTML 4.01 Transitional//ENquot; quot;http://www.w3.org/TR/html4/loose.dtdquot;>
<html>
<head>
<meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=UTF-8quot;>
<title>EL - Variáveis de escopo</title>
</head>
<body>
<p>
Request = ${requisicao}
</p>
<p>
HttpSession = ${sessao}
</p>
<p>
ServletContext = ${contexto}
</p>
</body>
</html>
10. EL - JavaBean
Para acessar-se as propriedades individuais de
●
beans, usa-se a sintaxe:
${bean.propriedade}
Ex.: ${pessoa.nome}
A EL permite aninhar-se propriedades
●
Ex.: ${pessoa.endereco.cep}
11. EL – JavaBean – Exemplo 02
package br.pro.antoniopassos.EL;
public class Pessoa {
String nome;
String sobrenome;
Endereco endereco;
public Pessoa(String nome, String sobrenome, Endereco endereco) {
super();
this.nome = nome;
this.sobrenome = sobrenome;
this.endereco = endereco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
}
12. EL – JavaBean – Exemplo 02
(cont)
package br.pro.antoniopassos.EL;
public class Endereco {
private String bairro;
private String cep;
public Endereco(String bairro, String cep) {
super();
this.bairro = bairro;
this.cep = cep;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
}
13. EL – JavaBean – Exemplo 02
(cont)
package br.pro.antoniopassos.EL;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletBean extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Endereco endereco = new Endereco(quot;Tomcatquot;, quot;99999-000quot;);
Pessoa pessoa = new Pessoa(quot;Antonioquot;, quot;Passosquot;, endereco);
request.setAttribute(quot;pessoaquot;, pessoa);
RequestDispatcher dispatcher = request.getRequestDispatcher(quot;/resultado.jspquot;);
dispatcher.forward(request, response);
}
}
15. EL - Coleções
A EL permite o acesso a entradas de variáveis de
●
escopo relativas a array, List e Map usando a
seguinte notação de arrays:
${atributo[entrada]}
Ex. 01: ${estado[1]}
Ex. 02: ${estado[”capital”]}
No exemplo 02, em que a chave do Map é um nome
●
de variável Java válido, pode-se usar a notação de
pontos:
Ex.: ${estado.maranhao}
16. EL – Exemplo 03
package br.pro.antoniopassos.EL;
import java.io.IOException;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletColecao extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List estados = new ArrayList();
estados.add(quot;Maranhãoquot;);
estados.add(quot;Piauíquot;);
estados.add(quot;Cearáquot;);
estados.add(quot;Rio Grande do Nortequot;);
estados.add(quot;Paraíbaquot;);
estados.add(quot;Pernambucoquot;);
estados.add(quot;Alagoasquot;);
estados.add(quot;Sergipequot;);
estados.add(quot;Bahiaquot;);
Map capitais = new HashMap();
capitais.put(quot;Maranhaoquot;, quot;São Luísquot;);
capitais.put(quot;Piauiquot;,quot;Teresinaquot;);
capitais.put(quot;Cearaquot;,quot;Fortalezaquot;);
capitais.put(quot;Rio Grande do Nortequot;, quot;Natalquot;);
capitais.put(quot;Paraibaquot;,quot;João Pessoaquot;);
capitais.put(quot;Pernambucoquot;, quot;Recifequot;);
capitais.put(quot;Alagoasquot;, quot;Maceióquot;);
capitais.put(quot;Sergipequot;, quot;Aracajuquot;);
capitais.put(quot;Bahiaquot;, quot;Salvadorquot;);
request.setAttribute(quot;estadosquot;, estados);
HttpSession sessao = request.getSession();
sessao.setAttribute(quot;capitaisquot;, capitais);
RequestDispatcher dispatcher = request.getRequestDispatcher(quot;/resultado.jspquot;);
dispatcher.forward(request, response);
}
}
17. EL – Exemplo 03 (cont)
<%@ page language=quot;javaquot; contentType=quot;text/html; charset=UTF-8quot;
pageEncoding=quot;UTF-8quot;%>
<!DOCTYPE html PUBLIC quot;-//W3C//DTD HTML 4.01 Transitional//ENquot; quot;http://www.w3.org/TR/html4/loose.dtdquot;>
<html>
<head>
<meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=UTF-8quot;>
<title>EL - Coleções</title>
</head>
<body>
<p>
A capital do estado do ${estados[0]} é ${capitais[quot;Maranhaoquot;]}.
</p>
</body>
</html>
25. EL – Bibliografia consultada
GONÇAVES, Edson. Desenvolvendo aplicações
●
Web com JSP, Servlets, JavaServer Faces,
Hibernate, EJB 3 Persistence e AJAX. Rio de
Janeiro: Ciência Moderna Ltda, 2007.
HALL, Marty & BROWN, Larry. Core Servlets e
●
JavaServer Pages. Volume 1: tecnologia
core. Rio de Janeiro: Ciência Moderna Ltda,
2005.