SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
JSP
   Esse modulo apresenta tudo que é necessário
    para implementar servlets escrevendo Java
    Server Pages
       Sintaxe dos marcadores JSP e objetos
       Funcionamento
       Como implantar e depurar




                                                  1
JSP
   Tudo o que vale para servlets continua valendo
    para Java Server Pages
       Um JSP é uma servlet durante a execução
       Escrever código em JSP é como escrever código
        dentro do doPost() ou doGet() de um servlet com os
        objetos request, response, out, session e outros já
        definidos
       Um JSP, depois de carregado, é tão veloz quando
        uma servlet (pois um JSP é uma servlet)
       JSP é mais fácil de codificar e implantar, mas é mais
        difícil de depurar

                                                            2
Problema das Servlets
   Servlets forçam o programador a embutir código
    HTML dentro de código Java
       Desvantagem se a maior parte do que tem que ser
        gerado é texto ou HTML estático
       Mistura as coisas, o programador tem que ser um
        bom Designer e se virar sem ferramentas gráficas




                                                           3
O que são JSP’s
   JSP é uma tecnologia padrão, baseada em
    templates para servlets. O mecanismo que a
    traduz é embutido no servidor
   Exemplo de um código em JSP




                                                 4
O que são JSP’s
   Em um servidor que suporta JSP, a pagina JSP é
    transformada (compilada) em uma servlet
   A forma mais simples de criar documentos JSP, é:
       Mudar a extensão de um arquivo HTML para JSP
       Colocar o documento em um servidor onde suporte JSP
   Fazendo isso, o servidor gera uma servlet
       A compilação é feita no primeiro acesso
       Nos acessos subseqüentes, a requisição é
        redirecionada a servlet gerada


                                                        5
Exemplos JSP’s
   Transformado em um JSP, um arquivo HTML
    pode conter :
       Blocos de código (scriptlets) : <% .... %>
       Expressões : <%= ..... %>




                                                     6
Ciclo de vida
   Quando uma requisição é mapeada para o JSP, o
    container :
       Verifica se a servlet correspondente à pagina é mais
        antigo que a pagina (ou se não existe)
       Se a servlet não existir, ou for mais antiga, a pagina
        JSP será compilada para gerar a nova servlet




                                                                 7
Ciclo de vida
   Desse ponto em diante o ciclo de vida é similar ao
    das servlets, mas os métodos são diferentes
       Se a servlet ainda não existir, ela será instanciada, e
        seu método jspInit() é chamado
       Para cada requisição, seu método _jspService(req,res)
        é chamado
       No fim da vida, o método jspDestroy() é chamado




                                                             8
Como funciona uma JSP




                    9
Sintaxe dos elementos da JSP
   Todos os elementos são interpretados no
    servidor (jamais chegam no navegador)
       Diretivas: <%@ ...%>
       Declarações: <%! ... %>
       Expressões: <%= ... %>
       Scriptlets: <% ... %>
       Comentários: <%-- .... --%>
       Ações: <jsp:acao ... />
       Tags: <prefixo:elemento ... />

                                              10
Diretivas
   Contém informações necessárias para gerar a
    servlet
   Sintaxe:
       <%@ diretiva atrituto1 atributo2 .... %>
   Principais diretivas:
       page : atributos relacionados à página
       include : inclui outros arquivos na página
       tablib : declara biblioteca de custon tags usadas
        na página

                                                        11
Diretivas
   Exemplos:




                      12
A diretiva page
   Atributos de <%@ page %>
       language=“java”                                 (default)
       session=“true”                                  (default)
       contentType=“text/html; charset=ISSO-8859-1” (default)
       extends=“treinamento.FonteJSP”       (default : nenhum)
       import=“java.util.*”              (default : java.lang.*)
       autoFlush=“true”                                (default)
       isThreadSafe=“true”                             (default)
       errorPage=“/erros/erro.jsp”         (default : nenhum)
       isErrorPage=“false”                             (default)

                                                             13
