JSP & Servlets
Expression Language

  Eduardo Mendes
EL ou
                              Expression Language
                                        A Expression Language
                                         é uma forma simples
                                         de uma JSP acessar
                                         valores que lhe
                                         estejam disponíveis
    Que valores?
         Por exemplo, um atributo passado por um método de
          Servlet
         Se existe um atributo chamado “valor” então na JSP é
          possível acessá-lo através da seguinte sintaxe: ${valor}
Exemplo de utilização
Considere os artefatos
Visão            Controle       Modelo


                                  Cerveja
               CervejaServlet
                                - marca
                                - tamanho

                                + getTamanho()
                                + getMarca()
cervejas.jsp
Fluxo do exemplo
    Digamos que eu queira acessar um Servlet e que
     ele crie um objeto do tipo Cerveja (que possui
     marca e tamanho)

    E que depois de criado eu passo o objeto como
     atributo na requisição

    Na JSP iremos acessar este objeto Cerveja
     através de EL (Expression Language)
Servlet
       Abaixo o exemplo do Servlet criando uma Cerveja (1)
        e depois passando para a JSP como um atributo (2)
                                          chamado “cerva”
public void doGet(
  HttpServletRequest request, HttpServletResponse response)
  throws IOException, ServletException {

    Cerveja ce = new Cerveja();
    request.setAttribute(“cerva”, ce);
    RequestDispatcher dispatcher =
         request.getRequestDispatcher("cervejas.jsp");

    dispatcher.forward(request, response);
}
Código Jsp
                                          cervejas.jsp
Abaixo em azul, como acessar o atributo na JSP:
<html>
 <body>
 Marca da cerveja é: ${cerva.marca} <br/>
 Tamanho da cerveja é: ${cerva.tamanho}
</body>
</html>

Substitui:
<%= ((Cerveja) request.getAttribute(“cerva”)).getMarca() %>
<%= ((Cerveja) request.getAttribute(“cerva”)).getTamanho() %>
JSP & Servlets
      JSTL

  Eduardo Mendes
Taglibs
    O que é Tag Library?
       Biblioteca de tags customizadas que são
        utilizadas na composição de páginas JSP
       Classes Java usadas na forma de Tags



    Por que utilizar Tags Customizadas?
        Eliminam a utilização de scriptlets e
         redundância de código em páginas JSP.
        Gera conteúdo dinâmico reutilizável.
Taglibs
    Composição de uma Tag Customizada
        Uma classe Java: a implementação

        Um arquivo “.tld”: metadados



    Como instalar uma taglib em uma aplicação
        Instale as classes compiladas ou o arquivo jar

         na pasta lib da aplicação

    Na JSP informe coloque uma “diretiva”
       A diretiva informa que você irá utilizar a taglib
JSTL
    O que é JSTL
       É um acrônimo para Jsp Standar Tag Lib

       Ou seja, uma taglib

       Os arquivos que precisam ser instalados para
        utilizá-la são:
             standard.jar
             jstl.jar

         Diretiva:
               <%@ taglib uri=“http://java.sun.com/jsp/jstl/core”
                    prefix=“c” %>
Algumas das tags JSTL
    <c:forEach>
    <c:if>
    <c:choose>
     <c:when> e <c:otherwise>
    <c:set>
    <c:remove>
Um exemplo com c:forEach
A tag <c:forEach>
    Código do Servlet: um array passado como
     atributo
     ...
     String[] listaFilmes = {“Matrix”,”Retorno do Rei”,
       “Guerra nas estrelas”};
     request.setAttribute(“listaFilmes”, listaFilmes);
     ...
A tag <c:forEach>
    Código Jsp
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/
  core” %>
<html>
 <body>
  <h1>Lista de Filmes</h1>
   <ul>
    <c:forEach var=“filme” items=“${listaFilmes}” >
     <li>${filme}</li>
    </c:forEach>
   </ul>
 </body>
</html>
A tag <c:forEach>


<c:forEach var=“filme” items=“${listaFilmes}” >

   <li>${filme}</li>

</c:forEach>
Escopo da variável var
                                 Tag
<c:forEach var=“filme” items=“${listaFilmes}”
     ${filme}
</c:forEach>


 ${filme}
