Você está na página 1de 22

Servlets

Profa. Karen Selbach Borges

Introduo
As Servlets constituem o recurso bsico
para criao de pginas dinmicas com
Java.
Implementam classes que com a
capacidade de gerar contedo HTML.
O objetivo receber chamadas HTTP,
process-las e devolver uma resposta ao
cliente.

Arquitetura
Container Web
Servlet
Pedido

Init
Pedido

Service

HTTP, HTTPS
Resposta

Resposta

Destroy

Container Web
Um container web um programa que
recebe requisies HTTP,executa
componentes Java (Servlets) e devolve
para o usurio (browser) cdigo HTML,
alm de todos os outros recursos
necessrios (como imagens, vdeos,
folhas de estilo e etc).

Container Web
Destacam-se :
Apache Tomcat
JBoss AS
Glassfish
JOnAS
Apache Geronimo
IBM WebSphere Application Server
Oracle WebLogic Server (antigo BEA)
Oracle Application Serve

Ciclo de Vida da Servlet


init(config)

Iniciando

service(request,response)

Processando

destroy()

Finalizando

Ciclo de Vida - Mtodos


init (ServletConfig config) :
automaticamente chamado uma vez
durante um ciclo de vida do servlet para
inicializ-lo.
O argumento ServletConfig fornecido
automaticamente pelo servidor que executa o
servlet

Ciclo de Vida - Mtodos


service (ServletRequest request,
ServletResponse response)
Cada solicitao do cliente resulta em uma
nica chamada para este mtodo.
Este mtodo trata o pedido do cliente
(request) e produz a mensagem de resposta
(response)

Ciclo de Vida - Mtodos


destroy() :
chamado para permitir que o servlet libere
quaisquer recursos (arquivos ou conexes a
banco de dados, por exemplo) antes do
servlet ser descarregado.

Exemplo Meu primeiro servlet


public class PrimerioServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void destroy() {

public void service (HttpServletRequest request, HttpServletResponse response)


throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println();
out.println("<html> <head> <title> UM EXEMPLO DE SERVLET </title> </head>");
out.println("<body>");
out.println("<h1> Meu primeiro Servlet <h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}

HTTP Servlet
Tipo de servlet utilizado para estender servidores HTTP;
Definido pela classe javax.servlet.http.HttpServlet;
Esta classe define um mtodo abstrato para cada tipo
de requisio HTTP possvel;
Estes mtodos so refinamentos do mtodo service, que
j implementado por HttpServlet;
No se faz necessrio sobrescrever o mtodo service.
Ao invs disso deve-se implementar pelo menos um
destes mtodos abstratos relacionados aos tipos de
requisio HTTP para se obter alguma funcionalidade

HTTP Servlet
Principais mtodos :
doGet(HttpServletRequest,HttpServletRespon
se)
Executando ao receber requisies com o mtodo
GET;

doPost(HttpServletRequest,HttpServletRespo
nse)
Executando ao receber requisies com o mtodo
POST;

Tratando Pedidos GET e POST


import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class BasicFormProcessor extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}

Tratando Pedidos GET e POST


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println();
out.println("<html> <head> <title> INFORMAES FORNECIDAS </title> </head>");
out.println("<body>");
out.println("<h1> Confirme os dados abaixo : <h1>");
String nome = request.getParameter("Nome");
String login = request.getParameter("Login");
String senha = request.getParameter("Senha");
out.println("Nome : " + nome);
out.println("Login : " + login);
out.println("Senha : " + senha);
out.println("</body>");
out.println("</html>");
out.close();
}
}

Tratando Pedidos GET e POST


Entrada de dados via GET :

http://localhost:8084/exaula4/formProcessor?
Nome='karen'&Login='kaka'&Senha='1234'

Entrada de dados via POST :

Mapeando uma servlet no web.xml


1. Definir o nome e a classe da servlet;
<servlet>
<servletname>primeiraServlet</servletname>
<servletclass>br.edu.ifrs.poa.OiMundo</servletclass>
</servlet>

2. Usando o nome da servlet, definir a URL.


<servletmapping>
<servletname>primeiraServlet</servletname>
<urlpattern>/oi</urlpattern>
</servletmapping>

Mapeando uma servlet no web.xml


Em resumo:
<servlet-name> nome conhecido pelo
container
<servlet-class> arquivo class Servlet do
desenvolvedor (.java)
<url-pattern> endereo para usurio,
normalmente falso.
um XML pode declarar vrios Servlets

Erros comuns
Esquecer da barra inicial do url pattern
<urlpattern>oi</urlpattern>

Erros comuns
Digitar errado o nome do pacote da sua
servlet:
<servletclass>br.edu.ifrs.OiMundo</servletclass>

Erros comuns
Esquecer de colocar o nome da classe no
mapeamento da servlet:
<servletclass>br.edu.ifrs.poa.OiMundo</servletclass>

Referncias
Caelum. Apostila do curso FJ-21. Java
para Desenvolvimento Web. Disponvel em
http://www.caelum.com.br/apostila-java-we
b/
Oracle. Creating and Configuring Servlets.
Disponvel em
http://docs.oracle.com/cd/E13222_01/wls/d
ocs92/webapp/configureservlet.html

Você também pode gostar