A diretiva page
   session
       Se true, aplicações JSP podem manter sessões do usuário
        abertas usando HTTPSession
       Se uma página declara false, ela não terá acesso a
        objetos gravados na sessão do usuário
   isThreadSafe
       Se true, só um cliente poderá acessar a página ao mesmo
        tempo



                                                            14
A diretiva page
   isErrorPage
       Se true, a página possui um objeto exception e pode
        extrair seus dados quando alvo de redirecionamento
        devido a erro.
   errorPage
       URL da página para o qual o controle será redirecionado
        na ocorrência de um erro ou exceção. Deve ser uma
        página com isErrorPage=“true”



                                                              15
Declarações
   Declarações dão acesso ao corpo da classe da
    servlet. Permitem a declaração de variáveis e
    métodos em uma JSP
   Úteis para declarar:
       Variáveis e métodos de instância (pertencentes a servlet)
       Variáveis e métodos estáticos (pertencentes a classe da
        servlet)
   Sintaxe:
       <%! Declaração %>

                                                              16
Declarações
   Exemplos




                       17
Declarações (métodos especiais)
   jspInit() e jspDestroy() permitem maior controle
    sobre o ciclo de vida da servlet
       Ambos são opcionais
       Úteis para inicializar conexões, obter recursos, etc...
   Inicialização da página (chamado uma vez, antes
    da primeira requisição, após o instânciamento)




                                                                  18
Declarações (métodos especiais)
   Destruição da página (ocorre quando a servlet
    deixa a memória )




                                                    19
Expressões e scriptlets
   Expressões: Quando processadas, retornam um
    valor que é inserido na página
   Sintaxe:
       <%= expressão %>
   Equivale a um out.print(expressão), portanto não
    pode terminar em ponto-e-vírgula
       Todos os valores resultantes das expressões são
        convertidos em String antes de serem colocados na tela


                                                          20
Expressões e scriptlets
   Scriptlets: Blocos de código que são executados
    sempre que uma pagina JSP é processada
   Correspondem a inserção de seqüências de
    instruções no método _jspService()
   Sintaxe:
       <% instruções java ; %>




                                                  21
Comentários
   Comentários HTML <!-- --> não servem para
    comentar JSP
   <!-- o texto ignorado pelo navegador, mas não
    pelo servidor -->
   Comentários JSP: podem ser usados para comentar
    blocos JSP
   <%-- texto , código java , <HTML> ou tags <
    %JSP%> ignorados pelo servidor --%>

                                                22
Ações padronizadas
   Sintaxe:




                              23
Ações padronizadas
   Permitem realizar operações externas ao servlet
    (tempo de execução)
       Concatenação de várias páginas em uma única resposta
         
             <jsp:forward> e <jsp:include>
       Inclusão de JavaBeans
            <jsp:useBean>, <jsp:setProperty> e <jsp:getProperty>




                                                                    24
Ações padronizadas (exemplos)




                          25
Objetos implícitos JSP
   São variáveis locais previamente inicializadas
   Disponíveis nos blocos <% ... %> de qualquer
    página (exceto session e exception) que dependem
    de @page para serem ativados/desativados




                                                  26
Objetos implícitos JSP
   Objetos do servlet
       page
       config
   Objetos contextuais
       session
       application
       pageContext




                                             27
Objetos implícitos JSP
   Entrada e saída
       request
       response
       out
   Controle de exceções
       exception




                                              28
page
   Referência para o servlet gerado pela página
       Equivale ao “this” no servlet
   Pode ser usada para chamar qualquer método ou
    variável do servlet ou superclasses
   Exemplo:




                                                   29
config
   Referência para os parâmetros de inicialização da
    servlet (se existirem) através do objeto
    ServletConfig
   Equivale a page.getSessionConfig()
   Exemplo:




                                                    30
config
   Parâmetros de inicialização são fornecidos na
    configuração do servlet no servidor, através de
    <init-param> em <servlet> no web.xml, é preciso
    declarar a página no web.xml




                                                 31
