Académique Documents
Professionnel Documents
Culture Documents
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
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
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
21
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
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).