02 - Fundamentos de Servlets

1,751
-1

Published on

Apostila sobre os fundamentos do desenvolvimento Web com Java e Servlets.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,751
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

02 - Fundamentos de Servlets

  1. 1. Fundamentos de Servlets www.jetsoftware.com.br
  2. 2. Agenda A estrutura básica de servlets Um servlet simples que gera um texto de resposta Um servlet que gera HTML Servlets e pacotes Utilitários para criação de HTML Estratégias para debugar servlets www.jetsoftware.com.br
  3. 3. A finalidade de um Servlet Ler dados explícitos enviados pelo cliente ( formulário de dados ) Ler dados implícitos enviados pelos clientes (headers de request) Gerar os resultados Enviar os dados explícitos de volta para o cliente Enviar os dados implícitos de volta para o cliente ( códigos de status e headers de response ) O Servlet mora aqui ! Request Respo nse Browser www.jetsoftware.com.br
  4. 4. Um Servlet que gera um texto simples package br.com.jetsoftware.controller; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TextoPlano extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println(quot;Hello Worldquot;); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } www.jetsoftware.com.br
  5. 5. Um Servlet que gera HTML Informe ao browser que enviaremos uma resposta em HTML response.setContentType(“text/html”); Modifique a declaração println para construir uma página HTML bem formada A declaração print deve ter como saída tags HTML Cheque o HTML gerado com um validador formal. http://validator.w3.org http://www.htmlhelp.com/tools/validator www.jetsoftware.com.br
  6. 6. Um Servlet que gera HTML, código package br.com.jetsoftware.controller; public class TextoHtml extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(quot;text/htmlquot;); PrintWriter out = response.getWriter(); String docType = quot;<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.0 quot;+ quot;Transitional//ENquot;>nquot;; out.println(docType + quot;<HTML>nquot; + quot;<HEAD><TITLE>Alou</TITLE></HEAD>nquot;+ quot;<BODY BGCOLOR=quot;#FDF5E6quot;>nquot; + quot;<H1>Alou</H1>nquot; + quot;</BODY></HTML>quot;); } } www.jetsoftware.com.br
  7. 7. Utilitário para geração de HTML public class ServletUtilities { public static final String DOCTYPE = quot;<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.0 quot; + quot;Transitional//ENquot;>quot;; public static String headWithTitle(String title) { return(DOCTYPE + quot;nquot; + quot;<HTML>nquot; + quot;<HEAD><TITLE>quot; + title + quot;</TITLE></HEAD>nquot;); } } Não vá nesse barco pois é furado !!!! Geração dinâmica de HTML é péssimo O framework JSP é uma solução muito melhor www.jetsoftware.com.br
  8. 8. Ciclo de vida do Servlet init Executado uma única vez quando o servlet é carregado. service Invocado em uma nova thread pelo servidor para cada requisição. Despacha para doGet, doPost, etc. NÃO faça override deste método ! doGet, doPost, doXXX Trata GET, POST, etc. para requests Faça override destes métodos para ter o comportamento desejado. destroy Invocado quando o servidor deleta a instãncia do servlet Não é invocado depois de cada requisição. www.jetsoftware.com.br
  9. 9. Por que não devemos fazer override no método service O método service faz outras coisas além de invocar o doGet Podemos adicionar suporte a outros serviços mais tarde, adicionando doPut, doTrace, etc. Pode-se adicionar suporte para modificações de data adicionando o método getLastModified O método service nos dá suporte automático a : HEAD requests OPTIONS requests TRACE requests Alternativa doPost chamando doGet www.jetsoftware.com.br
  10. 10. Debugando Servlets Podemos usar declarações println Apache Log4J O debugger integrado da IDE Use debug ao invés de start no servidor www.jetsoftware.com.br
  11. 11. Sumário O código principal do servlet vai para os métodos doGet e doPost: O objeto HttpServletRequest contém as informações de entrada. O objeto httpServletReponse permite-nos enviar informações de saída Invoque setContentType para especificar o MIME type. Invoque getWriter para obter um objeto Writer apontando para o cliente (browser) Código de setup vai para o init O Servlet é inicializado e carregado uma única vez O Servlet é invocado várias vezes Parâmetros de internacionalização vai no web.xml www.jetsoftware.com.br
  12. 12. Perguntas ? www.jetsoftware.com.br

×