request
   Referência para os dados de entrada enviados na
    requisição do cliente (GET ou POST)
       É um objeto do tipo javax.servlet.http.HttpServletRequest
   Usado para:
       Guardar e recuperar atributos que serão usadas
        enquanto durar a requisição
       Recuperar parâmetros passados pelo cliente
       Descobrir o método usado (GET , POST)
         
             String método = request.getMethod();


                                                             32
exemplos
   URL no navegador:
       http://servidor/programa.jsp?nome=leandro&id=5
   Recuperação dos parâmetros
    <% String nome = request.getParameter(“nome”);
        String idStr = request.getParameter(“id”);
    %>
    <p> Bom dia <%=nome%>




                                                         33
response
   Referência aos dados de saída enviados na resposta
       É um objeto do tipo javax.servlet.http.HttpServletResponse
   Usado para:
       Definir o tipo de dados retornados (default: text/html)
       Redirecionar
            response.sendRedirect(“pagina2.html”);




                                                                  34
out
   Representa o stream de saída da página
       É um objeto javax.servlet.jsp.JspWriter
   Equivalente ao response.getWriter()
   Principais métodos
       print() e println() (imprimem Unicode)




                                                  35
out
   Os trechos abaixo são equivalentes




                                         36
session
   Representa a sessão do usuário
       Uma instância de javax.servlet.http.HttpSession
   Útil para armazenar valores que deverão
    permanecer durante a sessão (set/getAttribute() )




                                                          37
application
   Representa o contexto ao qual a página pertence
       Instância de javax.servlet.ServletContext
   Útil para guardar valores que devem persistir pelo
    tempo que durar a aplicação (até que a servlet
    seja destruída pelo servidor )




                                                       38
pageContext
   Instância de javax.servlet.jsp.PageContext
   Oferece acesso a todos os outros objetos implícitos
       getPage() retorna page
       getRequest() retorna request
       getResponse() retorna response
       getOut() retorna out
       getSession() retorna session
       getServletConfig() retorna servletConfig
       getServletContext() retorna application
       getException() retorna exception


                                                            39
pageContext
   Constrói a página (mesma resposta) com
    informações localizadas em outras URL’s
       pageContext.forward(String) similar a <jsp:forward>
       pageContext.include(String) similar a <jsp:include>




                                                          40
Escopo dos objetos
   A persistência das informações depende do
    escopo dos objetos onde elas estão disponíveis
   Constantes da classe PageContext identificam o
    escopo dos objetos




                                                 41
exception
   Não existe em todas as páginas, apenas em
    páginas designadas como páginas de erro
    <%@ page isErrorPage=“true” %>
   Instância de java.lang.Throwable
   Exemplo:




                                                42
Exercícios
   Escreva um JSP data.jsp que imprima a data de
    hoje.




                                               43
Exercícios
   Escreva um JSP temperatura.jsp que imprima
    uma tabela HTML de conversão Celsius-
    Fahrenheit entre -40 e 100 graus Celsius com
    incrementos de 10 em 10
       A fórmula é F = 9/5*C + 32




                                                   44
Exercícios
   Altere o exercício anterior ,chame-o de
    temperaturaRequest.jsp, de forma que a tela
    apresente um campo texto para a entrada de um
    valor em celsius em um formulário que envie os
    dados como POST, a página deve mostrar:
       O método pelo qual a página foi acessada
       Mostrar na tela em vermelho o correspondente valor
        em Fahrenheit do valor passado em celsius



                                                        45
Exercícios
   Altere o exercício anterior ,chame-o de
    temperaturaErro.jsp, de forma que a tela
    redirecione qualquer exceção para uma tela de
    erro erro.jsp (que você deve criar)




                                                46
Exercícios
   Crie um JSP chamado novaMensagem.jsp que
    contenha um formulário com o campo
    mensagem ,esse JSP deverá passar a mensagem
    por método POST para o JSP
    gravaMensagem.jsp ,o qual pegará a
    mensagem ,e a colocará em sessão.
   Crie um JSP chamado listaMensagem.jsp que
    liste as mensagens guardadas em sessão


                                            47
