Vous êtes sur la page 1sur 26

Tcnicas de Programao II

Prof. MSc. Gustavo Rodrigues profgustavo@fiap.com.br

Parte 02
(Servlets)

Agenda
Introduo a tecnologia Servlet (primeira aula) A API Servlet Classe HttpServlet Interface HttpServletRequest Interface HttpServletResponse Tratando Requests HTTP GET Tratando Requests HTTP POST Tratamento de sesso Utilizando cookies

O que um Servlet
Servlets so para um servidor o que os Applets so para os clientes (browsers) Soluo baseada em Java para a entrega de contedo dinmico na web baseado no modelo requisio / resposta Um servlet um componente servidor do Java substituto dos scripts e programas CGI Servlets so mais rpidos e mais eficientes que CGI e permitem usar toda a plataforma Java no servidor web, incluindo conexo com banco de dados, repositrio de objetos entre outros.

Benefcios
Os servlets tm menor overhead que um CGI Servlets so mais seguros que cdigos nativos NSAPI e ISAPI A API do servlet consistente e padronizada atravs de distintas implementaes de servidores Servlets podem usufruir de toda a biblioteca Java como JDBC, JavaMail etc.

Outras tecnologias
CGI ASP PHP .Net JSP entre outras...

Como funciona
L explicitamente dados enviados pelos clientes (formulrios) L implicitamente dados enviados pelos clientes (cabealho) Gera resultados Envia dados explicitamente de volta para o cliente (HTML) Envia dados implicitamente para o cliente (status e cabealho)

Mecanismo
Um servlet uma classe Java, assim sendo precisa ser executado em um ambiente Java (JVM) por um servio chamado de servlet engine O servlet engine carrega o servlet antes que ele possa ser utilizado

Servlet Engines
Apache Tomcat http://jakarta.apache.org/tomcat/ veja http://www.moreservlets.com/Using-Tomcat-4.html Allaire/Macromedia JRun http://www.macromedia.com/software/jrun/ New Atlanta ServletExec http://www.servletexec.com/ Gefion Software LiteWebServer http://www.gefionsoftware.com/LiteWebServer/ Caucho's Resin http://www.caucho.com/

Ciclo de vida
Um servlet uma classe Java que implementa a interface Servlet Esta interface tem trs mtodos que definem o ciclo de vida de um servlet init
Executado quando um servlet carregado pela primeira vez. No chamado a cada requisio

service
Chamado pelo servidor em uma nova thread a cada requisio. Dispara os mtodos doGet, doPost, etc

doGet, doPost, doXxx


Trata as requisies GET, POST, etc..

destroy
Chamado quando o servidor apaga a instancia do servlet. No chamado a cada requisio.
10

API Servlet
Interface Servlet Implementado por todos os servlets Muitos mtodos invocados automaticamente pelo servidor Similar aos applets (paint, init, start etc.) Classes abstratas que implementam a interface Servlet GenericServlet (javax.servlet) HTTPServlet (javax.servlet.http)

11

Mtodos
void init (ServletConfig config) Chamado automaticamente, argumento fornecido ServletConfig getServletConfig() Retorna referncia ao objeto que d acesso a inf. de configurao void service (ServletRequest request, ServletResponse response) Mtodo chave em todos os servlets D acesso aos streams (dados) de entrada e sada L e envia dados do cliente void destroy() Mtodo de limpeza, chamado antes do servlet ser finalizado

12

Classe HTTPServlet
HttpServlet Classe fundamental para servlets web-based Sobreescreve o mtodo service Mtodos de requisio GET POST Mtodos doGet e doPost respondem s requisies GET e POST Chamado por service Recebem objetos HttpServletRequest e HttpServletResponse e retornam void

13

Interface HTTPServletRequest
Interface HttpServletRequest Objeto passado para doGet e doPost Estende ServletRequest

14

