SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
Introdu¸˜o
       ca                  Sintaxe JSP                 EL e Taglibs                 Model View Controller




                               Programa¸˜o para Web
                                       ca
                                   Java Server Pages (JSP)


                                           Ivo Calado

                   Instituto Federal de Educa¸˜o, Ciˆncia e Tecnologia de Alagoas
                                             ca     e


                                     29 de Janeiro de 2013




1 / 39                                        Ivo Calado                                            IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                   Sintaxe JSP            EL e Taglibs   Model View Controller




Roteiro


         1   Introdu¸˜o
                    ca

         2   Sintaxe JSP

         3   EL e Taglibs

         4   Model View Controller




2 / 39                                    Ivo Calado                              IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca               Sintaxe JSP             EL e Taglibs      Model View Controller




Observa¸˜o sobre o conte´do
       ca               u




         Parte deste material ´ baseada na apostila FJ-21 - Java para
                              e
         Desenvolvimento Web desenvolvido pela Caelum
         (www.caelum.com.br)




3 / 39                                 Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs      Model View Controller



Defini¸˜es
     co


Colocando o HTML no seu devido lugar

             At´ agora, vimos que podemos escrever conte´do dinˆmico
               e                                        u      a
             atrav´s de Servlets
                  e
             Por´m, se toda hora criarmos Servlets para fazermos esse
                e
             trabalho, teremos muitos problemas na manuten¸˜o das
                                                             ca
             nossas p´ginas e tamb´m na legibilidade do nosso c´digo
                     a            e                             o

         Porque?
         porque sempre aparece c´digo Java misturado com c´digo HTML.
                                o                          o
         Imagine todo um sistema criado com Servlets fazendo a gera¸˜o
                                                                   ca
         do HTML

4 / 39                                Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs    Model View Controller



Defini¸˜es
     co


Colocando o HTML no seu devido lugar


             Em situa¸˜es onde a presen¸a do c´digo HTML ´ superior a
                      co               c      o           e
             do c´digo Java precisamos de uma solu¸˜o que possibilite
                 o                                ca
             inverter os pap´is!
                            e
             Ao inv´s de inserir c´digo HTML dentro do c´digo Java,
                    e             o                     o
             inserimos c´digo Java dentro do HTML!
                        o
             Algo similar ao ASP e PHP
             Essa tecnologia ´ o JavaServer Pages (JSP).
                             e




5 / 39                                Ivo Calado                               IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                     Sintaxe JSP    EL e Taglibs          Model View Controller



Defini¸˜es
     co


Nosso primeiro exemplo
         Vejamos o nosso primeiro exemplo em JSP
         bem-vindo.jsp
         <html>
           <body>
              Bem v i n d o
           </ body>
         </ html>

         Novidade?
             Fica claro que uma p´gina JSP nada mais ´ que um arquivo
                                  a                       e
             baseado em HTML, com a extens˜o .jsp  a
             Podemos escrever tamb´m c´digo Java, para que possamos
                                     e      o
             adicionar comportamento dinˆmico em nossas p´ginas, como
                                             a                 a
             declara¸˜o de vari´veis, condicionais (if), loops (for, while)
                    ca         a
6 / 39       entre outros               Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                  Sintaxe JSP               EL e Taglibs        Model View Controller



Defini¸˜es
     co


Nosso primeiro exemplo II

         <body>
         <%−− Exemplo de c o m e n t ´ r i o−−%
                                     a         >
         <% S t r i n g mensagem = " Meu primeiro exemplo din^ mico com
                                                             a
              JSP " ; %  >

         <% o u t . p r i n t l n ( mensagem ) ; %><br />

         <% S t r i n g d e s e n v o l v i d o = " Desenvolvido por todos !" ; %>

         <s t r o n g><%=d e s e n v o l v i d o%></ s t r o n g><br />
         <% System . o u t . p r i n t l n ( " Tudo foi executado !" ) ; %>
         </ body>

         Porque a mensagem “Tudo foi executado!” n˜o foi exibida na
                                                  a
         resposta?
7 / 39                                      Ivo Calado                                   IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs      Model View Controller



Defini¸˜es
     co


Sobre o c´digo JSP
         o



             O c´digo Java ´ adicionado entre os elementos <% e %>
                o          e
             Existe um objeto out.println que j´ envia a sa´ direta para o
                                               a           ıda
             usu´rio. Lembra algum outro objeto?
                a
             Chamada a System.out.println ir´ enviar a sa´ para a sa´
                                            a            ıda        ıda
             padr˜o do servidor!
                 a




8 / 39                                Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs   Model View Controller



Defini¸˜es
     co


Objetos Impl´
            ıcitos


             Em JSP alguns objetos s˜o impl´
                                    a      ıcitos

         request             HttpServletRequest
         response            HttpServletResponse
         out                 JSPWriter
         session             HttpSession
         application         ServletContext
         config              ServletConfig
         pageContext         PageContext
         page                HttpJspPage




9 / 39                                Ivo Calado                              IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                   Sintaxe JSP                EL e Taglibs   Model View Controller



Defini¸˜es
     co


C´digo HTML entre o c´digo JSP
 o                   o
               A l´gica do c´digo JSP pode ser intercalada com c´digo
                  o         o                                    o
               HTML
               No exemplo abaixo, tudo que estiver entre a defini¸˜o do loop
                                                                ca
               e o s´
                    ımbolo de fechamento (}) ser´ repetido!
                                                a
          <body>
          <% f o r ( i n t i = 0 ; i < 1 0 ; i ++) { %>

             <!−− F o r a do C o d i g o J a v a −−>
                               ´
             Passou a q u i =

          <%= i % >
            <br />
          <%} % >
          </ body>
10 / 39                                      Ivo Calado                               IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                    Sintaxe JSP                EL e Taglibs   Model View Controller



Diretivas


Diretivas

                S˜o mensagens ao container JSP, contendo informa¸˜es de
                 a                                              co
                como o container JSP deve traduzir as p´ginas
                                                       a
                A sintaxe b´sica ´ utiliza uma estrutura chave valor
                           a     e

          <%@ d i r e t i v a ( a t r i b u t o=" valor " ) ∗%>


                Existem trˆs tipos de diretivas:
                          e
                       Diretiva de p´gina: page
                                     a
                       Diretiva de inclus˜o: include
                                         a
                       Diretiva de taglib: taglib