Exercícios
   Crie um html que contenha um formulário com
    login e senha, e que submeta para uma servlet
    chamada treinamento.exercicios.ServletLogin
    usando método POST
   A ServletLogin deverá autenticar o login e senha
    baseado no arquivo senhas.txt, e redirecionar
    para o formulário caso o login seja inválido, para
    o JSP compras.jsp caso o perfil seja “usuario” ,
    ou para o JSP adm.jsp caso o perfil seja “adm”.

                                                   48
Exercícios
   A tela adm.jsp deve permitir o cadastro de produtos na
    sessão
   A tela compras.jsp deve possuir componentes JSP de
    cabeçalho e rodapé, o rodapé deve conter o nome do
    usuário ,e o cabeçalho deve conter a lista de produtos
    cadastrados, essa tela deve permitir o usuário selecionar
    um produto, e adiciona-lo num carrinho de compras, e
    deve ter uma ação de efetuar compra, redirecionando
    para a tela lista.jsp, a qual deve mostrar os itens
    selecionados para a compra.


                                                          49

Contenu connexe

Tendances

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
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...Professor Samuel Ribeiro
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoEduardo Mendes
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
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
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTMario Sergio
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...Professor Samuel Ribeiro
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 

Tendances (20)

Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
JSPs Introdução Parte 1
JSPs Introdução Parte 1JSPs Introdução Parte 1
JSPs Introdução Parte 1
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuração
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
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
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 

En vedette (14)

Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em java
 
Tutorial JSP parte 1
Tutorial JSP parte 1Tutorial JSP parte 1
Tutorial JSP parte 1
 
Java one
Java oneJava one
Java one
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
JSP: Etiquetas
JSP: EtiquetasJSP: Etiquetas
JSP: Etiquetas
 
JSP: Introdução Parte 1
JSP: Introdução Parte 1JSP: Introdução Parte 1
JSP: Introdução Parte 1
 
Erros comuns em java
Erros comuns em javaErros comuns em java
Erros comuns em java
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo java
 
Análise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de UsoAnálise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de Uso
 
Descrição formal de Casos de Uso
Descrição formal de Casos de UsoDescrição formal de Casos de Uso
Descrição formal de Casos de Uso
 
4. Liferay JSP Portlets
4. Liferay JSP Portlets4. Liferay JSP Portlets
4. Liferay JSP Portlets
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 

Similaire à Curso de JSP (20)

Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Engenharia da Computação: Resumo servlet + jsp br galo
Engenharia da Computação: Resumo servlet + jsp br galoEngenharia da Computação: Resumo servlet + jsp br galo
Engenharia da Computação: Resumo servlet + jsp br galo
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao Geral
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Trabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiTrabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial Ii
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8
 
Jsf
JsfJsf
Jsf
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
JSPs parte 2
JSPs parte 2JSPs parte 2
JSPs parte 2
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
 
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
 
JSPs parte 1
JSPs parte 1JSPs parte 1
JSPs parte 1
 
Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.
 
Apresentação JAVA 1
Apresentação JAVA 1Apresentação JAVA 1
Apresentação JAVA 1
 
Tag Libraries e JSTL
Tag Libraries e JSTLTag Libraries e JSTL
Tag Libraries e JSTL
 
Jsp+Jdbc+Servlets
Jsp+Jdbc+ServletsJsp+Jdbc+Servlets
Jsp+Jdbc+Servlets
 
teste86940.78038637294
teste86940.78038637294teste86940.78038637294
teste86940.78038637294
 
Servlets
ServletsServlets
Servlets
 