Mtodos
String getParameter(String name) Retorna o valor da primeira ocorrncia do parmetro name (parte do GET ou POST) Retorna nulo se no existe nenhum parmetro com o nome especificado Enumeration getParameterNames() Retorna nomes dos parmetros String[] getParameterValues(String name) Retorna um array de Strings contendo os valores de um parmetro Retorna um elemento se no existir repetio do nome do parmetro Retorna nulo se no existe nenhum parmetro com o nome especificado Cookie[] getCookies() Retorna um array de objetos Cookie
15

Interface HttpServletResponse
HttpServletResponse Objeto passado para doGet e doPost Estende ServletResponse

16

Mtodos
void addCookie (Cookie cookie) Adiciona um cookie ao cabealho da resposta para o cliente ServletOutputStream getOutputStream() Pega um stream de sada baseado em bytes, para enviar dados binrios para o cliente PrintWriter getWriter() Pega um stream de sada baseado em caracteres, para enviar texto ao cliente void setContentType(String type) Especifica o tipo MIME da resposta Auxilia o browser a mostrar o dado no formato correto

17

Tratando requisies GET e POST


Requisies HTTP GET Geralmente recebe contedo de uma URL especfica Mtodo doGet Responde requisies GET Argumentos representam a requisio do cliente (request) e a resposta do servidor (response) Requisies HTTP POST Usado para enviar dados ao servidor para tratamento de dados do form HTML Mtodo doPost Responde requisies POST Mesmos argumentos do doGet

18

Estrutura bsica
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletTemplate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Usa "request" para ler cabealhos HTTP // (ex. cookies) e dados de formulrio HTML // Usa "response" para especificar a resposta de // status HTTP response e cabealhos (ex.content type, // cookies). PrintWriter out = response.getWriter(); // Usa "out" para enviar contedo para o browser } }

19

Hello Word
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class AloMundo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println(Alo Mundo"); } }

20

Gerando HTML
Definir o header content-type
Use response.setContentType

Sada em HTML Usar servio de validao de HTML


http://validator.w3.org http://www.htmlhelp.com/tools/validator/

21

Um servlet que gera um HTML


public class AloWWW extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n"; out.println(docType + "<HTML>\n" + "<HEAD><TITLE>ALO WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Alo WWW</H1>\n" + "</BODY></HTML>"); } }
22

Formulrio HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD><TITLE>Um exemplo de formulario</TITLE></HEAD> <BODY BGCOLOR="#FDF5E6"> <H2 ALIGN="CENTER">Exemplo usando POST</H2> <FORM ACTION=http://localhost:8080/teste/meuForm METHOD="POST"> <CENTER> Nome : <INPUT TYPE="TEXT" NAME="nome" VALUE=Gustavo"><BR> Sobrenome: <INPUT TYPE="TEXT" NAME="sobrenome" VALUE=Rodrigues"><P> <INPUT TYPE="SUBMIT" VALUE="ENVIAR"> </CENTER> </FORM> </BODY></HTML>

23

Servlet para ler os dados


import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class LerParametros extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Lendo os parametros"; out.println(ServletUtilities.headWithTitle(title) + "<BODY BGCOLOR=\"#FDF5E6\">\n" + "<H1 ALIGN=CENTER>" + title + "</H1>\n" + "<UL>\n" + " <LI><B>parametro 1:</B>: " + request.getParameter("nome") + "\n" + " <LI><B>parametro 2:</B>: " + request.getParameter("sobrenome") + "\n" + "</UL>\n" + "</BODY></HTML>"); } }
24

Configurando o servlet (web.xml)


<servlet> <servlet-name>ServletNomeInterno</servlet-name> <servlet-class> fiap.si.AloWWW Nome interno Nome da classe </servlet-class> usado no XML </servlet> <servlet-mapping> <servlet-name>ServletNomeInterno</servlet-name> <url-pattern>/meuAloMundo</url-pattern> </servlet-mapping>
Nome lgico a ser usado na URL

25

Copyright 2009 Prof. Gustavo Rodrigues Todos direitos reservados. Reproduo ou divulgao total ou parcial deste documento expressamente proibido sem o consentimento formal, por escrito, do Professor (autor).

Vous aimerez peut-être aussi