11 / 39                                         Ivo Calado                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                    Sintaxe JSP              EL e Taglibs         Model View Controller



Diretivas


A diretiva page
                A diretiva page possibilita a configura¸˜o de diversas
                                                      ca
                propriedades da p´gina como contentType, buffer, import etc
                                 a
            <%@ page a t r i b u t o=" valor "%>

                S˜o definidos 11 tipos de atributos
                 a
                       language: Nome da linguagem do script (padr˜o “Java”)
                                                                      a
                       info: String a ser recuperada via getServletInfo
                       contentType: Tipo MIME identificando o tipo do conte´do e a
                                                                                u
                       codifica¸˜o
                               ca
                       import: an´logo ao import numa classe Java
                                  a
                       session: indica se a p´gina participar´ do controle de sess˜o
                                             a               a                    a
                       errorPage: pagina de erro a ser utilizada caso alguma exce¸˜o
                                                                                   ca
                       seja lan¸ada
                               c
12 / 39                                       Ivo Calado                                   IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                     Sintaxe JSP               EL e Taglibs   Model View Controller



Diretivas


A diretiva include

                Permite a inclus˜o de conte´dos de outros arquivos na p´gina
                                 a          u                           a
                JSP
                ´´
                E util para inclus˜o de cabe¸alhos e rodap´s de p´gina, por
                                  a         c             e      a
                exemplo

          <%@ i n c l u d e   f i l e =" arquivo . jsp "%>


                A localiza¸˜o do arquivo ´ em rela¸˜o a JSP. Caso seja
                          ca              e       ca
                colocado um / no come¸o leva-se em considera¸˜o o contexto
                                        c                     ca
                do servidor. Mais a frente veremos uma maneira mais robusta
                de trabalhar com localiza¸˜es de recursos!
                                          co

13 / 39                                         Ivo Calado                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs        Model View Controller



Diretivas


A diretiva taglib




             Possibilita extender a funcionalidade do JSP
             Iremos abordar ele com mais detalhes a frente... :)




14 / 39                                Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca               Sintaxe JSP            EL e Taglibs        Model View Controller



Sintaxe


Defini¸˜o de c´digo
     ca      o


          Existem trˆs formas de definir c´digo em uma p´gina JSP
                    e                    o             a
              Declara¸˜es: Permitem a defini¸˜o de vari´veis e m´todos
                     co                    ca         a        e
              Express˜es: Converte o resultado do c´digo em uma string a
                     o                             o
              ser anexada no c´digo JSP
                              o
              Scriptlets: Permitem a escrita de c´digo fora de qualquer
                                                 o
              m´todo a ser executado (an´logo a um c´digo JavaScript)
                e                         a            o




15 / 39                                Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                     Sintaxe JSP                     EL e Taglibs                      Model View Controller



Sintaxe


Exemplo
          Scriptlets
      <%
      w h i l e ( i−− != 0 ) {
         o u t . p r i n t l n ( " Texto " ) ;
      }%>

          Express˜es
                 o
          Hoje s ˜ o <
                 a    %= getSystemTime ( ) %><br />

          Declara¸˜es
                 co
        <%!
        i n t i = 10;
        S t r i n g getSystemTime ( ) {
        r e t u r n C a l e n d a r . g e t I n s t a n c e ( ) . getTime ( ) . t o S t r i n g ( ) ;
        }
16 / 39 %>                                               Ivo Calado                                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP           EL e Taglibs      Model View Controller



Sintaxe


Exercicio I: Criando uma lista de contatos

             Crie uma classe chamada Contato, dentro de algum pacote
             espec´ıficos
             Adicione 3 atributos: Nome, Endere¸o e Idade
                                               c
             Crie uma classe ContatosDao com um m´todolo que retorne
                                                    e
             uma lista de Contatos (pelo menos 5 elementos)
             Com base no exemplo anterior, crie uma p´gina JSP que
                                                     a
             contenha uma tabela e cada coluna da tabela represente um
             contato
             Fa¸a uso do Ctrl + espa¸o no Eclipse para importar o que
                c                     c
             for necess´rio e veja como ´ feito o import
                       a                e

17 / 39                              Ivo Calado                                IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                 Sintaxe JSP           EL e Taglibs        Model View Controller



EL: Expression Language


At´ agora conseguimos desacoplar o Java do HTML?
  e


              O objetivo inicial do JSP era redudir o acoplamento entre o
              c´digo Java e o HTML
               o
              Pelo que vimos at´ agora isso foi obtido? Porque?
                               e
              N˜o! O c´digo Java continua sendo misturado com HTML e
               a      o
              um designer Web precisa entender l´gica de programa¸˜o
                                                o                ca
              E existe hoje em dia no mercado muitas aplica¸˜es feitas
                                                              co
              inteiramente utilizando scriptlets e escrevendo c´digo Java,
                                                               o
              PHP e outras no meio dos HTMLs



18 / 39                                 Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                 Sintaxe JSP           EL e Taglibs        Model View Controller



EL: Expression Language


EL: Expression Language



              Para remover um pouco do c´digo Java que fica na p´gina
                                          o                      a
              JSP, a Sun desenvolveu uma linguagem chamada Expression
              Language que ´ interpretada pelo servlet container
                            e
              O acesso a express˜es ´ realizada a partir da estrutura ${expr}
                                o e
              Vejamos como criar uma p´gina que receba um parˆmetro e
                                      a                      a
              exiba-o na tela




19 / 39                                 Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                   Sintaxe JSP                EL e Taglibs   Model View Controller



EL: Expression Language


Exemplo EL



          <body>
          Testando s e u s parametros :
          <br /> A i d a d e ´ $ { param . i d a d e } .
                             e
          </ body>


               param ´ um objeto nativo, assim como out que contem um
                     e
               mapa com parˆmetros recebidos na requisi¸˜o
                           a                           ca




