SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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
package br.pro.antoniopassos.EL;

import java.io.IOException;

import   javax.servlet.RequestDispatcher;
import   javax.servlet.ServletContext;
import   javax.servlet.ServletException;
import   javax.servlet.http.HttpServletRequest;
import   javax.servlet.http.HttpServletResponse;
import   javax.servlet.http.HttpSession;

public class ServletEscopo extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
 static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute(quot;requisicaoquot;, quot;Objeto-requisiçãoquot;);

HttpSession sessao = request.getSession();
sessao.setAttribute(quot;sessaoquot;, quot;Objeto-sessãoquot;);

ServletContext contexto = this.getServletContext();
contexto.setAttribute(quot;contextoquot;, quot;Objeto-contextoquot;);

RequestDispatcher dispatcher = request.getRequestDispatcher(quot;/resultado.jspquot;);
dispatcher.forward(request, response);
}
}
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>
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(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);
}
}
EL – JavaBean – Exemplo 02
(final)
<%@ 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 - JavaBeans</title>
</head>
<body>
<p>Nome = ${pessoa.nome}</p>
<p>Sobrenome = ${pessoa.sobrenome}</p>
<p>Bairro = ${pessoa.endereco.bairro}</p>
<p>CEP = ${pessoa.endereco.cep}</p>
</body>
</html>
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(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);
}
}
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>
EL – Objetos implícitos

    pageScope              cookie
●                      ●


    requestScope           initParam
●                      ●


    sessionScope           pageContext
●                      ●


    applicationScope
●




    param
●


    paramValues
●




    header
●


    headerValues
