JSP - Expression Language - Presentation Transcript
JavaServer Pages Expression
Language (EL)
Prof. Antonio Passos
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.
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}
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
●
EL - Sintaxe
${expressão}
ou
#{expressão}
'expressão' é a expressão EL a ser avaliada
EL – Palavras reservadas
and eq
● ●
gt true
● ●
instanceof or
● ●
ne lt
● ●
false empty
● ●
not if
● ●
ge null
● ●
div mod
● ●
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.
EL – Exemplo 01 (cont)
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
pageEncoding=\"UTF-8\"%>
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
<title>EL - Variáveis de escopo</title>
</head>
<body>
<p>
Request = ${requisicao}
</p>
<p>
HttpSession = ${sessao}
</p>
<p>
ServletContext = ${contexto}
</p>
</body>
</html>
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}
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;
}
}
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;
}
}
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(\"Tomcat\", \"99999-000\");
Pessoa pessoa = new Pessoa(\"Antonio\", \"Passos\", endereco);
request.setAttribute(\"pessoa\", pessoa);
RequestDispatcher dispatcher = request.getRequestDispatcher(\"/resultado.jsp\");
dispatcher.forward(request, response);
}
}
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}
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(\"Maranhão\");
estados.add(\"Piauí\");
estados.add(\"Ceará\");
estados.add(\"Rio Grande do Norte\");
estados.add(\"Paraíba\");
estados.add(\"Pernambuco\");
estados.add(\"Alagoas\");
estados.add(\"Sergipe\");
estados.add(\"Bahia\");
Map capitais = new HashMap();
capitais.put(\"Maranhao\", \"São Luís\");
capitais.put(\"Piaui\",\"Teresina\");
capitais.put(\"Ceara\",\"Fortaleza\");
capitais.put(\"Rio Grande do Norte\", \"Natal\");
capitais.put(\"Paraiba\",\"João Pessoa\");
capitais.put(\"Pernambuco\", \"Recife\");
capitais.put(\"Alagoas\", \"Maceió\");
capitais.put(\"Sergipe\", \"Aracaju\");
capitais.put(\"Bahia\", \"Salvador\");
request.setAttribute(\"estados\", estados);
HttpSession sessao = request.getSession();
sessao.setAttribute(\"capitais\", capitais);
RequestDispatcher dispatcher = request.getRequestDispatcher(\"/resultado.jsp\");
dispatcher.forward(request, response);
}
}
EL – Exemplo 03 (cont)
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
pageEncoding=\"UTF-8\"%>
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
<title>EL - Coleções</title>
</head>
<body>
<p>
A capital do estado do ${estados[0]} é ${capitais[\"Maranhao\"]}.
</p>
</body>
</html>
EL – Exemplo 05 (cont)
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
pageEncoding=\"UTF-8\"%>
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
<title>EL - Operador condicional</title>
</head>
<body>
Olá, ${param.sexo==\"M\" ? \"Sr\" : \"Sra\"} ${param.nome}
</body>
</html>
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.
0 comments
Post a comment