20 / 39                                        Ivo Calado                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                  Sintaxe JSP              EL e Taglibs   Model View Controller



EL: Expression Language


Exemplo: avalia¸˜o de express˜es
               ca            o


          <body>
          <h2>O p e r a d o r e s de Compara¸ ˜ o</h2>
                                               ca
          4 > ’ 3 ’ => $ {4 > ’ 3 ’ }<br />
          ’ 4 ’ > 3 => $ { ’ 4 ’ > 3}<br />
          ’ 4 ’ > ’3’=> $ { ’ 4 ’ > ’ 3 ’ } <br />
          4 >= 3 => $ {4 >= 3}<br />
          4 <= 3 =     >        $ {4 < 3}< br />
          4 == ’ 4 ’ => $ {4 == 4}<br />
          </ body>




21 / 39                                     Ivo Calado                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs       Model View Controller



Taglibs


Motiva¸˜o
      ca

             Come¸amos a melhorar nossos problemas com rela¸˜o `
                  c                                        ca a
             mistura de c´digo Java com HTML atrav´s da Expression
                         o                        e
             Language
             No entanto, ela sozinha n˜o pode nos ajudar muito, pois ela
                                       a
             n˜o nos permite, por exemplo, instanciar objetos, fazer
              a
             verifica¸˜es condicionais (if else), itera¸˜es como em um for e
                    co                                co
             assim por diante
             Sendo assim, precisamos de um mecanismo baseado em tags
             para representar nosso l´gica de neg´cio!
                                     o           o
             Para isso, fazemos uso das Taglibs

22 / 39                                Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                Sintaxe JSP            EL e Taglibs        Model View Controller



Taglibs


JavaBeans: acesso aos atributos

              Antes de entrarmos diretamente em Taglibs precisamos
              aprender sobre Javabeans. Um Bean ´ um tipo de objeto
                                                   e
              Java, com construtor default e os respectivos getters e setters
              Instˆnci´-los na nossa p´gina JSP n˜o ´ complicado. Basta
                   a a                a          a e
              utilizarmos a tag correspondente para essa fun¸˜o, que no
                                                            ca
              nosso caso ´ a < jsp : useBean >
                          e

          <jsp:useBean
          id=”contato”class=”br.edu.ifal.pweb.classes.Contato”/>
          Agora podemos fazer uso das express˜es EL para acessar o valor de
                                             o
          contato. Exemplo: ${contato.nome}
23 / 39                                 Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP           EL e Taglibs      Model View Controller



Taglibs


JavaBeans



             No nosso exemplo, os atributos de Contato foram definidos
             como privados mas estamos conseguindo acess´-los. Por que
                                                         a
             isso?
             Na verdade n˜o estamos acessando o atributo privado.
                         a
             Quando fazemos contato.nome o container implicitamente
             chama o m´todo getNome
                       e




24 / 39                              Ivo Calado                                IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                     Sintaxe JSP                 EL e Taglibs               Model View Controller



Taglibs


JavaBeans: Modificando propriedades

          Para modificar uma propriedade em um bean, fazemos uso da
          propriedade jsp:setProperty
          <body>

          <%c o n t a t o . setNome ( " teste " ) ; %>

          < j s p : s e t P r o p e r t y p r o p e r t y=" endereco " v a l u e=" Rua das
                 casas " name=" contato " />

          Nome = $ { c o n t a t o . nome} <br />
          Endereco = ${ cont ato . endereco }
                 ¸
          </ body>



25 / 39                                           Ivo Calado                                         IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs       Model View Controller



JSTL


JavaServer Pages Standard Tag Library


             JSTL ´ a API que encapsulou em tags simples toda a
                   e
             funcionalidade que diversas p´ginas Web precisam
                                          a
             Exemplos de funcionalidades incluem: controle de la¸os (fors),
                                                                 c
             controle de fluxo do tipo if else, manipula¸˜o de dados XML e
                                                       ca
             a internacionaliza¸˜o de sua aplica¸˜o
                               ca               ca
             Existem ainda outras partes da JSTL, por exemplo aquela que
             acessa banco de dados e permite escrever c´digos SQL na
                                                       o
             nossa p´gina. Mas se o designer n˜o compreende Java o que
                    a                         a
             diremos de SQL? O uso de tal parte da JSTL ´ desencorajado.
                                                         e


26 / 39                                Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                 Sintaxe JSP               EL e Taglibs           Model View Controller



JSTL


Instala¸˜o do JSTL
       ca

             Para instalar a implementa¸˜o mais famosa da JSTL basta
                                       ca
             baixar a mesma no site https://jstl.dev.java.net/
             Adicionar as libs no diret´rios libs do projeto
                                       o
             Para removermosas as notifica¸˜es de erros no Eclipse,
                                            co
             teremos de adicionar as libs no build path
             Adicione a referˆncia ao conjunto de taglibs do JSTL
                             e
             (equivalente a um import) atrav´s da seguinte linha
                                             e
             <%@ t a g l i b u r i=" http :// java . sun . com / jsp / jstl / core "
                 p r e f i x="c" % >



27 / 39                                     Ivo Calado                                     IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                    Sintaxe JSP                EL e Taglibs              Model View Controller



Estruturas de controle


forEach
                A JSTL core disponibiliza uma tag chamada c:forEach capaz
                de iterar por uma cole¸˜o
                                        ca
                No c:forEach, precisamos indicar a cole¸˜o na qual vamos
                                                        ca
                iterar, atrav´s do atributo items e tamb´m como chamar´ o
                             e                          e              a
                objeto que ser´ atribu´ para cada itera¸˜o no atributo var.
                               a        ıdo              ca
          <c : f o r E a c h v a r=" ct " i t e m s="${ contato . lista }" v a r S t a t u s=
                " id ">
          <t r b g c o l o r="#${ id . count % 2 == 0 ? ’aaee88 ’ : ’ffffff ’
                  }">
          <td>$ { i d . c o u n t }</ td>
          <td>$ { c t . nome}</ td>
          <td>$ { c t . i d a d e }</ td>
          </ t r>
          </ c : f o r E a c h>
28 / 39                                         Ivo Calado                                        IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                 Sintaxe JSP             EL e Taglibs   Model View Controller



Estruturas de controle


Atributos




               var: vari´vel a ser utilizada na itera¸˜o
                        a                            ca
               items: fonte dos dados
               varStatus: posi¸˜o corrente
                              ca




29 / 39                                   Ivo Calado                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                Sintaxe JSP            EL e Taglibs       Model View Controller



Estruturas de controle


Exerc´
     ıcio




          Altere o exemplo para que seja a coluna e n˜o a linha da tabela
                                                     a
          apresentada




30 / 39                                 Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                    Sintaxe JSP                EL e Taglibs              Model View Controller



Estruturas de controle


Criando Ifs
                E se quisermos alterar a tabela para que seja exibida uma
                obserca¸˜o caso o contato tenha menos que 18 anos
                       ca
                Fazermos uso da Tag If
          <c : f o r E a c h v a r=" ct " i t e m s="${ contato . lista }" v a r S t a t u s=
                " id ">
          <t r b g c o l o r="#${ id . count % 2 == 0 ? ’aaee88 ’ : ’ffffff ’
                  }">
          <td>$ { i d . c o u n t }</ td>
          <td>$ { c t . nome}</ td>
          <td>$ { c t . i d a d e }</ td>
          <td><c : i f t e s t="${ ct . idade < 18 }">
          Menor de I d a d e</ c : i f >
          </ td>
          </ t r>
          </ c : f o r E a c h>
31 / 39                                         Ivo Calado                                        IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                Sintaxe JSP             EL e Taglibs      Model View Controller



Estruturas de controle


Semˆntica dos parˆmetros
   a             a



               test: Recebe como parˆmetro uma express˜o a ser avaliada
                                    a                 a
               como true ou false
          Al´m de testes diretos, operadores de EL podem ser utilizados
            e
          <c : i f t e s t="${ not empty variavel }">
          </ c : i f >




32 / 39                                  Ivo Calado                                IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                     Sintaxe JSP                  EL e Taglibs        Model View Controller



Estruturas de controle


Simulando o else


                O JSTL n˜o possui uma tag else para complementar o if
                        a
                Por´m podemos utilizar a estrutura choose para este prop´sito
                   e                                                    o

          <c : c h o o s e>
          <c : when t e s t="${ ct . idade < 18} ">
          Menor de i d a d e
          </ c : when>
          <c : o t h e r w i s e>Maior de I d a d e</ c : o t h e r w i s e>
          </ c : c h o o s e>




33 / 39                                            Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                Sintaxe JSP           EL e Taglibs   Model View Controller



Estruturas de controle


Exercicio para casa




          Pesquisar sobre os demais operadores do EL




34 / 39                                Ivo Calado                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                Sintaxe JSP           EL e Taglibs      Model View Controller



Estruturas de controle


Exercicio


               Adicione um atributo homepage ` classe Contato.
                                             a
               No m´tododo getLista de ContatoDao adicione para alguns
                    e
               usu´rios uma p´gina de usu´rio
                  a          a           a
               Altere o exemplo de listagem usando JSTL, adicionando uma
               nova coluna
               Caso o usu´rio possua a homepage definida exiba na coluna
                         a
               correspondente como um link, caso contr´rio exiba a
                                                      a
               mensagem “N˜o dispon´
                             a        ıvel”