●
EL – Exemplo 04
<%@ 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 - Objetos implícitos</title>
</head>
<body>
<form action=quot;resultado.jspquot;>
<table border=quot;1quot;>
<tr>
<td>Nome:</td>
<td><input type=quot;textquot; name=quot;nomequot;/></td>
</tr>
<tr>
<td>Sobrenome:</td>
<td><input type=quot;textquot; name=quot;sobrenomequot;/></td>
</tr>
<tr>
<td colspan=quot;2quot; align=quot;centerquot;>
<input type=quot;submitquot; value=quot;Enviarquot;/>
<input type=quot;resetquot; value=quot;Limparquot;/>
</td>
</tr>
</table>
</form>
</body>
</html>
EL – Exemplo 04 (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 - Objetos implícitos</title>
</head>
<body>
Olá, ${param.nome} ${param.sobrenome}!
</body>
</html>
EL - Operadores

                      Lógicos
    Aritméticos
                  ●
●

                       && and || or ! not
     +-
     * / div
                      Empyt (vazio)
     % mod
                  ●


                       empty
    Relacionais
●


     == eq
     != ne
     < lt
     > gt
     <= le
     >= ge
EL – Expressão condicional

    A EL suporta o operador condiconal ”?”, cuja
●


    sintaxe é a seguinte:

    ${ teste ? expressão_1 : expressão_2}
EL – Exemplo 05
<%@ 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 - Operador condicional</title>
</head>
<body>
<form action=quot;resultado.jspquot;>
<table border=quot;1quot;>
<tr><td>Nome:</td><td><input type=quot;textquot; name=quot;nomequot;/></td></tr>
<tr><td>Sexo:</td><td><input type=quot;textquot; name=quot;sexoquot;/></td></tr>
<tr>
<td colspan=quot;2quot; align=quot;centerquot;>
<input type=quot;submitquot; value=quot;Enviarquot;/>
<input type=quot;resetquot; value=quot;Limparquot;/>
</td>
</tr>
</table>
</form>
</body>
</html>
EL – Exemplo 05 (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 - Operador condicional</title>
</head>
<body>
Olá, ${param.sexo==quot;Mquot; ? quot;Srquot; : quot;Sraquot;} ${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.

Weitere ähnliche Inhalte

Was ist angesagt?

Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Minicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRMinicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRLucas Antonio Ramos Sartori
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
 
Java script - document object model
Java script - document object modelJava script - document object model
Java script - document object modelGabriel Coelho
 

Was ist angesagt? (8)

Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Minicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRMinicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPR
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
Java script - document object model
Java script - document object modelJava script - document object model
Java script - document object model
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 

Ähnlich wie EL Expression Language

Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3David Ruiz
 
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EELoiane Groner
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao GeralOscar
 
Javascript no SAPO e libsapojs
Javascript no SAPO e libsapojsJavascript no SAPO e libsapojs
Javascript no SAPO e libsapojscodebits
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxOtávio Calaça Xavier
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 

Ähnlich wie EL Expression Language (20)

Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
jsp-intro
jsp-introjsp-intro
jsp-intro
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao Geral
 
Javascript no SAPO e libsapojs
Javascript no SAPO e libsapojsJavascript no SAPO e libsapojs
Javascript no SAPO e libsapojs
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Http Servlet
Http ServletHttp Servlet
Http Servlet
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com Ajax
 
Tutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos DependentesTutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos Dependentes
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
Comtec 2012 - C# Async
Comtec 2012 - C# AsyncComtec 2012 - C# Async
Comtec 2012 - C# Async
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Aplicacoes Web Com AJAX
Aplicacoes Web Com AJAXAplicacoes Web Com AJAX
Aplicacoes Web Com AJAX
 

Mehr von Antonio Passos

Criação x evolução
Criação x evoluçãoCriação x evolução
Criação x evoluçãoAntonio Passos
 
Programação Server Side I - Aula 2
Programação Server Side I - Aula 2Programação Server Side I - Aula 2
Programação Server Side I - Aula 2Antonio Passos
 
Senai pais competentes = filhos brilhantes2
Senai   pais competentes = filhos brilhantes2Senai   pais competentes = filhos brilhantes2
Senai pais competentes = filhos brilhantes2Antonio Passos
 
Senai pais competentes = filhos brilhantes1
Senai   pais competentes = filhos brilhantes1Senai   pais competentes = filhos brilhantes1
Senai pais competentes = filhos brilhantes1Antonio Passos
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
 
Projeto e Implementação de Software Utilizando Padrões
Projeto e Implementação de Software Utilizando PadrõesProjeto e Implementação de Software Utilizando Padrões
Projeto e Implementação de Software Utilizando PadrõesAntonio Passos
 

Mehr von Antonio Passos (7)

Criação x evolução
Criação x evoluçãoCriação x evolução
Criação x evolução
 
Programação Server Side I - Aula 2
Programação Server Side I - Aula 2Programação Server Side I - Aula 2
Programação Server Side I - Aula 2
 
DAWJ - Filtros
DAWJ - FiltrosDAWJ - Filtros
DAWJ - Filtros
 
Senai pais competentes = filhos brilhantes2
Senai   pais competentes = filhos brilhantes2Senai   pais competentes = filhos brilhantes2
Senai pais competentes = filhos brilhantes2
 
Senai pais competentes = filhos brilhantes1
Senai   pais competentes = filhos brilhantes1Senai   pais competentes = filhos brilhantes1
Senai pais competentes = filhos brilhantes1
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Projeto e Implementação de Software Utilizando Padrões
Projeto e Implementação de Software Utilizando PadrõesProjeto e Implementação de Software Utilizando Padrões
Projeto e Implementação de Software Utilizando Padrões
 

EL Expression Language

  • 1. JavaServer Pages Expression Language (EL) Prof. Antonio Passos
  • 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.
  • 8. EL – Exemplo 01 package br.pro.antoniopassos.EL; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class ServletEscopo extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute(quot;requisicaoquot;, quot;Objeto-requisiçãoquot;); HttpSession sessao = request.getSession(); sessao.setAttribute(quot;sessaoquot;, quot;Objeto-sessãoquot;); ServletContext contexto = this.getServletContext(); contexto.setAttribute(quot;contextoquot;, quot;Objeto-contextoquot;); RequestDispatcher dispatcher = request.getRequestDispatcher(quot;/resultado.jspquot;); dispatcher.forward(request, response); } }
  • 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); } }
  • 14. EL – JavaBean – Exemplo 02 (final) <%@ 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 - JavaBeans</title> </head> <body> <p>Nome = ${pessoa.nome}</p> <p>Sobrenome = ${pessoa.sobrenome}</p> <p>Bairro = ${pessoa.endereco.bairro}</p> <p>CEP = ${pessoa.endereco.cep}</p> </body> </html>
  • 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>
  • 18. EL – Objetos implícitos pageScope cookie ● ● requestScope initParam ● ● sessionScope pageContext ● ● applicationScope ● param ● paramValues ● header ● headerValues ●
  • 19. EL – Exemplo 04 <%@ 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 - Objetos implícitos</title> </head> <body> <form action=quot;resultado.jspquot;> <table border=quot;1quot;> <tr> <td>Nome:</td> <td><input type=quot;textquot; name=quot;nomequot;/></td> </tr> <tr> <td>Sobrenome:</td> <td><input type=quot;textquot; name=quot;sobrenomequot;/></td> </tr> <tr> <td colspan=quot;2quot; align=quot;centerquot;> <input type=quot;submitquot; value=quot;Enviarquot;/> <input type=quot;resetquot; value=quot;Limparquot;/> </td> </tr> </table> </form> </body> </html>
  • 20. EL – Exemplo 04 (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 - Objetos implícitos</title> </head> <body> Olá, ${param.nome} ${param.sobrenome}! </body> </html>
  • 21. EL - Operadores Lógicos Aritméticos ● ● && and || or ! not +- * / div Empyt (vazio) % mod ● empty Relacionais ● == eq != ne < lt > gt <= le >= ge
  • 22. EL – Expressão condicional A EL suporta o operador condiconal ”?”, cuja ● sintaxe é a seguinte: ${ teste ? expressão_1 : expressão_2}
  • 23. EL – Exemplo 05 <%@ 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 - Operador condicional</title> </head> <body> <form action=quot;resultado.jspquot;> <table border=quot;1quot;> <tr><td>Nome:</td><td><input type=quot;textquot; name=quot;nomequot;/></td></tr> <tr><td>Sexo:</td><td><input type=quot;textquot; name=quot;sexoquot;/></td></tr> <tr> <td colspan=quot;2quot; align=quot;centerquot;> <input type=quot;submitquot; value=quot;Enviarquot;/> <input type=quot;resetquot; value=quot;Limparquot;/> </td> </tr> </table> </form> </body> </html>
  • 24. EL – Exemplo 05 (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 - Operador condicional</title> </head> <body> Olá, ${param.sexo==quot;Mquot; ? quot;Srquot; : quot;Sraquot;} ${param.nome} </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.