0
Java Básico – Módulo 1                                     Java Web             Java Web             Régis Melo           ...
Java Básico – Módulo 1                                            Java Web                  MissãoApresentar, motivar e ex...
Java Básico – Módulo 1                                              Java Web              Metodologias• Exposição e discus...
Java Básico – Módulo 1                                              Java Web O que esse curso não cobre ou não é?Não Cobre...
Java Básico – Módulo 1                                                               Java Web                         Prog...
Java Básico – Módulo 1                                              Java Web              Antes de iniciar…Vamos nos apres...
Java Básico – Módulo 1                                          Java Web             Livros sugeridos@regismelo           ...
Java Básico – Módulo 1                                   Java Web             Módulo I             Iniciando@regismelo    ...
Java Básico – Módulo 1                                 Java Web "People only see what they    are prepared to see."       ...
Java Básico – Módulo 1                                                Java Web                   Iniciando• Nesse curso, a...
Java Básico – Módulo 1                                           Java Web             Plataforma J2SE e J2EE@regismelo    ...
Java Básico – Módulo 1                                                      Java WebBreve histórico do desenvolvimento Web...
Java Básico – Módulo 1                                     Java WebPágina da Sefaz, em Dezembro de 1998@regismelo         ...
Java Básico – Módulo 1                                               Java WebBreve histórico do desenvolvimento Web• Com o...
Java Básico – Módulo 1                                                      Java WebBreve histórico do desenvolvimento Web...
Java Básico – Módulo 1                                                 Java WebBreve histórico do desenvolvimento Web• CGI...
Java Básico – Módulo 1                                      Java WebBreve histórico do desenvolvimento Web• CGI – Ciclo de...
Java Básico – Módulo 1                                                     Java WebBreve histórico do desenvolvimento WebT...
Java Básico – Módulo 1                                                         Java Web               Hello World em CGI/P...
Java Básico – Módulo 1                                                         Java WebBreve histórico do desenvolvimento ...
Java Básico – Módulo 1                                                         Java Web               Hello World em ASP<%...
Java Básico – Módulo 1                                             Java Web              Hello World em ASPHello WorldHell...
Java Básico – Módulo 1                                                 Java WebBreve histórico do desenvolvimento WebTecno...
Java Básico – Módulo 1                                            Java Web             Hello World em PHP<HTML><HEAD></HEA...
Java Básico – Módulo 1                                              Java WebBreve histórico do desenvolvimento Web   “As t...
Java Básico – Módulo 1                                              Java Web             Página da Sefaz, Junho/2004@regis...
Java Básico – Módulo 1                                        Java Web                  Módulo II             Applets - Co...
Java Básico – Módulo 1                                                Java Web   Tecnologias Java para Web - Applets• Os a...
Java Básico – Módulo 1                                   Java Web               AppletsExemplo deuma applet  @regismelo   ...
Java Básico – Módulo 1                                                   Java Web                      Applets• Algumas ap...
Java Básico – Módulo 1                                                       Java Web                      Applets - Exemp...
Java Básico – Módulo 1                                                          Java Web               Applets – Exemplo  ...
Java Básico – Módulo 1                                           Java Web             Applets – Exemplo@regismelo         ...
Java Básico – Módulo 1                                                Java Web              Applets - Problemas• Código Ja...
Java Básico – Módulo 1                                               Java Web              Applets - Problemas• Para compl...
Java Básico – Módulo 1                                                                  Java Web                          ...
Java Básico – Módulo 1                                    Java Web             Módulo IIIIniciando no mundo dos Servlets@r...
Java Básico – Módulo 1                                              Java Web              O que são Servlets?• Sevlets são...
Java Básico – Módulo 1                                             Java Web             O que são Servlets?@regismelo     ...
Java Básico – Módulo 1                                                     Java Web             Hello World com Servletsim...
Java Básico – Módulo 1                                                    Java Web               O que são Servlets?• Serv...
Java Básico – Módulo 1                                                Java Web                Servlets x CGI• Eficientes  ...
Java Básico – Módulo 1                                                Java Web                Servlets x CGI• Poderosos   ...
Java Básico – Módulo 1                                                Java Web                Servlets x CGI• Poderosos   ...
Java Básico – Módulo 1                                                Java Web                 Servlets x CGI• Portáveis  ...
Java Básico – Módulo 1                                                                    Java Web                 Entende...
Java Básico – Módulo 1                                                                 Java Web                Entendendo ...
Java Básico – Módulo 1                                                                      Java Web                 Enten...
Java Básico – Módulo 1                                                     Java Web             Entendendo o HelloWorldimp...
Java Básico – Módulo 1                                                Java Web              Como rodar Servlets?• Para rod...
Java Básico – Módulo 1                                               Java Web              Como rodar Servlets?• A especif...
Java Básico – Módulo 1                                                             Java Web                          Conta...
Java Básico – Módulo 1                                              Java Web                 ContainersUtilizaremos nesse ...
Java Básico – Módulo 1                                                 Java Web                     TomCat• O TomCat é um ...
Java Básico – Módulo 1                                                Java Web                    TomCat• O TomCat pode se...
Java Básico – Módulo 1                                              Java Web              Instalando o TomCat• Opções da i...
Java Básico – Módulo 1                                              Java Web              Instalando o TomCat• Ao final da...
Java Básico – Módulo 1                                                Java Web              Instalando o TomCat• Depois da...
Java Básico – Módulo 1                                        Java Web             TomCat rodando@regismelo               ...
Java Básico – Módulo 1                                               Java Web              TomCat rodando• Para verificar ...
Java Básico – Módulo 1                                        Java Web             TomCat rodando@regismelo               ...
Java Básico – Módulo 1                                              Java Web              Configurando uma Aplicação• Vamo...
Java Básico – Módulo 1                                                Java Web              Configurando uma Aplicação• Es...
Java Básico – Módulo 1                                                     Java Web              Configurando uma Aplicaçã...
Java Básico – Módulo 1                                                       Java Web              Configurando uma Aplica...
Java Básico – Módulo 1                                                    Java Web              Configurando uma Aplicação...
Java Básico – Módulo 1                                                Java Web             Nossa estrutura de diretório   ...
Java Básico – Módulo 1                                                  Java Web              Configurando uma Aplicação• ...
Java Básico – Módulo 1                                                      Java Web              Configurando uma Aplicaç...
Java Básico – Módulo 1                                              Java Web              Configurando uma Aplicação• Após...
Java Básico – Módulo 1                                                Java Web               Configurando uma Aplicação• A...
Java Básico – Módulo 1                                                Java Web               Configurando uma Aplicação• P...
Java Básico – Módulo 1                                                     Java Web                Configurando uma Aplica...
Java Básico – Módulo 1                                                 Java Web               Configurando uma Aplicação• ...
Java Básico – Módulo 1                                                     Java Web             Relembrando o HelloWorldim...
Java Básico – Módulo 1                                                       Java Web                       Exercício• Pri...
Java Básico – Módulo 1                                                                               Java Web             ...
Java Básico – Módulo 1                                   Java Web             Módulo IV     Revisão do protocolo HTTP@regi...
Java Básico – Módulo 1                                                  Java Web               Revisão do protocolo HTTP• ...
Java Básico – Módulo 1                                             Java Web             Revisão do protocolo HTTP@regismel...
Java Básico – Módulo 1                                                Java Web               Revisão do protocolo HTTP• HT...
Java Básico – Módulo 1                                                  Java Web               HTTP - Requisição• Quando u...
Java Básico – Módulo 1                                                   Java Web                HTTP - Requisição• Após e...
Java Básico – Módulo 1                                                Java Web               HTTP - Requisição• A requisiç...
Java Básico – Módulo 1                                                 Java Web               HTTP - RequisiçãoQual a dife...
Java Básico – Módulo 1                                                  Java Web               HTTP - RequisiçãoQual a dif...
Java Básico – Módulo 1                                                  Java Web                HTTP - Resposta• Feita uma...
Java Básico – Módulo 1                                                      Java Web                  HTTP - RespostaAlgun...
Java Básico – Módulo 1                                                   Java Web                 HTTP - Resposta• Após a ...
Java Básico – Módulo 1                                          Java Web             HTTP – Resumindo@regismelo           ...
Java Básico – Módulo 1                                                   Java Web                    TCP Monitor• Uma boa ...
Java Básico – Módulo 1                                                    Java Web               Configurando o TCP Monito...
Java Básico – Módulo 1                                                Java Web               Configurando o TCP MonitorSeg...
Java Básico – Módulo 1                                                Java Web               Configurando o TCP MonitorTer...
Java Básico – Módulo 1                                                  Java Web               Configurando o TCP MonitorE...
Java Básico – Módulo 1                                                     Java Web                      Exercício• Faça u...
Java Básico – Módulo 1                                   Java Web              Módulo V      Trabalhando com dados de     ...
Java Básico – Módulo 1                                                Java Web               Dados vindos de formulários• ...
Java Básico – Módulo 1                                                Java Web   Relembrando HTML e Formulários…          ...
Java Básico – Módulo 1                                                   Java Web                Dados vindos de formulári...
Java Básico – Módulo 1                                                    Java Web             Relembrando o HelloWorldimp...
Java Básico – Módulo 1                                                 Java Web          A Interface HttpServletRequest• A...
Java Básico – Módulo 1                                                      Java Web               A Interface ServletRequ...
Java Básico – Módulo 1                                                      Java Web               …A Interface ServletReq...
Java Básico – Módulo 1                                                     Java Web               …A Interface ServletRequ...
Java Básico – Módulo 1                                                    Java Web               …A Interface ServletReque...
Java Básico – Módulo 1                                                Java Web             Construindo um formulário<html>...
Java Básico – Módulo 1                                                              Java Web                    Servlet Fo...
Java Básico – Módulo 1                                                Java Web               Entendedo o exemplo• Os dados...
Java Básico – Módulo 1                                                Java Web               Alterando o exemplo• Vamos al...
Java Básico – Módulo 1                                                                Java Web                     Servlet...
Java Básico – Módulo 1                                                Java Web               Suportando Post• Para fazer c...
Java Básico – Módulo 1                                                  Java Web                Suportando Post• Normalmen...
Java Básico – Módulo 1                                                        Java Web                       Exercício• Co...
Java Básico – Módulo 1                                                               Java Web                        Para ...
Java Básico – Módulo 1                                   Java Web             Módulo VIProcessamento e ciclo de vida de   ...
Java Básico – Módulo 1                                               Java Web               Servlet = Multi-Thread• Como j...
Java Básico – Módulo 1                                                  Java Web               Servlet = Multi Thread• Por...
Java Básico – Módulo 1                                                       Java Web                 Servlet Não Thread S...
Java Básico – Módulo 1                                                       Java Web                 Servlet Thread Safep...
Java Básico – Módulo 1                                                  Java Web               Interface SingleThreadModel...
Java Básico – Módulo 1                                              Java Web             Interface SingleThreadModel@regis...
Java Básico – Módulo 1                                                 Java Web               Interface SingleThreadModel•...
Java Básico – Módulo 1                                                     Java Web                 SingleThreadModelpubli...
Java Básico – Módulo 1                                               Java Web             Ciclo de vida de um Servlet@regi...
Java Básico – Módulo 1                                                             Java Web             Ciclo de vida de u...
Java Básico – Módulo 1                                                          Java Web        Ciclo de vida de um Servle...
Java Básico – Módulo 1                                                        Java Web        Ciclo de vida de um Servlet ...
Java Básico – Módulo 1                                                        Java Web   Ciclo de vida de um Servlet – ser...
Java Básico – Módulo 1                                                Java Web                Diagrama de classes• Servlet...
Java Básico – Módulo 1                                                            Java Web   Ciclo de vida de um Servlet –...
Java Básico – Módulo 1                                                         Java Web           Processamento em Backgro...
Java Básico – Módulo 1                                                          Java Web        …Processamento em Backgrou...
Java Básico – Módulo 1                                                    Java Web                 ServletBackgroundimport...
Java Básico – Módulo 1                                                          Java Web                  ServletBackgroun...
Java Básico – Módulo 1                                                         Java Web                  ServletBackground...
Java Básico – Módulo 1                                                           Java Web                  ServletBackgrou...
Java Básico – Módulo 1                                                        Java Web                        Exercício• C...
Java Básico – Módulo 1                                                        Java Web                      Para saber mai...
Java Básico – Módulo 1                                       Java Web                Módulo VII         Obtendo informaçõe...
Java Básico – Módulo 1                                                        Java Web                Obtendo informações•...
Java Básico – Módulo 1                                                     Java Web               Obtendo informaçõesMétod...
Java Básico – Módulo 1                                                              Java Web                          Loca...
Java Básico – Módulo 1                                               Java Web             Rodando o exercício anterior@reg...
Java Básico – Módulo 1                                                               Java Web                 Obtendo info...
Java Básico – Módulo 1                                                                     Java Web                  Obten...
Java Básico – Módulo 1                                                       Java Web               Obtendo informaçõesMét...
Java Básico – Módulo 1                                                               Java Web                             ...
Java Básico – Módulo 1                                    Java Web             HttpHeader@regismelo                       ...
Java Básico – Módulo 1                                                      Java Web               Obtendo informaçõesMéto...
Java Básico – Módulo 1                                                           Java Web                       HttpAddrEx...
Java Básico – Módulo 1                                         Java Web             HttpAddrExemplo@regismelo             ...
Java Básico – Módulo 1                                                          Java Web                         Exercício...
Java Básico – Módulo 1                                                                     Java Web                       ...
Java Básico – Módulo 1                                     Java Web             Módulo VIIIControle de fluxo e colaboração...
Java Básico – Módulo 1                                                        Java Web                  Controle de Fluxo•...
Java Básico – Módulo 1                                                      Java Web                 Controle de Fluxo• A ...
Java Básico – Módulo 1                                                       Java Web                 Controle de FluxoMét...
Java Básico – Módulo 1                                                                Java Web                       SendR...
Java Básico – Módulo 1                                                        Java Web            Desvantagens do sendRedi...
Java Básico – Módulo 1                                                        Java Web                 Redirecionamento• E...
Java Básico – Módulo 1                                                       Java Web                Servlet Collaboration...
Java Básico – Módulo 1                                                        Java Web                Servlet Collaboratio...
Java Básico – Módulo 1                                                              Java Web                         Conte...
Java Básico – Módulo 1                                                       Java Web                       Contextos• Con...
Java Básico – Módulo 1                                   Java Web             Contextos@regismelo                         ...
Java Básico – Módulo 1                                                          Java Web                Servlet Collaborat...
Java Básico – Módulo 1                                                               Java Web                          For...
Java Básico – Módulo 1                                                               Java Web                           In...
Java Básico – Módulo 1                                                         Java Web                    IncludeExemplo2...
Java Básico – Módulo 1                                                 Java Web               Definindo atributos• Na API ...
Java Básico – Módulo 1                                                      Java Web               Definindo atributosMéto...
Java Básico – Módulo 1                                                                   Java Web                         ...
Java Básico – Módulo 1                                                     Java Web                      Exercício• Defina...
Java Básico – Módulo 1                                                    Java Web                     Exercício• Crie um ...
Java Básico – Módulo 1                                                        Java Web                       Exercício• Ai...
Java Básico – Módulo 1                                                                        Java Web                    ...
Java Básico – Módulo 1                                   Java Web             Módulo IX             Cookies@regismelo     ...
Java Básico – Módulo 1                                                        Java Web                         Cookies• “C...
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Java web
Upcoming SlideShare
Loading in...5
×

