Vous êtes sur la page 1sur 24

Dominando a API Java Servlet

Monitoria de Sites Dinmicos


Claudivan Moreira

O que vamos aprender?

Objetivos
Compreender conceitos bsicos de sistemas web (requisies, resposta, seo, parmetros, continer web, etc); Conhecer a API Servlets 3.1; Conhecer as anotaes para mapeamento dos Servlets; Conhecer o ciclo de vida de um Servlet; Implementar um Servlet Hello World; Aprender a manipular as requisies dos usurios; Aprender a manipular as respostas aos usurios; Aprender a manipular as sees dos usurios; Trabalhar com o contexto da aplicao; Aprender a filtrar as requisies e respostas;

Sistemas Web

So sistemas hospedados em servidores na Internet e que oferecem servios, capturam informaes de usurios e geram informaes para as empresas.

Sistemas Web
Em outras palavras, so sistemas que utilizam tecnologias voltadas para a disponibilizao de cdigo fonte consumido dinamicamente utilizando padres e tecnologias da Internet para a atender a clientes como browsers e aplicaes em dispositivos mveis.

Conceitos bsicos em um sistema web


Lado do Cliente
Lado do Servidor

1. http://www.folhadosertao.com.br/portal/noticia.php?page=noticiaCompleta&id_noticia=21210

Requisio

Requisio

Requisio

2. Quando os dados da requisio so recebidos, a aplicao realiza o processamento destes, pode ou no efetuar um acesso ao BD, gera dinamicamente o contedo e envia-o de como resultado da solicitao.

Conceitos bsicos em um sistema web


Lado do Cliente
Lado do Servidor

3. Devolve o cdigo gerado para o cliente

Conceitos bsicos em um sistema web


1.
Endereo do aplicativo no servidor Recurso Solicitado

http://www.folhadosertao.com.br/portal/noticia.php?page=noticiaCompleta&id_noticia=21210

Parmetros e seus valores

Servlet API 3.1

Introduo
Conjunto de classes Java que estendem a capacidade dos servidores que hospedam aplicaes desenvolvidas pensando no modelo request-response.

A API 3.1 trouxe como novidade a utilizao de anotations para mapear os recursos afim de minimizar os esforos dispendidos na configurao por meio de XML.

Caractersticas
Os pacotes javax.servlet and javax.servlet.http possuem as as interfaces e classes para escrever servlets;
Todos os servlets devem implementar a interface Servlet que define os mtodos do ciclo de vida dos mesmos; A classe HttpServlet prov mtodos, como doGet e doPost, para manipular solicitaes utilizando o protocolo http. possvel atender a solicitaes de outros protocolos utilizando ou estendendo a classe GenericServlet.

O que um Servlet?

O que um Servlet?
Componentes escritos na linguagem de programao Java que reside do lado servidor atendendo s solicitaes dos clientes.

Isso pode incluir: acesso a bancos de dados, repasse da requisio para outros componentes, gerao de cdigo html para o cliente (browsers), gerao de contedo explcito (pdfs, imagens, planilhas de excel, etc) para o cliente (browsers), manipulao de seo, leitura de cookies entre outras tarefas.

Hello World!!

E as anotations?
@WebServlet: Mapeia uma url para um servlet. Um servlet pode est mapeado para atender requisies de vrias urls. O valor padro um nome para a url a ser interceptada. Quando mais de um parmetro for especificado para a anotation, as urls devem ser mapeadas utilizando o atributo

urlPatterns
Ex:

Como seria no web.xml

E as anotations?
@WebInitParam: Utilizada em servlets e filtros para especificar parmetros de inicializao.

Ex:

Como seria no web.xml

Atendendo requisies
Ex:

http:localhost:8080/app01/hello

Manipulando a requisio
A requisio manipulada utilizando-se um objeto da classe javax.servlet.http.ServletRequest; O objeto que representa a requisio instanciado pelo prprio container e repassado aos mtodos de servio (doGet, doPost, etc...) do servlet como parametro. Os parametros vindos na requisio so sempre objetos do tipo String; No possvel adicionar ou remover parmetros utilizando esse objeto.

Alguns mtodos do Objeto request


getAttributeNames()
Retorna um enumeration contendo os nomes dos atributos disponveis na requisio;

getParameterNames()
Retorna um enumeration de objetos String contendo os nomes dos parmetros disponveis na requisio;

getSession()
Retorna a sesso atual associada com a requisio atual, ou se a requsio no tem uma sesso , cria uma.

getAttribute(String name)
Retorna o valor do atributo designado por name como um Object, ou null se ele no existe;

getInputStream()
Recupera o corpo ServletInputStream da requisio como dados binrios usando um

Alguns mtodos do Objeto request


getContentType() Retorna o MIME type do corpo da requisio ou null ser for desconhecido; getContextPath() Retorna a parte da URI que indica o contexto da requisio; getParameter(String name) Retorna o valor do parametro designado por name como uma String, ou null se ele no existe; getRemoteHost() Recupera o nome completo do host que enviou a requisio; setAttribute(String name, Object value) Adiciona um atributo na requisio com o nome e valor designado

Prtica I
1 2 3 4 5 6 Crie um novo projeto web denominado cupido; Crie uma classe no pacote br.com.cupido.servlets chamada ServletCupido; Diga para a classe ServletCupido estender a classe HttpServlet; Mapeie o servlet cupido para a url /cupido; Sobrescreva o mtodo doGet da classe HttpServlet; Crie uma pgina html com a seguinte mensagem:

Ol! Meu nome <seu nome>, e vc? Como se chama?

Abaixo dessa mensagem deve vir um formulario com o campo de leitura do nome da pessoa que quer conhec-lo (la)
7 - O formulrio html deve apontar para o servlet cupido. 8 - No mtodo doGet do servlet, leia o valor enviado do formulrio e exiba a seguinte mensagem: Ol <nomeLidoDoFormulario>! Prazer em conhec-lo (la). Estou solteiro(a) e voc ? No? Droga!!!!

Por hoje S!!!!