Curso de JSP

  • 1. JSP  Esse modulo apresenta tudo que é necessário para implementar servlets escrevendo Java Server Pages  Sintaxe dos marcadores JSP e objetos  Funcionamento  Como implantar e depurar 1
  • 2. JSP  Tudo o que vale para servlets continua valendo para Java Server Pages  Um JSP é uma servlet durante a execução  Escrever código em JSP é como escrever código dentro do doPost() ou doGet() de um servlet com os objetos request, response, out, session e outros já definidos  Um JSP, depois de carregado, é tão veloz quando uma servlet (pois um JSP é uma servlet)  JSP é mais fácil de codificar e implantar, mas é mais difícil de depurar 2
  • 3. Problema das Servlets  Servlets forçam o programador a embutir código HTML dentro de código Java  Desvantagem se a maior parte do que tem que ser gerado é texto ou HTML estático  Mistura as coisas, o programador tem que ser um bom Designer e se virar sem ferramentas gráficas 3
  • 4. O que são JSP’s  JSP é uma tecnologia padrão, baseada em templates para servlets. O mecanismo que a traduz é embutido no servidor  Exemplo de um código em JSP 4
  • 5. O que são JSP’s  Em um servidor que suporta JSP, a pagina JSP é transformada (compilada) em uma servlet  A forma mais simples de criar documentos JSP, é:  Mudar a extensão de um arquivo HTML para JSP  Colocar o documento em um servidor onde suporte JSP  Fazendo isso, o servidor gera uma servlet  A compilação é feita no primeiro acesso  Nos acessos subseqüentes, a requisição é redirecionada a servlet gerada 5
  • 6. Exemplos JSP’s  Transformado em um JSP, um arquivo HTML pode conter :  Blocos de código (scriptlets) : <% .... %>  Expressões : <%= ..... %> 6
  • 7. Ciclo de vida  Quando uma requisição é mapeada para o JSP, o container :  Verifica se a servlet correspondente à pagina é mais antigo que a pagina (ou se não existe)  Se a servlet não existir, ou for mais antiga, a pagina JSP será compilada para gerar a nova servlet 7
  • 8. Ciclo de vida  Desse ponto em diante o ciclo de vida é similar ao das servlets, mas os métodos são diferentes  Se a servlet ainda não existir, ela será instanciada, e seu método jspInit() é chamado  Para cada requisição, seu método _jspService(req,res) é chamado  No fim da vida, o método jspDestroy() é chamado 8
  • 10. Sintaxe dos elementos da JSP  Todos os elementos são interpretados no servidor (jamais chegam no navegador)  Diretivas: <%@ ...%>  Declarações: <%! ... %>  Expressões: <%= ... %>  Scriptlets: <% ... %>  Comentários: <%-- .... --%>  Ações: <jsp:acao ... />  Tags: <prefixo:elemento ... /> 10
  • 11. Diretivas  Contém informações necessárias para gerar a servlet  Sintaxe:  <%@ diretiva atrituto1 atributo2 .... %>  Principais diretivas:  page : atributos relacionados à página  include : inclui outros arquivos na página  tablib : declara biblioteca de custon tags usadas na página 11
  • 12. Diretivas  Exemplos: 12
  • 13. A diretiva page  Atributos de <%@ page %>  language=“java” (default)  session=“true” (default)  contentType=“text/html; charset=ISSO-8859-1” (default)  extends=“treinamento.FonteJSP” (default : nenhum)  import=“java.util.*” (default : java.lang.*)  autoFlush=“true” (default)  isThreadSafe=“true” (default)  errorPage=“/erros/erro.jsp” (default : nenhum)  isErrorPage=“false” (default) 13
  • 14. A diretiva page  session  Se true, aplicações JSP podem manter sessões do usuário abertas usando HTTPSession  Se uma página declara false, ela não terá acesso a objetos gravados na sessão do usuário  isThreadSafe  Se true, só um cliente poderá acessar a página ao mesmo tempo 14
  • 15. A diretiva page  isErrorPage  Se true, a página possui um objeto exception e pode extrair seus dados quando alvo de redirecionamento devido a erro.  errorPage  URL da página para o qual o controle será redirecionado na ocorrência de um erro ou exceção. Deve ser uma página com isErrorPage=“true” 15
  • 16. Declarações  Declarações dão acesso ao corpo da classe da servlet. Permitem a declaração de variáveis e métodos em uma JSP  Úteis para declarar:  Variáveis e métodos de instância (pertencentes a servlet)  Variáveis e métodos estáticos (pertencentes a classe da servlet)  Sintaxe:  <%! Declaração %> 16
  • 17. Declarações  Exemplos 17
  • 18. Declarações (métodos especiais)  jspInit() e jspDestroy() permitem maior controle sobre o ciclo de vida da servlet  Ambos são opcionais  Úteis para inicializar conexões, obter recursos, etc...  Inicialização da página (chamado uma vez, antes da primeira requisição, após o instânciamento) 18
  • 19. Declarações (métodos especiais)  Destruição da página (ocorre quando a servlet deixa a memória ) 19
  • 20. Expressões e scriptlets  Expressões: Quando processadas, retornam um valor que é inserido na página  Sintaxe:  <%= expressão %>  Equivale a um out.print(expressão), portanto não pode terminar em ponto-e-vírgula  Todos os valores resultantes das expressões são convertidos em String antes de serem colocados na tela 20
  • 21. Expressões e scriptlets  Scriptlets: Blocos de código que são executados sempre que uma pagina JSP é processada  Correspondem a inserção de seqüências de instruções no método _jspService()  Sintaxe:  <% instruções java ; %> 21
  • 22. Comentários  Comentários HTML <!-- --> não servem para comentar JSP  <!-- o texto ignorado pelo navegador, mas não pelo servidor -->  Comentários JSP: podem ser usados para comentar blocos JSP  <%-- texto , código java , <HTML> ou tags < %JSP%> ignorados pelo servidor --%> 22
  • 24. Ações padronizadas  Permitem realizar operações externas ao servlet (tempo de execução)  Concatenação de várias páginas em uma única resposta  <jsp:forward> e <jsp:include>  Inclusão de JavaBeans  <jsp:useBean>, <jsp:setProperty> e <jsp:getProperty> 24
  • 26. Objetos implícitos JSP  São variáveis locais previamente inicializadas  Disponíveis nos blocos <% ... %> de qualquer página (exceto session e exception) que dependem de @page para serem ativados/desativados 26
  • 27. Objetos implícitos JSP  Objetos do servlet  page  config  Objetos contextuais  session  application  pageContext 27
  • 28. Objetos implícitos JSP  Entrada e saída  request  response  out  Controle de exceções  exception 28
  • 29. page  Referência para o servlet gerado pela página  Equivale ao “this” no servlet  Pode ser usada para chamar qualquer método ou variável do servlet ou superclasses  Exemplo: 29
  • 30. config  Referência para os parâmetros de inicialização da servlet (se existirem) através do objeto ServletConfig  Equivale a page.getSessionConfig()  Exemplo: 30
  • 31. config  Parâmetros de inicialização são fornecidos na configuração do servlet no servidor, através de <init-param> em <servlet> no web.xml, é preciso declarar a página no web.xml 31
  • 32. request  Referência para os dados de entrada enviados na requisição do cliente (GET ou POST)  É um objeto do tipo javax.servlet.http.HttpServletRequest  Usado para:  Guardar e recuperar atributos que serão usadas enquanto durar a requisição  Recuperar parâmetros passados pelo cliente  Descobrir o método usado (GET , POST)  String método = request.getMethod(); 32
  • 33. exemplos  URL no navegador:  http://servidor/programa.jsp?nome=leandro&id=5  Recuperação dos parâmetros <% String nome = request.getParameter(“nome”); String idStr = request.getParameter(“id”); %> <p> Bom dia <%=nome%> 33
  • 34. response  Referência aos dados de saída enviados na resposta  É um objeto do tipo javax.servlet.http.HttpServletResponse  Usado para:  Definir o tipo de dados retornados (default: text/html)  Redirecionar  response.sendRedirect(“pagina2.html”); 34
  • 35. out  Representa o stream de saída da página  É um objeto javax.servlet.jsp.JspWriter  Equivalente ao response.getWriter()  Principais métodos  print() e println() (imprimem Unicode) 35
  • 36. out  Os trechos abaixo são equivalentes 36
  • 37. session  Representa a sessão do usuário  Uma instância de javax.servlet.http.HttpSession  Útil para armazenar valores que deverão permanecer durante a sessão (set/getAttribute() ) 37
  • 38. application  Representa o contexto ao qual a página pertence  Instância de javax.servlet.ServletContext  Útil para guardar valores que devem persistir pelo tempo que durar a aplicação (até que a servlet seja destruída pelo servidor ) 38
  • 39. pageContext  Instância de javax.servlet.jsp.PageContext  Oferece acesso a todos os outros objetos implícitos  getPage() retorna page  getRequest() retorna request  getResponse() retorna response  getOut() retorna out  getSession() retorna session  getServletConfig() retorna servletConfig  getServletContext() retorna application  getException() retorna exception 39
  • 40. pageContext  Constrói a página (mesma resposta) com informações localizadas em outras URL’s  pageContext.forward(String) similar a <jsp:forward>  pageContext.include(String) similar a <jsp:include> 40
  • 41. Escopo dos objetos  A persistência das informações depende do escopo dos objetos onde elas estão disponíveis  Constantes da classe PageContext identificam o escopo dos objetos 41
  • 42. exception  Não existe em todas as páginas, apenas em páginas designadas como páginas de erro <%@ page isErrorPage=“true” %>  Instância de java.lang.Throwable  Exemplo: 42
  • 43. Exercícios  Escreva um JSP data.jsp que imprima a data de hoje. 43
  • 44. Exercícios  Escreva um JSP temperatura.jsp que imprima uma tabela HTML de conversão Celsius- Fahrenheit entre -40 e 100 graus Celsius com incrementos de 10 em 10  A fórmula é F = 9/5*C + 32 44
  • 45. Exercícios  Altere o exercício anterior ,chame-o de temperaturaRequest.jsp, de forma que a tela apresente um campo texto para a entrada de um valor em celsius em um formulário que envie os dados como POST, a página deve mostrar:  O método pelo qual a página foi acessada  Mostrar na tela em vermelho o correspondente valor em Fahrenheit do valor passado em celsius 45
  • 46. Exercícios  Altere o exercício anterior ,chame-o de temperaturaErro.jsp, de forma que a tela redirecione qualquer exceção para uma tela de erro erro.jsp (que você deve criar) 46
  • 47. Exercícios  Crie um JSP chamado novaMensagem.jsp que contenha um formulário com o campo mensagem ,esse JSP deverá passar a mensagem por método POST para o JSP gravaMensagem.jsp ,o qual pegará a mensagem ,e a colocará em sessão.  Crie um JSP chamado listaMensagem.jsp que liste as mensagens guardadas em sessão 47
  • 48. Exercícios  Crie um html que contenha um formulário com login e senha, e que submeta para uma servlet chamada treinamento.exercicios.ServletLogin usando método POST  A ServletLogin deverá autenticar o login e senha baseado no arquivo senhas.txt, e redirecionar para o formulário caso o login seja inválido, para o JSP compras.jsp caso o perfil seja “usuario” , ou para o JSP adm.jsp caso o perfil seja “adm”. 48
  • 49. Exercícios  A tela adm.jsp deve permitir o cadastro de produtos na sessão  A tela compras.jsp deve possuir componentes JSP de cabeçalho e rodapé, o rodapé deve conter o nome do usuário ,e o cabeçalho deve conter a lista de produtos cadastrados, essa tela deve permitir o usuário selecionar um produto, e adiciona-lo num carrinho de compras, e deve ter uma ação de efetuar compra, redirecionando para a tela lista.jsp, a qual deve mostrar os itens selecionados para a compra. 49