Java web

5,197

Published on

1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
5,197
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
126
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Comente nesse ponto a necessidade de conversão de tipos caso seja necessário receber um inteiro ou uma data, por exemplo.
  • Veja o exemplo do Struts em ./samples/TagLibraries-BodyTagSupport-Struts.txt ou softsite.com.br/university/java/web/TagLibraries-BodyTagSupport-Struts.txt
  • Veja o exemplo do Struts em ./samples/TagLibraries-BodyTagSupport-Struts.txt ou softsite.com.br/university/java/web/TagLibraries-BodyTagSupport-Struts.txt
  • Transcript of "Java web"

    1. 1. Java Básico – Módulo 1 Java Web Java Web Régis Melo @regismelo@regismelo 1
    2. 2. Java Básico – Módulo 1 Java Web MissãoApresentar, motivar e exercitar a plataformaJava voltada para desenvolvimento deaplicações WEB. @regismelo 2
    3. 3. Java Básico – Módulo 1 Java Web Metodologias• Exposição e discussão teóricas;• Exercícios práticos de projeto e modelagem em laboratório. @regismelo 3
    4. 4. Java Básico – Módulo 1 Java Web O que esse curso não cobre ou não é?Não Cobre:• Conceitos gerais de Java e da plataforma J2SE.Não é:• Um curso para aprender Java – este é um curso para se aprofundar na plataforma, estudando os recursos voltados para web. @regismelo 4
    5. 5. Java Básico – Módulo 1 Java Web Programa I. Iniciando II. Introdução aos Applets III. Introdução a Servlets IV. Revisão do protocolo HTTP V. Trabalhando com dados de formulários VI. Processamento e ciclo de vida de um Servlet VII. Obtendo informações do ambiente VIII. Controle de Fluxo e Colaboração IX. Cookies X. Gerenciamento de Sessões XI. Java Server Pages XII. Tag Libs@regismelo 5
    6. 6. Java Básico – Módulo 1 Java Web Antes de iniciar…Vamos nos apresentar• Nome;• Empresa;• Experiência com programação;• Razões de estar fazendo esse treinamento;• Expectativas desse curso. @regismelo 6
    7. 7. Java Básico – Módulo 1 Java Web Livros sugeridos@regismelo 7
    8. 8. Java Básico – Módulo 1 Java Web Módulo I Iniciando@regismelo 8
    9. 9. Java Básico – Módulo 1 Java Web "People only see what they are prepared to see." Ralph Waldo Emerson@regismelo 9
    10. 10. Java Básico – Módulo 1 Java Web Iniciando• Nesse curso, abordaremos uma série de tecnologias do J2EE – Java 2 Enterprise Edition;• Iremos nos focar nos assuntos relacionados ao desenvolvimento para web. @regismelo 10
    11. 11. Java Básico – Módulo 1 Java Web Plataforma J2SE e J2EE@regismelo 11
    12. 12. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento Web• No início as páginas eram apenas institucionais;• Não havia necessidade de dinamismo;• Serviços não eram oferecidos nas páginas;• Tecnologias utilizadas  HTML e eventualmente Applets. @regismelo 12
    13. 13. Java Básico – Módulo 1 Java WebPágina da Sefaz, em Dezembro de 1998@regismelo 13
    14. 14. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento Web• Com o passar do tempo, percebeu-se a necessidade de interação;• O problema era como tornar as página dinâmicas;• Diversas tecnologias surgiram com esse fim. @regismelo 14
    15. 15. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento WebTecnologias para desenvolvimento web• CGI – Common Gateway Interface – Surgiu em meados de 1996; – Na época era uma das única soluções para criação de web sites dinâmicos; – Em 1996, existiam cerca de 100.000 web sites e o browser mais utilizado era o Netscape Navigator 2.0 (o primeiro browser a suportar JavaScript – outra tecnologia para tornar páginas dinâmicas) @regismelo 15
    16. 16. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento Web• CGI – Common Gateway Interface Um programa CGI pode ser implementado em diversas linguagens @regismelo 16
    17. 17. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento Web• CGI – Ciclo de Vida @regismelo 17
    18. 18. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento WebTecnologias para desenvolvimento web• CGI – Common Gateway Interface – A escalabilidade é um dos principais problemas de aplicações CGI; – Para cada cliente, um novo processo é executado; – Se você tem um cliente, você tem um “executável” rodando; – Se você tem 1.000.000 de clientes… @regismelo 18
    19. 19. Java Básico – Módulo 1 Java Web Hello World em CGI/Perl#!/usr/local/bin/perl# simple Hello World scriptprint "Content-type: text/plainnn";print Hello World!; Toda a produção da página fica dentro de um programa que roda do lado servidor. @regismelo 19
    20. 20. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento WebTecnologias para desenvolvimento web• ASP – Active Server Pages – Tecnologia bastante madura para o desenvolvimento de página dinâmicas; – É uma tecnologia desenvolvida pela Microsoft (não é multi-plataforma); – Excelentes ferramentas de desenvolvimento; – Diferente do CGI, é bastante escalável. @regismelo 20
    21. 21. Java Básico – Módulo 1 Java Web Hello World em ASP<%Dim I%> Código é embutido dentro da página HTML.<% <% e %> delimitam o código queFor I = 1 To 5 Step 1 será processado no servidor%> <FONT SIZE="<%= I %>">Hello World</FONT><BR><%Next%> @regismelo 21
    22. 22. Java Básico – Módulo 1 Java Web Hello World em ASPHello WorldHello WorldHello WorldHello WorldHello World@regismelo 22
    23. 23. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento WebTecnologias para desenvolvimento web• PHP – Linguagem de programação Server Side, HTML embedded; – Em teoria, similar ao ASP. @regismelo 23
    24. 24. Java Básico – Módulo 1 Java Web Hello World em PHP<HTML><HEAD></HEAD><BODY>This is in Html<BR><?php echo “Hello World<BR>"; ?></BODY></HTML>@regismelo 24
    25. 25. Java Básico – Módulo 1 Java WebBreve histórico do desenvolvimento Web “As tecnologias Java para web surgiram para resolver os problemas de escalabilidade, facilidade de uso e portabilidade.” @regismelo 25
    26. 26. Java Básico – Módulo 1 Java Web Página da Sefaz, Junho/2004@regismelo 26
    27. 27. Java Básico – Módulo 1 Java Web Módulo II Applets - Conceitos@regismelo 27
    28. 28. Java Básico – Módulo 1 Java Web Tecnologias Java para Web - Applets• Os applets surgiram em meados de 1996;• Applets = primeira tecnologia Java voltada para web;• Foram amplamente utilizadas para dar dinamismo as páginas;• As páginas HTML eram estáticas – o dinamismo era resolvido utilizando applets;• Código Java, executado do lado cliente. @regismelo 28
    29. 29. Java Básico – Módulo 1 Java Web AppletsExemplo deuma applet @regismelo 29
    30. 30. Java Básico – Módulo 1 Java Web Applets• Algumas aplicações que necessitam de interatividade intensiva, utilizam applets. @regismelo 30
    31. 31. Java Básico – Módulo 1 Java Web Applets - ExemploBiblioteca gráfica Classe que devepara “desenhar” ser extendida para criar uma nova appletimport java.applet.Applet;import java.awt.Graphics;class HelloWorld extends Applet{ public void paint(Graphics g){ g.drawString(“Hello World!”, 160, 70); } Método especial da applet chamado} pelo browser para “desenhar” o conteúdo da applet @regismelo 31
    32. 32. Java Básico – Módulo 1 Java Web Applets – Exemplo A página HTML que utiliza a applet<html><body><h1> O Applet Hello World” </h1><applet code = “HelloWorld.class” width = 400 height = 100></applet></body> Tag HTML utilizada para</html> referenciar a applet @regismelo 32
    33. 33. Java Básico – Módulo 1 Java Web Applets – Exemplo@regismelo 33
    34. 34. Java Básico – Módulo 1 Java Web Applets - Problemas• Código Java executado do lado cliente = necessidade de uma JVM no lado cliente;• Os browsers passaram a incorporar JVMs;• Atualização de versão das applets é feita de forma automática, porém...• Necessidade de constante atualização das JVMs. @regismelo 34
    35. 35. Java Básico – Módulo 1 Java Web Applets - Problemas• Para complicar, recentemente a instalação padrão dos principais browsers deixou de vir com suporte a JVMs;• As applets caíram em desuso... @regismelo 35
    36. 36. Java Básico – Módulo 1 Java Web Para saber maisCore Servlets and JSP Pages (CSAJSP-Chapter1.pdf)1.1 Servlets1.2 The Advantages of Servlets Over "Traditional" CGI – Efficient – Convenient – Powerful – Portable – Secure – Inexpensive1.3 JavaServer Pages1.4 The Advantages of JSP – Versus Active Server Pages (ASP) – Versus PHP – Versus Pure Servlets – Versus Server-Side Includes (SSI) – Versus JavaScript – Versus Static HTML @regismelo 36
    37. 37. Java Básico – Módulo 1 Java Web Módulo IIIIniciando no mundo dos Servlets@regismelo 37
    38. 38. Java Básico – Módulo 1 Java Web O que são Servlets?• Sevlets são a resposta da tecnologia Java a programação CGI(Common Gateway Interface);• Eles são programas que rodam em um servidor Web, agindo como uma camada intermediária entre uma requisição feita por um browser, ou outro cliente (em geral HTTP), com outras aplicações e banco de dados. @regismelo 38
    39. 39. Java Básico – Módulo 1 Java Web O que são Servlets?@regismelo 39
    40. 40. Java Básico – Módulo 1 Java Web Hello World com Servletsimport java.io.*; import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet{ public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println( “Hello World!” ); out.close(); }}@regismelo 40
    41. 41. Java Básico – Módulo 1 Java Web O que são Servlets?• Servlets são multi-thread (não sofrem com problemas de escalabilidade como as aplicações CGI) @regismelo 41
    42. 42. Java Básico – Módulo 1 Java Web Servlets x CGI• Eficientes – Em CGI cada requisição gera um novo processo no servidor. A JVM cria threads de execução para cada requisição;• Convenientes – Servlets já possuem todas as ferramentas para tratar documentos HTML, Cabeçalhos HTTP, Cookies, Gerenciamento de sessão etc. @regismelo 42
    43. 43. Java Básico – Módulo 1 Java Web Servlets x CGI• Poderosos – Servlets podem “falar” diretamente com o servidor Web (programas CGI precisam de uma API específica para cada servidor); – Servlets podem compartilhar dados facilitando a implementação de recursos compartilhados como pool conexões com o BD etc; @regismelo 43
    44. 44. Java Básico – Módulo 1 Java Web Servlets x CGI• Poderosos – Servlets podem manter dados entre as requisições, facilitando os mecanismos de gerenciamento de sessão etc. @regismelo 44
    45. 45. Java Básico – Módulo 1 Java Web Servlets x CGI• Portáveis – Feitos em Java e implementam um API padrão;• Seguros – CGI são executados como scripts shell do sistema;• Baratos – Existem servidores bons e gratuitos. @regismelo 45
    46. 46. Java Básico – Módulo 1 Java Web Entendendo o Hello World Classes do pacote java.io utilizadas para produzir Pacote com implementação das a saída do servlet interfaces e classes de Servletimport java.io.*;import javax.servlet.*; Implementação de Servletimport javax.servlet.http.*; para funcionar com HTTPpublic class HelloWorld extends HttpServlet{ ....} Servlets HTTP devem herdar dessa classe @regismelo 46
    47. 47. Java Básico – Módulo 1 Java Web Entendendo o Hello World Método chamado quando um usuário faz uma requisição public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{ ...}Exceção geral disparada quando o servlet tem algum problema Encapsula os dados relativos a requisição (request) e o resultado Exceção disparada quando que será produzido (response) problemas na produção da página acontecem @regismelo 47
    48. 48. Java Básico – Módulo 1 Java Web Entendendo o Hello World Representa a saída Informa o tipo de conteúdo(a página que será produzida) que será produzido { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println( “Hello World!” ); out.close();Produz o resultado } Finaliza o processo de geração da página @regismelo 48
    49. 49. Java Básico – Módulo 1 Java Web Entendendo o HelloWorldimport java.io.*; import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet{ public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println( “Hello World!” ); out.close(); }}@regismelo 49
    50. 50. Java Básico – Módulo 1 Java Web Como rodar Servlets?• Para rodar Servlets é necessário instalar um servidor web que implemente a especificação de Servlets;• Pelo fato de Servlet ser uma especificação, e não uma implementação, o código escrito em um servidor de um fornecedor deverá funcionar sem alterações em outro servidor de outro fornecedor. @regismelo 50
    51. 51. Java Básico – Módulo 1 Java Web Como rodar Servlets?• A especificação da API de Servlets está atualmente na versão 2.4;• Existem dezenas de fornecedores e projetos open source que disponibilizam servidores compatíveis com a especificação de Servlets;• O software servidor é conhecido como container. @regismelo 51
    52. 52. Java Básico – Módulo 1 Java Web ContainersAlguns containers disponíveis: SUN Microsystems Atualmente conhecido como SUN One A solução IBM é conhecida como WebSphere BEA WebLogic Líder do mercado em soluções pagas JRUN – Solução da Macromedia Boa integração com seus produtos Borland Application Server @regismelo 52
    53. 53. Java Básico – Módulo 1 Java Web ContainersUtilizaremos nesse treinamento o Jakarta TomCat @regismelo 53
    54. 54. Java Básico – Módulo 1 Java Web TomCat• O TomCat é um servidor open source;• Fruto do projeto Jakarta, sub-projeto do projeto Apache;• O projeto Jakarta constrói aplicativos open source para java;• É a atual “reference implementation” da API Servlets e JSP;• Bastante utilizado e robusto. @regismelo 54
    55. 55. Java Básico – Módulo 1 Java Web TomCat• O TomCat pode ser obtido no site http://jakarta.apache.org/tomcat;• A versão que utilizaremos nesse treinamento é o TomCat 4.1.24, que suporta a especificação 2.3 da API Servlet (e JSP 1.2 que abordaremos mais a frente);• O arquivo disponível para instalação é o tomcat-4.1.24-LE-jdk14.exe. @regismelo 55
    56. 56. Java Básico – Módulo 1 Java Web Instalando o TomCat• Opções da instalação: TomCat rodará como um serviço (use somente em um ambiente de produção) @regismelo 56
    57. 57. Java Básico – Módulo 1 Java Web Instalando o TomCat• Ao final da instalação: Porta que o TomCat ficará escutando Usuário/senha utilizado para Administrar o TomCat @regismelo 57
    58. 58. Java Básico – Módulo 1 Java Web Instalando o TomCat• Depois da instalação concluída, você pode iniciar o servidor;• Para isso, utilize o ícone “Start TomCat”;• Ou carregue-o digitando o comando <tomcat>/bin/startup.bat ou <tomcat>/bin/startup.sh (linux/unix);• O TomCat é feito em Java, por isso, o mesmo código roda em qualquer S.O. que tenha uma JVM. @regismelo 58
    59. 59. Java Básico – Módulo 1 Java Web TomCat rodando@regismelo 59
    60. 60. Java Básico – Módulo 1 Java Web TomCat rodando• Para verificar se o TomCat está rodando corretamente, digite no seu browser: http://localhost:8080 Porta selecionada na instalação @regismelo 60
    61. 61. Java Básico – Módulo 1 Java Web TomCat rodando@regismelo 61
    62. 62. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Vamos agora configurar uma aplicação que irá rodar no TomCat;• As aplicações no TomCat, ficam em geral no diretório <tomcat>/webapps;• Vamos criar um diretório chamado curso debaixo dessa pasta: <tomcat>/webapps/curso @regismelo 62
    63. 63. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Essa pasta conterá nosso site;• A API de Servlets, a partir da versão 2.2, prevê uma estrutura padrão de diretórios das aplicações web;• Isso significa que da sua aplicação web, bem como seus arquivos de configuração se comportarão da mesma forma independente do produto que você esteja utilizado. @regismelo 63
    64. 64. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Document Root É a pasta raiz da sua aplicação web. Nela, colocaremos nossos arquivos HTML, JSP, etc.• WEB-INF Pasta padrão que conterá informações de configuração do seu site e suas classes (veja mais a frente). @regismelo 64
    65. 65. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• WEB-INF/web.xml Arquivo XML que descreve os servlets e outros componentes de sua aplicação.• WEB-INF/classes Contém as classes Java (e recursos associados) requeridos por sua aplicação (o nosso HelloWorld.class ficará nesse diretório). @regismelo 65
    66. 66. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• WEB-INF/lib Contém arquivos JAR requeridos por sua aplicação (como por exemplo, drivers JDBC). @regismelo 66
    67. 67. Java Básico – Módulo 1 Java Web Nossa estrutura de diretório Nossa aplicação Nossos servlets ficarão aqui@regismelo 67
    68. 68. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Após a estrutura de diretórios ter sido criada, podemos compilar nossa classe HelloWorld;• Podemos compilar essa classes usando nosso compilador favorito (Javac, Jikes ou a sua IDE). @regismelo 68
    69. 69. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• IMPORTANTE: Para compilar nossos servlets é necessário ter o arquivo servlet.jar no nosso classpath. Ele está disponível em <tomcat>/common/lib @regismelo 69
    70. 70. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Após compilado o arquivo, devemos copiar o nosso HelloWorld.class para o diretório: <tomcat>/webapps/curso/WEB-INF/classes @regismelo 70
    71. 71. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Antes de testar nossa aplicação precisamos configurar o TomCat para carregar nossos Servlets;• Essa configuração será feita no arquivo <tomcat>/conf/web.xml;• Precisamos apenas dizer que o TomCat irá carregar os servlets a partir de um determinada URL padrão. @regismelo 71
    72. 72. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Procure a entrada abaixo no arquivo <tomcat>/conf/ web.xml Perceba que essa entrada está comentada @regismelo 72
    73. 73. Java Básico – Módulo 1 Java Web Configurando uma Aplicação <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>• Essa entrada diz que sempre que o usuário digitar... http://<servidor>:<porta>/<app>/servlet/<nomeServlet> O TomCat tentará carregar uma classe com o nome <nomeServlet> que herda de HttpServlet. @regismelo 73
    74. 74. Java Básico – Módulo 1 Java Web Configurando uma Aplicação• Essa linha, originalmente está comentada por questões de segurança;• Devemos retirar o comentário dessa linha para nosso servlet funcionar: @regismelo 74
    75. 75. Java Básico – Módulo 1 Java Web Relembrando o HelloWorldimport java.io.*; import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet{ public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println( “Hello World!” ); out.close(); }}@regismelo 75
    76. 76. Java Básico – Módulo 1 Java Web Exercício• Primeiro, instalar e configurar o TomCat;• Iniciar o TomCat;• Digitar o código do slide anterior e salvá-lo em um arquivo chamado HelloWorld.java;• Compilar o código e copiar o .class para <tomcat>/webapps/curso/WEB-INF/classes;• Verificar se o HelloWorld funciona digitando no browser: http://localhost:8080/curso/servlet/HelloWorld 45 minutos @regismelo 76
    77. 77. Java Básico – Módulo 1 Java Web Para saber maisCore Servlets and JSP Pages (CSAJSP-Chapter1.pdf)1.5 Installation and Setup – Obtain Servlet and JSP Software – Bookmark or Install the Servlet and JSP API Documentation – Identify the Classes to the Java Compiler – Package the Classes – Configure the Server – Start the Server – Compile and Install Your ServletsCore Servlets and JSP Pages (CSAJSP-Chapter2.pdf)2.1 Basic Servlet Structure2.2 A Simple Servlet Generating Plain Text Compiling and Installing the Servlet Invoking the Servlet2.3 A Servlet That Generates HTML2.4 Packaging Servlets Creating Servlets in Packages Compiling Servlets in Packages Invoking Servlets in Packages @regismelo 77
    78. 78. Java Básico – Módulo 1 Java Web Módulo IV Revisão do protocolo HTTP@regismelo 78
    79. 79. Java Básico – Módulo 1 Java Web Revisão do protocolo HTTP• A web que conhecemos hoje funciona com o protocolo HTTP, que significa Hyper Text Transfer Protocol;• HTTP é um protocolo, bastante simples, de transferência de dados;• É um padrão, definido pela W3C (http 1.1  RFC 2616) @regismelo 79
    80. 80. Java Básico – Módulo 1 Java Web Revisão do protocolo HTTP@regismelo 80
    81. 81. Java Básico – Módulo 1 Java Web Revisão do protocolo HTTP• HTTP é um protocolo stateless, ou seja, não mantém estado;• Cada requisição estabelece uma conexão com o servidor, recebe os dados e fecha a conexão. @regismelo 81
    82. 82. Java Básico – Módulo 1 Java Web HTTP - Requisição• Quando um cliente faz uma requisição, ele especifica um comando, chamado método, que especifica o tipo de ação que ele quer efetuar;• A primeira linha da requisição também especifica a URL e a versão do protocolo: GET /index.jsp HTTP/1.0 @regismelo 82
    83. 83. Java Básico – Módulo 1 Java Web HTTP - Requisição• Após enviado o comando, o cliente pode enviar informações adicionais (tipo do browser, versão, etc): GET /index.jsp HTTP/1.0 User-Agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows 95) Accept: image/gif, image/jpeg, text/*, */* @regismelo 83
    84. 84. Java Básico – Módulo 1 Java Web HTTP - Requisição• A requisição também pode ser feita com um método POST POST /index.jsp HTTP/1.0 User-Agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows 95) Accept: image/gif, image/jpeg, text/*, */* @regismelo 84
    85. 85. Java Básico – Módulo 1 Java Web HTTP - RequisiçãoQual a diferença entre o método GET e o POST?• GET, envia dados através da URI (tamanho limitado) <uri>?dados• Um exemplo de um site que usa GET para enviar informações: http://www.google.com/search?q=cejug @regismelo 85
    86. 86. Java Básico – Módulo 1 Java Web HTTP - RequisiçãoQual a diferença entre o método GET e o POST?• POST envia os dados para o servidor como um fluxo de bytes – dados não aparecem na URL;• Útil para grandes formulários a informação não deve ser exibida na URL (senhas, por exemplo);• Desvantagem – usuário não pode fazer bookmarks da URL. @regismelo 86
    87. 87. Java Básico – Módulo 1 Java Web HTTP - Resposta• Feita uma requisição, o servidor envia uma resposta;• A primeira linha da resposta indica um código de status e sua descrição HTTP/1.0 200 OK @regismelo 87
    88. 88. Java Básico – Módulo 1 Java Web HTTP - RespostaAlguns códigos HTTP:• 200  Código default, sucesso;• 400  Erro de sintaxe na requisição;• 404  Recurso não existe no servidor;• 405  Método não permitido.Para consultar a lista completa, acesse: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html @regismelo 88
    89. 89. Java Básico – Módulo 1 Java Web HTTP - Resposta• Após a linha de status, o servidor envia os cabeçalhos de resposta: Date: Saturday, 23-May-00 03:25:12 GMT Server: Tomcat Web Server/3.2 MIME-version: 1.0 Content-type: text/html Content-length: 1029 Last-modified: Thursday, 7-May-00 12:15:35 GMT @regismelo 89
    90. 90. Java Básico – Módulo 1 Java Web HTTP – Resumindo@regismelo 90
    91. 91. Java Básico – Módulo 1 Java Web TCP Monitor• Uma boa forma de entender o protocolo HTTP é vê-lo funcionando;• O programa TCP Monitor exibe as requisições feitas pelos clientes e a resposta feita por um servidor;• O TCP Monitor é um utilitário, parte do projeto AXIS, do projeto Jakarta, e pode ser baixado em http://ws.apache.org/axis/ @regismelo 91
    92. 92. Java Básico – Módulo 1 Java Web Configurando o TCP Monitor• Primeiro passo – carregar o programa: java -cp axis.jar org.apache.axis.utils.tcpmon @regismelo 92
    93. 93. Java Básico – Módulo 1 Java Web Configurando o TCP MonitorSegundo passo – configurar Porta que será criada na nossa máquina O host para qual a requisição será direcionada Clique em adicionar depois de configurar @regismelo 93
    94. 94. Java Básico – Módulo 1 Java Web Configurando o TCP MonitorTerceiro passo – faça uma requisição normalmente doseu browser para a porta configurada: http://localhost:88 @regismelo 94
    95. 95. Java Básico – Módulo 1 Java Web Configurando o TCP MonitorE finalmente, veja os detalhes da requisição HTTP: @regismelo 95
    96. 96. Java Básico – Módulo 1 Java Web Exercício• Faça uma requisição ao seu próprio servidor e veja informações sobre a requisição;• Faça requisições a outros sites usando o TCP Monitor e descubra detalhes sobre alguns servidores. @regismelo 96
    97. 97. Java Básico – Módulo 1 Java Web Módulo V Trabalhando com dados de formulários@regismelo 97
    98. 98. Java Básico – Módulo 1 Java Web Dados vindos de formulários• Conforme vimos na nossa revisão de HTTP, dados podem ser postados utilizando os método GET e POST;• Iremos aprender nesse módulo como “capturar” esses dados nos nossos servlets. @regismelo 98
    99. 99. Java Básico – Módulo 1 Java Web Relembrando HTML e Formulários… Para onde o formulário Como o formulário será submetido será submetido <html> <form action="meuServlet" method=“get"> <input name="nome" type="text" value="Digite seu nome aqui!" size="40" maxlength="40"> </form> </html>@regismelo 99
    100. 100. Java Básico – Módulo 1 Java Web Dados vindos de formulários• No exemplo anterior, o formulário irá postar os dados para uma URL, no mesmo servidor, chamada meuServlet;• Precisamos criar um servlet para receber os dados desse formulário• Já sabemos criar um servlet, mas como receber os parâmetros passados? @regismelo 100
    101. 101. Java Básico – Módulo 1 Java Web Relembrando o HelloWorldimport java.io.*; import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet{ public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println( “Hello World!” ); out.close(); }}@regismelo 101
    102. 102. Java Básico – Módulo 1 Java Web A Interface HttpServletRequest• A instância de HttpServletRequest passada como parâmetro para o método doGet encapsula os dados vindos da requisição;• Através dela poderemos saber todos os dados relativos a requisição;• A interface HttpServletRequest herda de ServletRequest. @regismelo 102
    103. 103. Java Básico – Módulo 1 Java Web A Interface ServletRequestPrincipais métodos:• getParameter( String name )  - Retorna o valor relativo a um determinado parâmetro passado; - Esse parâmetro pode ser um dado de um formulário submetido ou um dado passado na URL; - O retorno de getParameter sempre é String! - Cuidado  O nome do parâmetro é sensitive case. - Cuidado  Se o parâmetro não existir na requisição, getParameter retorna null. @regismelo 103
    104. 104. Java Básico – Módulo 1 Java Web …A Interface ServletRequestPrincipais métodos:• getParameterValues( String name )  - Retorna os valores relativos a um determinado parâmetro passado; - Use esse método quando um dado de um formulário tiver mais de um valor (um “select”, por exemplo) - O retorno de getParameterValues é um array de Strings. - Cuidado  O nome do parâmetro é sensitive case. - Cuidado  Se o parâmetro não existir na requisição, getParameterValues retorna null. @regismelo 104
    105. 105. Java Básico – Módulo 1 Java Web …A Interface ServletRequestPrincipais métodos:• java.util.Map getParameterMap()  - Retornar todos os parâmetros passados na requisição, no formato de um Map. @regismelo 105
    106. 106. Java Básico – Módulo 1 Java Web …A Interface ServletRequestPrincipais métodos:• getMethod()  - Retorna o método utilizado para submeter os dados (GET, POST ou PUT).• getQueryString()  - Retorna a query postada (URL).• getParameterNames()  - Retorna um Enumeration de Strings contendo o nome de todos os parâmetros passados na requisição. @regismelo 106
    107. 107. Java Básico – Módulo 1 Java Web Construindo um formulário<html><form action="./servlet/Formulario" method="get"> <p> <input name="nome" type="text" value="Digite seu nome aqui!" size="40" maxlength="40"> </p> <p>Interesses:</p> <SELECT NAME=“preferencias" MULTIPLE> <OPTION VALUE=“1"> Musica </OPTION> <OPTION VALUE=“2"> Computadores </OPTION> <OPTION VALUE=“3"> Ocio </OPTION> </SELECT> <p> <input type="submit" name="Submit" value="Submit"> </p></form></html>@regismelo 107
    108. 108. Java Básico – Módulo 1 Java Web Servlet Formulariopublic class Formulario extends HttpServlet{ public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println("<HTML><HEAD><TITLE></TITLE>"); String nome = request.getParameter("nome"); out.println( "Nome --> " + nome + "<p>"); String[] dados = request.getParameterValues(“preferencias"); if ( dados == null ) out.println( "Dados é null." ); else for( int i=0; i < dados.length; i++ ) out.println( dados[i] ); }} @regismelo 108
    109. 109. Java Básico – Módulo 1 Java Web Entendedo o exemplo• Os dados do formulário são submetidos via GET;• Isso significa que também podemos disparar o servlet fazendo uma requisição na URL do tipo:http://localhost:8080/curso/servlet/Formulario ?nome=blabla&preferencias=1& preferencias=2 @regismelo 109
    110. 110. Java Básico – Módulo 1 Java Web Alterando o exemplo• Vamos alterar o exemplo anterior para que ele exiba todos os parâmetros passados;• Vamos utilizar o método getParameterNames para descobrir quais parâmetros foram passados para o formulário;• E o getParameterValues para obter os valores da requisição. @regismelo 110
    111. 111. Java Básico – Módulo 1 Java Web Servlet Formulario2public class Formulario2 extends HttpServlet{ public void doGet ( HttpServletRequest request, HttpServletResponseresponse ) throws IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); Enumeration paramNames = request.getParameterNames(); while(paramNames.hasMoreElements()) { String paramName = (String)paramNames.nextElement(); out.println( "<p><b> " + paramName + "</b><p>"); String[] paramValues = request.getParameterValues(paramName); for( int i=0; i < paramValues.length; ++i ) { out.print( "--> " + paramValues[i]); } }} @regismelo 111
    112. 112. Java Básico – Módulo 1 Java Web Suportando Post• Para fazer com que o servlet suporte GET, implementamos o método doGet;• Para fazer com que o servlet suporte POST, devemos implementar o método doPost. public void doPost( HttpServletRequest request, HttpServletResponse response ) @regismelo 112
    113. 113. Java Básico – Módulo 1 Java Web Suportando Post• Normalmente, é interessante suportar tanto get quanto post;• Para isso, é só implementar os dois métodospublic void doPost( HttpServletRequest request, HttpServletResponse response ) { ... }public void doGet ( HttpServletRequest request, HttpServletResponse response ) { ... } @regismelo 113
    114. 114. Java Básico – Módulo 1 Java Web Exercício• Construa um servlet que recebe as requisições de um formulário e exiba no browser;• Crie um servlet que mostre a lista de fatoriais entre 0 e 10;• Altere o servlet fatorial de forma que ele receba o valor máximo do fatorial a ser calculado e exiba o resultado do cálculo em uma tabela HTML. @regismelo 114
    115. 115. Java Básico – Módulo 1 Java Web Para saber maisCore Servlets and JSP Pages (CSAJSP-Chapter3.pdf)3.1 The Role of Form Data3.2 Reading Form Data from Servlets3.3 Example: Reading Three Explicit Parameters3.4 Example: Reading All Parameters3.5 A Resume Posting Service3.6 Filtering Strings for HTML-Specific Characters Code for Filtering Example @regismelo 115
    116. 116. Java Básico – Módulo 1 Java Web Módulo VIProcessamento e ciclo de vida de um Servlet@regismelo 116
    117. 117. Java Básico – Módulo 1 Java Web Servlet = Multi-Thread• Como já mencionamos, servlets são multi-thread;• A mesma instância do servlet processa diversas requisições. @regismelo 117
    118. 118. Java Básico – Módulo 1 Java Web Servlet = Multi Thread• Portanto, é importante programarmos os servlets de modo “thread safe”;• Isso significa – nada de propriedades de instância sendo utilizadas!• Cuidado com o acesso a recursos que podem ser danificados com o acesso multi-thread (arquivos, por exemplo). @regismelo 118
    119. 119. Java Básico – Módulo 1 Java Web Servlet Não Thread Safepublic class Problema extends HttpServlet{ public String nome; public void doGet ( HttpServletRequest request, HttpServletResponse response ) { nome = request.getParameter(“nome”); doSomething(); } public void doSomething() { deletarCliente(nome); Nome é uma propriedade } Não thread safe, compartilhada} pela mesma Instância do servlet  Problemas  @regismelo 119
    120. 120. Java Básico – Módulo 1 Java Web Servlet Thread Safepublic class Solucao extends HttpServlet{ public void doGet ( HttpServletRequest request, HttpServletResponse response ) { String nome = request.getParameter(“nome”); doSomething(nome); } public void doSomething( String nome ) { deletarCliente(nome); } Nome é uma variável local.} Sem problemas com threads!  @regismelo 120
    121. 121. Java Básico – Módulo 1 Java Web Interface SingleThreadModel• Você pode sinalizar ao container para serializar o acesso a um servlet;• Basta fazer que seu servlet implemente a interface SingleThreadModel;• O Container pode garantir isso tornando o acesso ao servlet synchronized ou criando um pool de servlets, despachando cada acesso a um novo servlet. @regismelo 121
    122. 122. Java Básico – Módulo 1 Java Web Interface SingleThreadModel@regismelo 122
    123. 123. Java Básico – Módulo 1 Java Web Interface SingleThreadModel• Cuidado! O acesso serializado ao servlet diminui drasticamente a performance!!• Use-o somente quando for extremamente necessário (acesso a um arquivo no disco, por exemplo).• Na versão 2.4 da API de Servlets, SingleThreadModel está deprecated. @regismelo 123
    124. 124. Java Básico – Módulo 1 Java Web SingleThreadModelpublic class Solucao extends HttpServlet implements SingleThreadModel{ public void doGet ( HttpServletRequest request, HttpServletResponse response ) { doSomething(); } } @regismelo 124
    125. 125. Java Básico – Módulo 1 Java Web Ciclo de vida de um Servlet@regismelo 125
    126. 126. Java Básico – Módulo 1 Java Web Ciclo de vida de um Servlet• O ciclo de vida de um servlet é controlado pelo container;• Quando o servidor recebe uma requisição, ela é repassada para o container que a delega a um servlet. O container: 1 – Carrega a classe na memória; 2 – Cria uma instância da classe do servlet; 3 – Inicializa a instância chamando o método init()• Depois que o servlet foi inicializado, cada requisição é executado em um método service() • O container cria um objeto de requisição (ServletRequest) e de resposta (ServletResponse) e depois chama service() passando os objetos como parâmetros; • Quando a resposta é enviada, os objetos são destruídos.• Quando o container decidir remover o servlet da memória, ele o@regismelo chamando o método destroy() finaliza 126
    127. 127. Java Básico – Módulo 1 Java Web Ciclo de vida de um Servlet – init()• O método init() é disparado quando o servlet é carregado;• Você deve sobrescrevê-lo quando necessitar inicializar o servlet de alguma forma;• A sintaxe do método é: public void init(ServletConfig config) throws ServletException Sobrescreva esse public void init() método caso throws ServletException necessite inicializar algo @regismelo 127
    128. 128. Java Básico – Módulo 1 Java Web Ciclo de vida de um Servlet – init()• Caso você tenha algum problema na inicialização do Servlet, você deverá disparar a exceção UnavailableException (subclasse de ServletException). ... public void init() throws ServletException { String dir = getInitParameter(“diretorio”); // Problemas ao ler configuracao? if ( dir == null ) throw new UnavailableException(“Erro na configuracao!”) } @regismelo 128
    129. 129. Java Básico – Módulo 1 Java Web Ciclo de vida de um Servlet – service()• O método service() é o método que irá disparar o doGet ou doPost.• Ele é um método abstrato na sua declaração em GenericServlet. HttpServlet implementa esse método repassando a chamada para doGet ou doPost. @regismelo 129
    130. 130. Java Básico – Módulo 1 Java Web Diagrama de classes• Servlets não necessariamente estão ligados a aplicações web. Essa é a razão de existir a classe GenericServlet e a implementação HttpServlet @regismelo 130
    131. 131. Java Básico – Módulo 1 Java Web Ciclo de vida de um Servlet – destroy()• O método destroy() é chamado pelo container antes do servlet ser destruído;• O momento em quem o servlet será desativado é decidido pelo container;• É a última oportunidade para “limpar a casa”. public void destroy() { ... } @regismelo 131
    132. 132. Java Básico – Módulo 1 Java Web Processamento em Background• Um servlet pode fazer mais que simplesmente servir clientes;• Ele pode trabalhar entre os acessos;• Essa é uma habilidade interessante para processos muito demorados;• Um cliente pode, por exemplo, disparar um processo e eventualmente ficar consultando o resultado do processamento. @regismelo 132
    133. 133. Java Básico – Módulo 1 Java Web …Processamento em Background• Para exemplificar, vamos criar um servlet que calcule números primos;• Para fazer com que o processamento demore bastante, vamos iniciar a busca por números primos a partir de 1.000.000 (hum milhão);• Vamos utilizar um thread para ficar realizando o processamento em background. @regismelo 133
    134. 134. Java Básico – Módulo 1 Java Web ServletBackgroundimport java.io.*; import java.util.*;import javax.servlet.*; import javax.servlet.http.*;public class ServletBackground extends HttpServletimplements Runnable{private long lastprime = 0; // Ultimo primo encontradoDate lastprimeModified = new Date();Thread searcher; // Thread para buscapublic void init() throws ServletException { searcher = new Thread( this ); searcher.setPriority( Thread.MIN_PRIORITY ); searcher.start();}// ... Continua  @regismelo 134
    135. 135. Java Básico – Módulo 1 Java Web ServletBackground//  ... Continuaçãopublic void run() { long candidate = 1000001L; // um milhao e um // Loop para buscar eternamente primos... while (!searcher.interrupted()) { if (isPrime(candidate)) { lastprime = candidate; lastprimeModified = new Date(); } candidate += 2; // Nos. pares não são primos // Dormir por 200ms... try { Thread.sleep(200); } catch (InterruptedException ignored) { } } @regismelo 135}
    136. 136. Java Básico – Módulo 1 Java Web ServletBackground//  ... Continuaçãoprivate static boolean isPrime(long candidate) { long sqrt = (long) Math.sqrt(candidate); for (long i = 3; i <= sqrt; i += 2) { if (candidate % i == 0) return false; } return true;}public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); if (lastprime == 0) { out.println(“Procurando o 1o. primo..."); } else {out.println(“O último primo encontrado foi " + lastprime); out.println(" em " + lastprimeModified); } @regismelo 136}
    137. 137. Java Básico – Módulo 1 Java Web ServletBackground//  ... Continuação public void destroy() { // Sinalizar para o thread parar... searcher.interrupt(); }} @regismelo 137
    138. 138. Java Básico – Módulo 1 Java Web Exercício• Crie um servlet que exibe (usando System.out.println) os devidos eventos do ciclo de vida (init, service e destroy);• Implementa o exemplo ServletBackground e observe-o funcionar. @regismelo 138
    139. 139. Java Básico – Módulo 1 Java Web Para saber maisCore Servlets and JSP Pages (CSAJSP-Chapter2.pdf)2.6 The Servlet Life Cycle – The init Method – The service Method – The doGet, doPost, and doXxx Methods – The SingleThreadModel Interface – The destroy Method @regismelo 139
    140. 140. Java Básico – Módulo 1 Java Web Módulo VII Obtendo informações do ambiente@regismelo 140
    141. 141. Java Básico – Módulo 1 Java Web Obtendo informações• Em alguns casos é bastante importante conhecer informações do ambiente cliente e servidor;• Por exemplo, você pode decidir utilizar JavaScript ou não, dependendo da capacidade do browser que fez a requisição;• Ou, até mesmo, exibir a página utilizando uma outra língua, dependo do cliente que fez a requisição. @regismelo 141
    142. 142. Java Básico – Módulo 1 Java Web Obtendo informaçõesMétodos interessantes ligados a HttpServletRequest:• getLocale()  - Retorna o “Locale” associado ao cliente; - Locale é um objeto java, que dá informações relativas a localização; - As informações são extraídas a partir de Accept- Language. Se o cliente não prover esse cabeçalho HTTP, getLocale retorna o Locale default do servidor. @regismelo 142
    143. 143. Java Básico – Módulo 1 Java Web Localizacaopublic class Localizacao extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println( "<p> getDisplayName --> " + request.getLocale().getDisplayName() ); out.println( "<p> getCountry --> " + request.getLocale().getCountry() ); out.println( "<p> getDisplayLanguage --> " + request.getLocale().getDisplayLanguage() ); out.println( "<p> getISO3Country --> " + request.getLocale().getISO3Country() ); out.println( "<p> getISO3Country --> " + request.getLocale().getISO3Language() ); out.close(); } } @regismelo 143
    144. 144. Java Básico – Módulo 1 Java Web Rodando o exercício anterior@regismelo 144
    145. 145. Java Básico – Módulo 1 Java Web Obtendo informaçõesDicas com relação ao Locale• getISO3Country  - Retorna 3 bytes indicando o país; - Você pode obter a lista dos países em http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html - Alguns países: - BRA – Brasil; - USA – Estados Unidos; - ARG – Argentina @regismelo 145
    146. 146. Java Básico – Módulo 1 Java Web Obtendo informaçõesDicas com relação ao Locale• getISO3Language  - Retorna 3 bytes indicando a linguagem preferencial do cliente; - Você pode obter a lista das linguagens em http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt - Algumas linguagens: - por – Português; - eng – Inglês. @regismelo 146
    147. 147. Java Básico – Módulo 1 Java Web Obtendo informaçõesMétodos interessantes ligados a HttpServletRequest:• String getHeader( String name )  - Obtém o valor associado a um determinado header• Enumeration getHeaderNames()  - Obtém o nome de todos os headers da requisição- Headeres úteis: - user-agent – Indica o browser e o S.O. do cliente; - refer – Indica de onde o usuário veio (a URL). @regismelo 147
    148. 148. Java Básico – Módulo 1 Java Web HttpHeaderpublic class HttpHeaderExemplo extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); Enumeration enum = request.getHeaderNames(); String header; while( enum.hasMoreElements() ) { header = (String)enum.nextElement(); out.println( "<p> " + header + " --> "); out.println( request.getHeader( header ) ); } out.close(); }} @regismelo 148
    149. 149. Java Básico – Módulo 1 Java Web HttpHeader@regismelo 149
    150. 150. Java Básico – Módulo 1 Java Web Obtendo informaçõesMétodos interessantes ligados a HttpServletRequest:• String getRemoteAddr()  - Retorna o endereço IP do cliente que fez a requisição• String getRemoteHost()  - Retorna o nome do cliente que fez a requisição.- Com esses métodos você consegue saber quem acessa o seu site. @regismelo 150
    151. 151. Java Básico – Módulo 1 Java Web HttpAddrExemplopublic class HttpAddrExemplo extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println( "<p> getRemoteAddr --> " + request.getRemoteAddr() ); out.println( "<p> getRemoteHost --> " + request.getRemoteHost() ); out.close(); }} @regismelo 151
    152. 152. Java Básico – Módulo 1 Java Web HttpAddrExemplo@regismelo 152
    153. 153. Java Básico – Módulo 1 Java Web Exercício• Construa um servlet que a partir da requisição do cliente exibe qual o browser está sendo utilizado e qual S.O.;• Além disso, o servlet deverá exibir o IP do cliente;• O Servlet deverá mostrar a frase: “The quick brown fox jumps over the lazy dog” ou “A rápida raposa castanha pula sobre o cachorro preguiçoso” Dependendo da língua preferida do usuário. Dica  Para mudar as configurações de língua, no Internet Explorer acesse o menu Tools/Internet Options/Languages. @regismelo 153
    154. 154. Java Básico – Módulo 1 Java Web Para saber maisCore Servlets and JSP PagesCHAPTER 5 (CSAJSP-Chapter5.pdf) Accessing the Standard CGI Variables 5.1 Servlet Equivalent of CGI Variables 5.2 A Servlet That Shows the CGI VariablesCHAPTER 6 (CSAJSP-Chapter6.pdf) Generating the Server Response: HTTP Status Codes 6.1 Specifying Status Codes 6.2 HTTP 1.1 Status Codes and Their Purpose 6.3 A Front End to Various Search EnginesCHAPTER 7(CSAJSP-Chapter7.pdf) Generating the Server Response: HTTP Response Headers 7.1 Setting Response Headers from Servlets 7.2 HTTP 1.1 Response Headers and Their Meaning 7.3 Persistent Servlet State and Auto-Reloading Pages 7.4 Using Persistent HTTP Connections 7.5 Using Servlets to Generate GIF Images@regismelo 154
    155. 155. Java Básico – Módulo 1 Java Web Módulo VIIIControle de fluxo e colaboração@regismelo 155
    156. 156. Java Básico – Módulo 1 Java Web Controle de Fluxo• Utilizando técnicas de controle de fluxo você pode redirecionar uma requisição;• Redirecionar, significa ir para uma outra página ou um outro servlet;• Você pode, por exemplo, receber uma requisição gerada a partir de uma página estática, fazer um processamento, e desviar para uma página dinâmica. @regismelo 156
    157. 157. Java Básico – Módulo 1 Java Web Controle de Fluxo• A primeira maneira de redirecionar uma página é retornando para o browser um cabeçalho HTTP de forma que ele gere uma nova requisição para outra página; @regismelo 157
    158. 158. Java Básico – Módulo 1 Java Web Controle de FluxoMétodo de HttpServletResponse• void sendRedirect(String location)  - Retorna um status HTTP que força o cliente a fazer uma nova requisição a nova location. - OBS: Você só pode utilizar esse método antes do response ser enviado para o cliente, do contrário, o método disparará IllegalStateException. @regismelo 158
    159. 159. Java Básico – Módulo 1 Java Web SendRedirectExemplopublic class SendRedirectExemplo extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) { // Faça alguma coisa aqui ... response.sendRedirect( “http://www.sagaranatech.com“ ); // Oops!Nesse ponto você não pode mais gerar conteúdo! }} @regismelo 159
    160. 160. Java Básico – Módulo 1 Java Web Desvantagens do sendRedirect• O método sendRedirect retorna para o browser um código HTTP que faz com que ele faça outra requisição;• Isso significa que para o redirecionamento acontecer, outra requisição é necessária;• Essa é uma abordagem que pode ser lenta... @regismelo 160
    161. 161. Java Básico – Módulo 1 Java Web Redirecionamento• Existe uma outra forma de redirecionar, sem necessitar uma nova requisição;• É mais rápido redirecionar dentro do próprio servidor (sem realizar uma nova requisição);• Antes de ver como redirecionar, vamos aprender um pouco sobre “Servlet Collaboration”. @regismelo 161
    162. 162. Java Básico – Módulo 1 Java Web Servlet Collaboration• Eventualmente é interessante se comunicar com outros servlets dentro do mesmo servidor;• Damos a isso o nome de “colaboração”;• O seu servlet, por exemplo, pode fazer algum processamento e transferir a responsabilidade de lidar com a requisição para outro servlet. @regismelo 162
    163. 163. Java Básico – Módulo 1 Java Web Servlet Collaboration• Para suportar delegação, a API 2.1 de servlets inclue a interface javax.servlet.RequestDispatcher;• Utilize o método public RequestDispatcher ServletRequest.getRequestDispatcher(String path)• Dessa forma, você só pode redirecionar para recursos dentro do mesmo contexto. @regismelo 163
    164. 164. Java Básico – Módulo 1 Java Web Contextos?• Web Containers suportam a implantação de múltiplas aplicações web; – Definindo contextos separados para execução de servlets• No TomCat, essas aplicações estão na pasta webapps/• Todo diretório de contexto tem uma estrutura definida, que consiste de – Área de documentos do contexto (/), acessível externamente; – Área inacessível (/WEB-INF), que possui pelo menos um arquivo de configuração padrão (web.xml); – O WEB-INF pode conter ainda dois diretórios reconhecidos pelo servidor: o classpath da aplicação (WEB-INF/classes) e outro JARs para inclusão no classpath (/WEB-INF/lib). @regismelo 164
    165. 165. Java Básico – Módulo 1 Java Web Contextos• Contextos isolam as aplicações web;• A grande vantagem dos contextos é que uma aplicação não “quebra” outra aplicação;• Tudo está isolado, inclusive as classes que estão na memória. @regismelo 165
    166. 166. Java Básico – Módulo 1 Java Web Contextos@regismelo 166
    167. 167. Java Básico – Módulo 1 Java Web Servlet Collaboration• Voltando para o RequestDispatcher... public RequestDispatcher ServletRequest.getRequestDispatcher(String path)• O objeto RequestDispatcher possui dois métodos importantes: – forward( ServletRequest request, ServletResponse response )  - Redireciona para a página; – include( ServletRequest request, ServletResponse response )  - Inclue a página no response. @regismelo 167
    168. 168. Java Básico – Módulo 1 Java Web ForwardExemploimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;public class ForwardExemplo extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); RequestDispatcher rd = request.getRequestDispatcher("/DiaHoje.jsp" ); rd.forward( request, response ); }} @regismelo 168
    169. 169. Java Básico – Módulo 1 Java Web IncludeExemploimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;public class IncludeExemplo extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); RequestDispatcher rd = request.getRequestDispatcher("/DiaHoje.jsp" ); rd.include( request, response ); }} @regismelo 169
    170. 170. Java Básico – Módulo 1 Java Web IncludeExemplo2public class IncludeExemplo2 extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); RequestDispatcher rd = request.getRequestDispatcher("/Menu.html" ); rd.include( request, response ); out.println( "Regis Melo" ); rd = request.getRequestDispatcher("/Bottom.html" ); rd.include( request, response ); }} @regismelo 170
    171. 171. Java Básico – Módulo 1 Java Web Definindo atributos• Na API de Servlets, você pode disponibilizar informações entre servlets através da requisição;• O tempo de vida dessas informações é curto – somente o tempo da requisição. @regismelo 171
    172. 172. Java Básico – Módulo 1 Java Web Definindo atributosMétodos da interface ServletRequest• setAttribute( String name, Object o )  - Disponibiliza uma informação que só será visível para essa requisição;• removeAttribute( String name )  - Remove um atributo da requisição• Object getAttribute( String name )  - Obtém o atributo da requisição• Enumeration getAttributeNames()  - Retorna o nome de todos os atributos na requisição. @regismelo 172
    173. 173. Java Básico – Módulo 1 Java Web ForwardExemplo// import ...public class ForwardExemplo extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); RequestDispatcher rd = request.getRequestDispatcher("/DiaHoje.jsp" ); request.setAttribute( “cdCliente”, new Integer(10) ); rd.forward( request, response ); } Esse atributo estará disponível} para a página que está sendo redirecionada @regismelo 173
    174. 174. Java Básico – Módulo 1 Java Web Exercício• Defina um arquivo HTML representando um header, outro representando um footer;• Faça com que seu servlet inclua esses dois arquivos e exiba um conteúdo qualquer. @regismelo 174
    175. 175. Java Básico – Módulo 1 Java Web Exercício• Crie um novo servlet que receberá os dados de um formulário e gravará no banco de dados;• Caso os dados sejam gravados com sucesso, redirecione para uma página estática, mostrando sucesso;• Caso algum erro aconteça, redirecione para uma página de erro. @regismelo 175
    176. 176. Java Básico – Módulo 1 Java Web Exercício• Ainda no mesmo exercício, crie um link na sua aplicação que listará os dados de uma tabela no banco de dados;• Você deverá criar dois servlets - um deverá fazer a consulta no banco de dados, e disponibilizar na requisição os registros utilizando um ArrayList. Após feito isso, esse servlet deverá redirecionar para outro servlet que construirá a página a partir do ArrayList disponibilizado na requisição. @regismelo 176
    177. 177. Java Básico – Módulo 1 Java Web Para saber maisCore Servlets and JSP Pages (CSAJSP-Chapter15.pdf)15.1 Forwarding Requests 354 Using Static Resources 354 Supplying Information to the Destination Pages 355 Interpreting Relative URLs in the Destination Page 357 Alternative Means of Getting a RequestDispatcher 35815.2 Example: An On-Line Travel Agent 35815.3 Including Static or Dynamic Content 37515.4 Example: Showing Raw Servlet and JSP Output 37715.5 Forwarding Requests From JSP Pages 380@regismelo 177
    178. 178. Java Básico – Módulo 1 Java Web Módulo IX Cookies@regismelo 178
    179. 179. Java Básico – Módulo 1 Java Web Cookies• “Cookies são pequenas informações, enviadas pelo web server para um browser, que pode ser lida posteriormente do browser”;• Cookies foram introduzidos no Netscape Navigator (Netscape 0.94 beta);• Apesar de não serem um padrão oficial (definido pela IETF, Internet Engineering Task Force), cookies se tornaram um padrão de fato.• Atualmente, a especificação está padronizada através da RFC 2109 (http://www.ietf.org/rfc/rfc2109.txt) @regismelo 179
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×