JSP - Expression Language

Antonio Passos
Antonio PassosAssessor sênior de TI, Professor independente at Banco do Brasil
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.
1 of 25

Recommended

(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono by
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask AssíncronoDanilo J. S. Bellini
633 views27 slides
Design patterns by
Design patternsDesign patterns
Design patternsDouglasSoaresAndrSch
42 views27 slides
PHP Experience 2016 - [Palestra] Keynote: PHP-7 by
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7iMasters
1.1K views49 slides
Cactus - Testes em J2EE com Jakarta Cactus by
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusDenis L Presciliano
392 views16 slides
Linguagem PHP by
Linguagem PHPLinguagem PHP
Linguagem PHPBruno Cunha
2.4K views32 slides
PHP 7 by
PHP 7PHP 7
PHP 7Guilherme Blanco
2.4K views49 slides

More Related Content

What's hot

Doctrine2 Seminário PHP by
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHPGuilherme Blanco
4.5K views80 slides
Java 16 Jdbc by
Java 16 JdbcJava 16 Jdbc
Java 16 JdbcRegis Magalhães
2.6K views41 slides
Java web 6 JSP Expression Language Taglib parte 2 by
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
1.6K views17 slides
Minicurso kotlin no desenvolvimento mobile - UTFPR by
Minicurso kotlin no desenvolvimento mobile - UTFPRMinicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRLucas Antonio Ramos Sartori
123 views58 slides
Java script aula 05 - funções by
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funçõesCristiano Pires Martins
5.6K views23 slides
Zend Framework - PHPSP - 2009 by
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
543 views83 slides

Similar to JSP - Expression Language

Java Web 5 - JSP, Expression Language e Taglibs by
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
3.6K views18 slides
jsp-intro by
jsp-introjsp-intro
jsp-introFábio Nogueira de Lucena
1.6K views54 slides
Web 2.0 e AJAX - Parte 2 / 3 by
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3David Ruiz
559 views23 slides
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE by
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
1K views78 slides
Artigoajax by
ArtigoajaxArtigoajax
ArtigoajaxMoisesInacio
144 views11 slides
servlet-introducao by
servlet-introducaoservlet-introducao
servlet-introducaoFábio Nogueira de Lucena
2.6K views56 slides

Similar to JSP - Expression Language(20)

Java Web 5 - JSP, Expression Language e Taglibs by Eduardo Mendes
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
Eduardo Mendes3.6K views
Web 2.0 e AJAX - Parte 2 / 3 by David Ruiz
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
David Ruiz559 views
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE by Loiane Groner
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
Loiane Groner1K views
Revisao Geral by Oscar
Revisao GeralRevisao Geral
Revisao Geral
Oscar626 views
Javascript no SAPO e libsapojs by codebits
Javascript no SAPO e libsapojsJavascript no SAPO e libsapojs
Javascript no SAPO e libsapojs
codebits458 views
Java Web 3 - Servlets e JSP 1 by Eduardo Mendes
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
Eduardo Mendes2.1K views
Spring + Tapestry Um novo paradigma de desenvolvimento web by elliando dias
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
elliando dias437 views

More from Antonio Passos

Criação x evolução by
Criação x evoluçãoCriação x evolução
Criação x evoluçãoAntonio Passos
1.7K views21 slides
Programação Server Side I - Aula 2 by
Programação Server Side I - Aula 2Programação Server Side I - Aula 2
Programação Server Side I - Aula 2Antonio Passos
793 views25 slides
DAWJ - Filtros by
DAWJ - FiltrosDAWJ - Filtros
DAWJ - FiltrosAntonio Passos
1.7K views10 slides
Senai pais competentes = filhos brilhantes2 by
Senai   pais competentes = filhos brilhantes2Senai   pais competentes = filhos brilhantes2
Senai pais competentes = filhos brilhantes2Antonio Passos
833 views8 slides
Senai pais competentes = filhos brilhantes1 by
Senai   pais competentes = filhos brilhantes1Senai   pais competentes = filhos brilhantes1
Senai pais competentes = filhos brilhantes1Antonio Passos
340 views8 slides
Manipulando Bancos de Dados com JDBC by
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
3.8K views9 slides

More from Antonio Passos(7)

Programação Server Side I - Aula 2 by Antonio Passos
Programação Server Side I - Aula 2Programação Server Side I - Aula 2
Programação Server Side I - Aula 2
Antonio Passos793 views
Senai pais competentes = filhos brilhantes2 by Antonio Passos
Senai   pais competentes = filhos brilhantes2Senai   pais competentes = filhos brilhantes2
Senai pais competentes = filhos brilhantes2
Antonio Passos833 views
Senai pais competentes = filhos brilhantes1 by Antonio Passos
Senai   pais competentes = filhos brilhantes1Senai   pais competentes = filhos brilhantes1
Senai pais competentes = filhos brilhantes1
Antonio Passos340 views
Manipulando Bancos de Dados com JDBC by Antonio Passos
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
Antonio Passos3.8K views
Projeto e Implementação de Software Utilizando Padrões by Antonio Passos
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
Antonio Passos3.3K views

JSP - 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.