35 / 39                                Ivo Calado                                IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                   Sintaxe JSP              EL e Taglibs   Model View Controller



Estruturas de controle


Importando p´ginas
            a
               Um requisito comum que temos nas aplica¸˜esWeb hoje em
                                                             co
               dia ´ colocar cabe¸alhos e rodap´ nas p´ginas do nosso
                   e               c             e       a
               sistema
               Esses cabe¸alhos e rodap´s podem ter informa¸˜es da
                           c              e                     co
               empresa, do sistema e assim por diante
               O problema ´ que, na grande maioria das vezes, todas as
                             e
               p´ginas da nossa aplica¸˜o precisam ter esse mesmo
                 a                      ca
               cabe¸alho e rodap´s
                    c              e
               Para isso, podemos fazer uso de inclus˜es de arquivos para
                                                       o
               possibilitar a inclus˜o de outras p´ginas j´ existentes
                                    a             a        a

          <c : i m p o r t u r l=" cabecalho . jsp " />

36 / 39                                      Ivo Calado                             IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                 Sintaxe JSP            EL e Taglibs       Model View Controller



Estruturas de controle


Outras tags JSTL existentes


               formatDate: possibilita formatar objetos do tipo Data sob os
               mais diversos aspectos
               curl: permite a localiza¸˜o simplificada de recursos dentro do
                                       ca
               projeto
               catch: bloco do tipo try/catch
               c:forTokens: for em tokens (ex: “a,b,c” separados por v´
                                                                      ırgula)
               c:out: sa´
                        ıda
               etc


37 / 39                                  Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                Sintaxe JSP            EL e Taglibs        Model View Controller



Introdu¸˜o
       ca


Servlet ou JSP?
          Ao se trabalhar com Servlets e JSPs temos um tradeoff
              Se utilizarmos apenas Servlets, o que acontece quando
              precisamos mudar o design da p´gina? O designer n˜o vai
                                               a                   a
              saber Java para editar a Servlet, recompilar e coloc´-la no
                                                                  a
              servidor
              Imagine usar apenas JSP. Ficar´ ıamos com muito scriptlet, que
              ´ muito dif´ de dar manuten¸˜o. O JSP foi feito apenas
              e          ıcil                ca
              para apresentar o resultado, e ele n˜o deveria fazer acessos a
                                                  a
              banco de dados e nem fazer a instancia¸˜o de objetos. Isso
                                                      ca
              deveria estar em c´digo Java, na Servlet
                                o



38 / 39                                 Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca                Sintaxe JSP            EL e Taglibs        Model View Controller



Introdu¸˜o
       ca