Pense...
    No exemplo o <c:forEach> percorreu um array, da
     mesma forma ele pode ser utilizado para
     percorrer List, ArrayList e Coleções.

Java Web 5 - JSP, Expression Language e Taglibs

  • 1.
    JSP & Servlets ExpressionLanguage Eduardo Mendes
  • 2.
    EL ou Expression Language   A Expression Language é uma forma simples de uma JSP acessar valores que lhe estejam disponíveis   Que valores?   Por exemplo, um atributo passado por um método de Servlet   Se existe um atributo chamado “valor” então na JSP é possível acessá-lo através da seguinte sintaxe: ${valor}
  • 3.
  • 4.
    Considere os artefatos Visão Controle Modelo Cerveja CervejaServlet - marca - tamanho + getTamanho() + getMarca() cervejas.jsp
  • 5.
    Fluxo do exemplo   Digamos que eu queira acessar um Servlet e que ele crie um objeto do tipo Cerveja (que possui marca e tamanho)   E que depois de criado eu passo o objeto como atributo na requisição   Na JSP iremos acessar este objeto Cerveja através de EL (Expression Language)
  • 6.
    Servlet Abaixo o exemplo do Servlet criando uma Cerveja (1) e depois passando para a JSP como um atributo (2) chamado “cerva” public void doGet( HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { Cerveja ce = new Cerveja(); request.setAttribute(“cerva”, ce); RequestDispatcher dispatcher = request.getRequestDispatcher("cervejas.jsp"); dispatcher.forward(request, response); }
  • 7.
    Código Jsp cervejas.jsp Abaixo em azul, como acessar o atributo na JSP: <html> <body> Marca da cerveja é: ${cerva.marca} <br/> Tamanho da cerveja é: ${cerva.tamanho} </body> </html> Substitui: <%= ((Cerveja) request.getAttribute(“cerva”)).getMarca() %> <%= ((Cerveja) request.getAttribute(“cerva”)).getTamanho() %>
  • 8.
    JSP & Servlets JSTL Eduardo Mendes
  • 9.
    Taglibs   O que é Tag Library?   Biblioteca de tags customizadas que são utilizadas na composição de páginas JSP   Classes Java usadas na forma de Tags   Por que utilizar Tags Customizadas?   Eliminam a utilização de scriptlets e redundância de código em páginas JSP.   Gera conteúdo dinâmico reutilizável.
  • 10.
    Taglibs   Composição de uma Tag Customizada   Uma classe Java: a implementação   Um arquivo “.tld”: metadados   Como instalar uma taglib em uma aplicação   Instale as classes compiladas ou o arquivo jar na pasta lib da aplicação   Na JSP informe coloque uma “diretiva”   A diretiva informa que você irá utilizar a taglib
  • 11.
    JSTL   O que é JSTL   É um acrônimo para Jsp Standar Tag Lib   Ou seja, uma taglib   Os arquivos que precisam ser instalados para utilizá-la são:   standard.jar   jstl.jar   Diretiva:   <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
  • 12.
    Algumas das tagsJSTL   <c:forEach>   <c:if>   <c:choose> <c:when> e <c:otherwise>   <c:set>   <c:remove>
  • 13.
    Um exemplo comc:forEach
  • 14.
    A tag <c:forEach>   Código do Servlet: um array passado como atributo ... String[] listaFilmes = {“Matrix”,”Retorno do Rei”, “Guerra nas estrelas”}; request.setAttribute(“listaFilmes”, listaFilmes); ...
  • 15.
    A tag <c:forEach>   Código Jsp <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/ core” %> <html> <body> <h1>Lista de Filmes</h1> <ul> <c:forEach var=“filme” items=“${listaFilmes}” > <li>${filme}</li> </c:forEach> </ul> </body> </html>
  • 16.
    A tag <c:forEach> <c:forEachvar=“filme” items=“${listaFilmes}” > <li>${filme}</li> </c:forEach>
  • 17.
    Escopo da variávelvar  Tag <c:forEach var=“filme” items=“${listaFilmes}” ${filme} </c:forEach> ${filme}
  • 18.
    Pense...   No exemplo o <c:forEach> percorreu um array, da mesma forma ele pode ser utilizado para percorrer List, ArrayList e Coleções.