3-servlets2014

22
Servlets Profa. Karen Selbach Borges

Upload: jean-lopes

Post on 14-Dec-2015

214 views

Category:

Documents


1 download

DESCRIPTION

servlets ppt

TRANSCRIPT

Servlets

Profa. Karen Selbach Borges

Introdução

• As Servlets constituem o recurso básico para criação de páginas dinâmicas com Java.

• Implementam classes que com a capacidade de gerar conteúdo HTML.

• O objetivo é receber chamadas HTTP, processá-las e devolver uma resposta ao cliente.

Container Web

Servlet

HTTP, HTTPS

Arquitetura

Init

Service

DestroyResposta

Resposta

PedidoPedido

Container Web

• Um container web é um programa que recebe requisições HTTP,executa componentes Java (Servlets) e devolve para o usuário (browser) código HTML, além de todos os outros recursos necessários (como imagens, vídeos, 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

Processando

Finalizandodestroy()

service(request,response)

Ciclo de Vida - Métodos

• 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 - Métodos

• service (ServletRequest request, ServletResponse response)– Cada solicitação do cliente resulta em uma

única chamada para este método. – Este método trata o pedido do cliente

(request) e produz a mensagem de resposta (response)

Ciclo de Vida - Métodos

• destroy() :– É chamado para permitir que o servlet libere

quaisquer recursos (arquivos ou conexões a banco de dados, por exemplo) antes do servlet ser descarregado.

Exemplo – Meu primeiro servletpublic 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 método abstrato para cada tipo

de requisição HTTP possível;• Estes métodos são refinamentos do método service, que

já é implementado por HttpServlet;• Não se faz necessário sobrescrever o método service.

Ao invés disso deve-se implementar pelo menos um destes métodos abstratos relacionados aos tipos de requisição HTTP para se obter alguma funcionalidade

HTTP Servlet

• Principais métodos :– doGet(HttpServletRequest,HttpServletResponse)

• Executando ao receber requisições com o método GET;

– doPost(HttpServletRequest,HttpServletResponse)

• Executando ao receber requisições com o método POST;

Tratando Pedidos GET e POSTimport 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> INFORMAÇÕES 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> <servlet-name>primeiraServlet</servlet-name>

<servlet-class>br.edu.ifrs.poa.OiMundo</servlet-class>

</servlet>

2. Usando o nome da servlet, definir a URL.<servlet-mapping>

<servlet-name>primeiraServlet</servlet-name>

<url-pattern>/oi</url-pattern>

</servlet-mapping>

Mapeando uma servlet no web.xml

• Em resumo:– <servlet-name> nome conhecido pelo

container– <servlet-class> arquivo class Servlet do

desenvolvedor (.java)– <url-pattern> endereço para usuário,

normalmente é falso.– um XML pode declarar vários Servlets

Erros comuns

• Esquecer da barra inicial do url pattern

<url-pattern>oi</url-pattern>

Erros comuns

• Digitar errado o nome do pacote da sua servlet:<servlet-class>br.edu.ifrs.OiMundo</servlet-class>

Erros comuns

• Esquecer de colocar o nome da classe no mapeamento da servlet: <servlet-class>br.edu.ifrs.poa.OiMundo</servlet-class>

Referências

• Caelum. Apostila do curso FJ-21. Java para Desenvolvimento Web. Disponível em http://www.caelum.com.br/apostila-java-web/

• Oracle. Creating and Configuring Servlets. Disponível em http://docs.oracle.com/cd/E13222_01/wls/docs92/webapp/configureservlet.html