Servlet ou JSP?
          Ao se trabalhar com Servlets e JSPs temos um tradeoff
              Se utilizarmos apenas Servlets, o que acontece quando
              precisamos mudar o design da p´gina? O designer n˜o vai
                                               a                   a
              saber Java para editar a Servlet, recompilar e coloc´-la no
                                                                  a
              servidor
              Imagine usar apenas JSP. Ficar´ ıamos com muito scriptlet, que
              ´ muito dif´ de dar manuten¸˜o. O JSP foi feito apenas
              e          ıcil                ca
              para apresentar o resultado, e ele n˜o deveria fazer acessos a
                                                  a
              banco de dados e nem fazer a instancia¸˜o de objetos. Isso
                                                      ca
              deveria estar em c´digo Java, na Servlet
                                o
          Uma ideia mais interessante ´ usar o que ´ bom de cada um dos
                                      e            e
          dois!!
38 / 39                                 Ivo Calado                                  IFAL
Programa¸˜o para Web
        ca
Introdu¸˜o
       ca              Sintaxe JSP             EL e Taglibs       Model View Controller



Introdu¸˜o
       ca


Objetivo




             O ideal ent˜o ´ que a Servlet fa¸a o trabalho ´rduo, a tal da
                        a e                  c             a
             l´gica de neg´cio
              o            o
             E o JSP apenas apresente visualmente os resultados gerados
             pela Servlet.




39 / 39                                Ivo Calado                                 IFAL
Programa¸˜o para Web
        ca

Mais conteúdo relacionado

Destaque

Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)Ivo Calado
 
Tutorial sobre Bootstrap
Tutorial sobre BootstrapTutorial sobre Bootstrap
Tutorial sobre BootstrapIvo Calado
 
Programação para Kernel Linux - Parte 2
Programação para Kernel Linux - Parte 2Programação para Kernel Linux - Parte 2
Programação para Kernel Linux - Parte 2Ivo Calado
 
Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Ivo Calado
 
XHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup LanguageXHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup LanguageIvo Calado
 
Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre JqueryIvo Calado
 
Introdução ao Excel 2010
Introdução ao Excel 2010Introdução ao Excel 2010
Introdução ao Excel 2010José Calado
 
Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010Daniel Brandão
 
Curso de Excel 2007/2010 (Aula 01 e 02)
Curso de Excel 2007/2010 (Aula 01 e 02)Curso de Excel 2007/2010 (Aula 01 e 02)
Curso de Excel 2007/2010 (Aula 01 e 02)Instituto Inovar
 
Excel Básico
Excel BásicoExcel Básico
Excel Básicoaprcds
 
Passo a passo para baixar slides
Passo a passo para baixar slidesPasso a passo para baixar slides
Passo a passo para baixar slidesDênia Cavalcante
 
Como baixar os estudo no slideshare
Como baixar os estudo no slideshareComo baixar os estudo no slideshare
Como baixar os estudo no slideshareMoisés Sampaio
 

Destaque (14)

Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)
 
Tutorial sobre Bootstrap
Tutorial sobre BootstrapTutorial sobre Bootstrap
Tutorial sobre Bootstrap
 
Programação para Kernel Linux - Parte 2
Programação para Kernel Linux - Parte 2Programação para Kernel Linux - Parte 2
Programação para Kernel Linux - Parte 2
 
Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1
 
CSS
CSSCSS
CSS
 
XHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup LanguageXHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup Language
 
Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre Jquery
 
Introdução ao Excel 2010
Introdução ao Excel 2010Introdução ao Excel 2010
Introdução ao Excel 2010
 
Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010
 
Curso de Excel 2007/2010 (Aula 01 e 02)
Curso de Excel 2007/2010 (Aula 01 e 02)Curso de Excel 2007/2010 (Aula 01 e 02)
Curso de Excel 2007/2010 (Aula 01 e 02)
 
Excel Básico
Excel BásicoExcel Básico
Excel Básico
 
Aula I - Excel
Aula I - ExcelAula I - Excel
Aula I - Excel
 
Passo a passo para baixar slides
Passo a passo para baixar slidesPasso a passo para baixar slides
Passo a passo para baixar slides
 
Como baixar os estudo no slideshare
Como baixar os estudo no slideshareComo baixar os estudo no slideshare
Como baixar os estudo no slideshare
 

Semelhante a Introdução às JSP - Java Server Pages

JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves PagesAmanda Luz
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228MoisesInacio
 
Tutorial JSP parte 1
Tutorial JSP parte 1Tutorial JSP parte 1
Tutorial JSP parte 1Bruno Strik
 
Applets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-inApplets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-inSerge Rehem
 
Javabahia applets novojavaplugin
Javabahia applets novojavapluginJavabahia applets novojavaplugin
Javabahia applets novojavapluginSerge Rehem
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
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
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no javaPedro Cavalero
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento webValdir Junior
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Servlets E Applet
Servlets E AppletServlets E Applet
Servlets E Appletasiramage
 

Semelhante a Introdução às JSP - Java Server Pages (20)

JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Tutorial JSP parte 1
Tutorial JSP parte 1Tutorial JSP parte 1
Tutorial JSP parte 1
 
Curso de JSP
Curso de JSPCurso de JSP
Curso de JSP
 
Applets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-inApplets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-in
 
Javabahia applets novojavaplugin
Javabahia applets novojavapluginJavabahia applets novojavaplugin
Javabahia applets novojavaplugin
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
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
 
Java4web
Java4webJava4web
Java4web
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no java
 
Jsf
JsfJsf
Jsf
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento web
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Servlets E Applet
Servlets E AppletServlets E Applet
Servlets E Applet
 
Minicurso jsf2.0
Minicurso jsf2.0Minicurso jsf2.0
Minicurso jsf2.0
 

Introdução às JSP - Java Server Pages

  • 1. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Programa¸˜o para Web ca Java Server Pages (JSP) Ivo Calado Instituto Federal de Educa¸˜o, Ciˆncia e Tecnologia de Alagoas ca e 29 de Janeiro de 2013 1 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 2. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Roteiro 1 Introdu¸˜o ca 2 Sintaxe JSP 3 EL e Taglibs 4 Model View Controller 2 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 3. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Observa¸˜o sobre o conte´do ca u Parte deste material ´ baseada na apostila FJ-21 - Java para e Desenvolvimento Web desenvolvido pela Caelum (www.caelum.com.br) 3 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 4. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Defini¸˜es co Colocando o HTML no seu devido lugar At´ agora, vimos que podemos escrever conte´do dinˆmico e u a atrav´s de Servlets e Por´m, se toda hora criarmos Servlets para fazermos esse e trabalho, teremos muitos problemas na manuten¸˜o das ca nossas p´ginas e tamb´m na legibilidade do nosso c´digo a e o Porque? porque sempre aparece c´digo Java misturado com c´digo HTML. o o Imagine todo um sistema criado com Servlets fazendo a gera¸˜o ca do HTML 4 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 5. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Defini¸˜es co Colocando o HTML no seu devido lugar Em situa¸˜es onde a presen¸a do c´digo HTML ´ superior a co c o e do c´digo Java precisamos de uma solu¸˜o que possibilite o ca inverter os pap´is! e Ao inv´s de inserir c´digo HTML dentro do c´digo Java, e o o inserimos c´digo Java dentro do HTML! o Algo similar ao ASP e PHP Essa tecnologia ´ o JavaServer Pages (JSP). e 5 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 6. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Defini¸˜es co Nosso primeiro exemplo Vejamos o nosso primeiro exemplo em JSP bem-vindo.jsp <html> <body> Bem v i n d o </ body> </ html> Novidade? Fica claro que uma p´gina JSP nada mais ´ que um arquivo a e baseado em HTML, com a extens˜o .jsp a Podemos escrever tamb´m c´digo Java, para que possamos e o adicionar comportamento dinˆmico em nossas p´ginas, como a a declara¸˜o de vari´veis, condicionais (if), loops (for, while) ca a 6 / 39 entre outros Ivo Calado IFAL Programa¸˜o para Web ca
  • 7. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Defini¸˜es co Nosso primeiro exemplo II <body> <%−− Exemplo de c o m e n t ´ r i o−−% a > <% S t r i n g mensagem = " Meu primeiro exemplo din^ mico com a JSP " ; % > <% o u t . p r i n t l n ( mensagem ) ; %><br /> <% S t r i n g d e s e n v o l v i d o = " Desenvolvido por todos !" ; %> <s t r o n g><%=d e s e n v o l v i d o%></ s t r o n g><br /> <% System . o u t . p r i n t l n ( " Tudo foi executado !" ) ; %> </ body> Porque a mensagem “Tudo foi executado!” n˜o foi exibida na a resposta? 7 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 8. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Defini¸˜es co Sobre o c´digo JSP o O c´digo Java ´ adicionado entre os elementos <% e %> o e Existe um objeto out.println que j´ envia a sa´ direta para o a ıda usu´rio. Lembra algum outro objeto? a Chamada a System.out.println ir´ enviar a sa´ para a sa´ a ıda ıda padr˜o do servidor! a 8 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 9. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Defini¸˜es co Objetos Impl´ ıcitos Em JSP alguns objetos s˜o impl´ a ıcitos request HttpServletRequest response HttpServletResponse out JSPWriter session HttpSession application ServletContext config ServletConfig pageContext PageContext page HttpJspPage 9 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 10. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Defini¸˜es co C´digo HTML entre o c´digo JSP o o A l´gica do c´digo JSP pode ser intercalada com c´digo o o o HTML No exemplo abaixo, tudo que estiver entre a defini¸˜o do loop ca e o s´ ımbolo de fechamento (}) ser´ repetido! a <body> <% f o r ( i n t i = 0 ; i < 1 0 ; i ++) { %> <!−− F o r a do C o d i g o J a v a −−> ´ Passou a q u i = <%= i % > <br /> <%} % > </ body> 10 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 11. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Diretivas Diretivas S˜o mensagens ao container JSP, contendo informa¸˜es de a co como o container JSP deve traduzir as p´ginas a A sintaxe b´sica ´ utiliza uma estrutura chave valor a e <%@ d i r e t i v a ( a t r i b u t o=" valor " ) ∗%> Existem trˆs tipos de diretivas: e Diretiva de p´gina: page a Diretiva de inclus˜o: include a Diretiva de taglib: taglib 11 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 12. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Diretivas A diretiva page A diretiva page possibilita a configura¸˜o de diversas ca propriedades da p´gina como contentType, buffer, import etc a <%@ page a t r i b u t o=" valor "%> S˜o definidos 11 tipos de atributos a language: Nome da linguagem do script (padr˜o “Java”) a info: String a ser recuperada via getServletInfo contentType: Tipo MIME identificando o tipo do conte´do e a u codifica¸˜o ca import: an´logo ao import numa classe Java a session: indica se a p´gina participar´ do controle de sess˜o a a a errorPage: pagina de erro a ser utilizada caso alguma exce¸˜o ca seja lan¸ada c 12 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 13. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Diretivas A diretiva include Permite a inclus˜o de conte´dos de outros arquivos na p´gina a u a JSP ´´ E util para inclus˜o de cabe¸alhos e rodap´s de p´gina, por a c e a exemplo <%@ i n c l u d e f i l e =" arquivo . jsp "%> A localiza¸˜o do arquivo ´ em rela¸˜o a JSP. Caso seja ca e ca colocado um / no come¸o leva-se em considera¸˜o o contexto c ca do servidor. Mais a frente veremos uma maneira mais robusta de trabalhar com localiza¸˜es de recursos! co 13 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 14. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Diretivas A diretiva taglib Possibilita extender a funcionalidade do JSP Iremos abordar ele com mais detalhes a frente... :) 14 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 15. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Sintaxe Defini¸˜o de c´digo ca o Existem trˆs formas de definir c´digo em uma p´gina JSP e o a Declara¸˜es: Permitem a defini¸˜o de vari´veis e m´todos co ca a e Express˜es: Converte o resultado do c´digo em uma string a o o ser anexada no c´digo JSP o Scriptlets: Permitem a escrita de c´digo fora de qualquer o m´todo a ser executado (an´logo a um c´digo JavaScript) e a o 15 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 16. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Sintaxe Exemplo Scriptlets <% w h i l e ( i−− != 0 ) { o u t . p r i n t l n ( " Texto " ) ; }%> Express˜es o Hoje s ˜ o < a %= getSystemTime ( ) %><br /> Declara¸˜es co <%! i n t i = 10; S t r i n g getSystemTime ( ) { r e t u r n C a l e n d a r . g e t I n s t a n c e ( ) . getTime ( ) . t o S t r i n g ( ) ; } 16 / 39 %> Ivo Calado IFAL Programa¸˜o para Web ca
  • 17. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Sintaxe Exercicio I: Criando uma lista de contatos Crie uma classe chamada Contato, dentro de algum pacote espec´ıficos Adicione 3 atributos: Nome, Endere¸o e Idade c Crie uma classe ContatosDao com um m´todolo que retorne e uma lista de Contatos (pelo menos 5 elementos) Com base no exemplo anterior, crie uma p´gina JSP que a contenha uma tabela e cada coluna da tabela represente um contato Fa¸a uso do Ctrl + espa¸o no Eclipse para importar o que c c for necess´rio e veja como ´ feito o import a e 17 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 18. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller EL: Expression Language At´ agora conseguimos desacoplar o Java do HTML? e O objetivo inicial do JSP era redudir o acoplamento entre o c´digo Java e o HTML o Pelo que vimos at´ agora isso foi obtido? Porque? e N˜o! O c´digo Java continua sendo misturado com HTML e a o um designer Web precisa entender l´gica de programa¸˜o o ca E existe hoje em dia no mercado muitas aplica¸˜es feitas co inteiramente utilizando scriptlets e escrevendo c´digo Java, o PHP e outras no meio dos HTMLs 18 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 19. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller EL: Expression Language EL: Expression Language Para remover um pouco do c´digo Java que fica na p´gina o a JSP, a Sun desenvolveu uma linguagem chamada Expression Language que ´ interpretada pelo servlet container e O acesso a express˜es ´ realizada a partir da estrutura ${expr} o e Vejamos como criar uma p´gina que receba um parˆmetro e a a exiba-o na tela 19 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 20. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller EL: Expression Language Exemplo EL <body> Testando s e u s parametros : <br /> A i d a d e ´ $ { param . i d a d e } . e </ body> param ´ um objeto nativo, assim como out que contem um e mapa com parˆmetros recebidos na requisi¸˜o a ca 20 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 21. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller EL: Expression Language Exemplo: avalia¸˜o de express˜es ca o <body> <h2>O p e r a d o r e s de Compara¸ ˜ o</h2> ca 4 > ’ 3 ’ => $ {4 > ’ 3 ’ }<br /> ’ 4 ’ > 3 => $ { ’ 4 ’ > 3}<br /> ’ 4 ’ > ’3’=> $ { ’ 4 ’ > ’ 3 ’ } <br /> 4 >= 3 => $ {4 >= 3}<br /> 4 <= 3 = > $ {4 < 3}< br /> 4 == ’ 4 ’ => $ {4 == 4}<br /> </ body> 21 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 22. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Taglibs Motiva¸˜o ca Come¸amos a melhorar nossos problemas com rela¸˜o ` c ca a mistura de c´digo Java com HTML atrav´s da Expression o e Language No entanto, ela sozinha n˜o pode nos ajudar muito, pois ela a n˜o nos permite, por exemplo, instanciar objetos, fazer a verifica¸˜es condicionais (if else), itera¸˜es como em um for e co co assim por diante Sendo assim, precisamos de um mecanismo baseado em tags para representar nosso l´gica de neg´cio! o o Para isso, fazemos uso das Taglibs 22 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 23. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Taglibs JavaBeans: acesso aos atributos Antes de entrarmos diretamente em Taglibs precisamos aprender sobre Javabeans. Um Bean ´ um tipo de objeto e Java, com construtor default e os respectivos getters e setters Instˆnci´-los na nossa p´gina JSP n˜o ´ complicado. Basta a a a a e utilizarmos a tag correspondente para essa fun¸˜o, que no ca nosso caso ´ a < jsp : useBean > e <jsp:useBean id=”contato”class=”br.edu.ifal.pweb.classes.Contato”/> Agora podemos fazer uso das express˜es EL para acessar o valor de o contato. Exemplo: ${contato.nome} 23 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 24. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Taglibs JavaBeans No nosso exemplo, os atributos de Contato foram definidos como privados mas estamos conseguindo acess´-los. Por que a isso? Na verdade n˜o estamos acessando o atributo privado. a Quando fazemos contato.nome o container implicitamente chama o m´todo getNome e 24 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 25. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Taglibs JavaBeans: Modificando propriedades Para modificar uma propriedade em um bean, fazemos uso da propriedade jsp:setProperty <body> <%c o n t a t o . setNome ( " teste " ) ; %> < j s p : s e t P r o p e r t y p r o p e r t y=" endereco " v a l u e=" Rua das casas " name=" contato " /> Nome = $ { c o n t a t o . nome} <br /> Endereco = ${ cont ato . endereco } ¸ </ body> 25 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 26. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller JSTL JavaServer Pages Standard Tag Library JSTL ´ a API que encapsulou em tags simples toda a e funcionalidade que diversas p´ginas Web precisam a Exemplos de funcionalidades incluem: controle de la¸os (fors), c controle de fluxo do tipo if else, manipula¸˜o de dados XML e ca a internacionaliza¸˜o de sua aplica¸˜o ca ca Existem ainda outras partes da JSTL, por exemplo aquela que acessa banco de dados e permite escrever c´digos SQL na o nossa p´gina. Mas se o designer n˜o compreende Java o que a a diremos de SQL? O uso de tal parte da JSTL ´ desencorajado. e 26 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 27. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller JSTL Instala¸˜o do JSTL ca Para instalar a implementa¸˜o mais famosa da JSTL basta ca baixar a mesma no site https://jstl.dev.java.net/ Adicionar as libs no diret´rios libs do projeto o Para removermosas as notifica¸˜es de erros no Eclipse, co teremos de adicionar as libs no build path Adicione a referˆncia ao conjunto de taglibs do JSTL e (equivalente a um import) atrav´s da seguinte linha e <%@ t a g l i b u r i=" http :// java . sun . com / jsp / jstl / core " p r e f i x="c" % > 27 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 28. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle forEach A JSTL core disponibiliza uma tag chamada c:forEach capaz de iterar por uma cole¸˜o ca No c:forEach, precisamos indicar a cole¸˜o na qual vamos ca iterar, atrav´s do atributo items e tamb´m como chamar´ o e e a objeto que ser´ atribu´ para cada itera¸˜o no atributo var. a ıdo ca <c : f o r E a c h v a r=" ct " i t e m s="${ contato . lista }" v a r S t a t u s= " id "> <t r b g c o l o r="#${ id . count % 2 == 0 ? ’aaee88 ’ : ’ffffff ’ }"> <td>$ { i d . c o u n t }</ td> <td>$ { c t . nome}</ td> <td>$ { c t . i d a d e }</ td> </ t r> </ c : f o r E a c h> 28 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 29. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Atributos var: vari´vel a ser utilizada na itera¸˜o a ca items: fonte dos dados varStatus: posi¸˜o corrente ca 29 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 30. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Exerc´ ıcio Altere o exemplo para que seja a coluna e n˜o a linha da tabela a apresentada 30 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 31. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Criando Ifs E se quisermos alterar a tabela para que seja exibida uma obserca¸˜o caso o contato tenha menos que 18 anos ca Fazermos uso da Tag If <c : f o r E a c h v a r=" ct " i t e m s="${ contato . lista }" v a r S t a t u s= " id "> <t r b g c o l o r="#${ id . count % 2 == 0 ? ’aaee88 ’ : ’ffffff ’ }"> <td>$ { i d . c o u n t }</ td> <td>$ { c t . nome}</ td> <td>$ { c t . i d a d e }</ td> <td><c : i f t e s t="${ ct . idade < 18 }"> Menor de I d a d e</ c : i f > </ td> </ t r> </ c : f o r E a c h> 31 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 32. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Semˆntica dos parˆmetros a a test: Recebe como parˆmetro uma express˜o a ser avaliada a a como true ou false Al´m de testes diretos, operadores de EL podem ser utilizados e <c : i f t e s t="${ not empty variavel }"> </ c : i f > 32 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 33. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Simulando o else O JSTL n˜o possui uma tag else para complementar o if a Por´m podemos utilizar a estrutura choose para este prop´sito e o <c : c h o o s e> <c : when t e s t="${ ct . idade < 18} "> Menor de i d a d e </ c : when> <c : o t h e r w i s e>Maior de I d a d e</ c : o t h e r w i s e> </ c : c h o o s e> 33 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 34. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Exercicio para casa Pesquisar sobre os demais operadores do EL 34 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 35. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Exercicio Adicione um atributo homepage ` classe Contato. a No m´tododo getLista de ContatoDao adicione para alguns e usu´rios uma p´gina de usu´rio a a a Altere o exemplo de listagem usando JSTL, adicionando uma nova coluna Caso o usu´rio possua a homepage definida exiba na coluna a correspondente como um link, caso contr´rio exiba a a mensagem “N˜o dispon´ a ıvel” 35 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 36. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Importando p´ginas a Um requisito comum que temos nas aplica¸˜esWeb hoje em co dia ´ colocar cabe¸alhos e rodap´ nas p´ginas do nosso e c e a sistema Esses cabe¸alhos e rodap´s podem ter informa¸˜es da c e co empresa, do sistema e assim por diante O problema ´ que, na grande maioria das vezes, todas as e p´ginas da nossa aplica¸˜o precisam ter esse mesmo a ca cabe¸alho e rodap´s c e Para isso, podemos fazer uso de inclus˜es de arquivos para o possibilitar a inclus˜o de outras p´ginas j´ existentes a a a <c : i m p o r t u r l=" cabecalho . jsp " /> 36 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 37. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Estruturas de controle Outras tags JSTL existentes formatDate: possibilita formatar objetos do tipo Data sob os mais diversos aspectos curl: permite a localiza¸˜o simplificada de recursos dentro do ca projeto catch: bloco do tipo try/catch c:forTokens: for em tokens (ex: “a,b,c” separados por v´ ırgula) c:out: sa´ ıda etc 37 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 38. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Introdu¸˜o ca Servlet ou JSP? Ao se trabalhar com Servlets e JSPs temos um tradeoff Se utilizarmos apenas Servlets, o que acontece quando precisamos mudar o design da p´gina? O designer n˜o vai a a saber Java para editar a Servlet, recompilar e coloc´-la no a servidor Imagine usar apenas JSP. Ficar´ ıamos com muito scriptlet, que ´ muito dif´ de dar manuten¸˜o. O JSP foi feito apenas e ıcil ca para apresentar o resultado, e ele n˜o deveria fazer acessos a a banco de dados e nem fazer a instancia¸˜o de objetos. Isso ca deveria estar em c´digo Java, na Servlet o 38 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 39. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Introdu¸˜o ca Servlet ou JSP? Ao se trabalhar com Servlets e JSPs temos um tradeoff Se utilizarmos apenas Servlets, o que acontece quando precisamos mudar o design da p´gina? O designer n˜o vai a a saber Java para editar a Servlet, recompilar e coloc´-la no a servidor Imagine usar apenas JSP. Ficar´ ıamos com muito scriptlet, que ´ muito dif´ de dar manuten¸˜o. O JSP foi feito apenas e ıcil ca para apresentar o resultado, e ele n˜o deveria fazer acessos a a banco de dados e nem fazer a instancia¸˜o de objetos. Isso ca deveria estar em c´digo Java, na Servlet o Uma ideia mais interessante ´ usar o que ´ bom de cada um dos e e dois!! 38 / 39 Ivo Calado IFAL Programa¸˜o para Web ca
  • 40. Introdu¸˜o ca Sintaxe JSP EL e Taglibs Model View Controller Introdu¸˜o ca Objetivo O ideal ent˜o ´ que a Servlet fa¸a o trabalho ´rduo, a tal da a e c a l´gica de neg´cio o o E o JSP apenas apresente visualmente os resultados gerados pela Servlet. 39 / 39 Ivo Calado IFAL Programa¸˜o para Web ca