Programação Distribuída em Java - IME-USP

Propaganda
Programação Distribuída em
Java
Aula 10
Na aula passada vimos:
• TomCat
– Instalação e configuração
– Criação de contexto
• JSP... uma introdução
–
–
–
–
–
–
–
Expressões
Scriptlet’s
Diretivas
Declarações
Tags
Sessões
Formulários
2
O que você deve ter fixado:
• Instalar e configurar um ServletContainer
• Compreender as características principais
de uma JSP
• Diferenciar as estruturas da JSP e
perceber o melhor momento de se utilizar
de cada uma delas
• Ter noção de “o que são beans”
3
Na aula de hoje veremos:
• Servlet
4
Servlets
• Framework para desenvolvimento de
servidores baseados em IP
• Tornam os servidores extensíveis
• Alternativa para geração de conteúdo
dinâmico
5
Servlet x CGI
• Fica na memória, não precisa ser
reinstanciado
• Em CGI cada cliente é representado por
um processo
• Nível de segurança configurável
• Baixo custo
6
Servlet x CGI
• São executados em ambiente seguro
• Versatilidade e simplicidade
• Um passo em direção aos agentes móveis
• Servlets podem trocar informações direto
com o webserver ou outros servlets
7
ServletContainers
• Servlets (assim como JSP) necessitam de
um ServletContainer; escolha um em:
– http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
• Não deixe dever o tutorial sobre seu
primeiro servlet em:
– http://www.mhavila.com.br/topicos/java/tomcat.html
8
javax.HttpServlet
• Um servlet é um mini-servidor
• Servlet’s surgiram como alternativa ao uso
das aplicações CGI
• Servlet depende da utilização de um
servidor assim como applet necessita de
um browser
Ex.: AloMundoServ
9
javax.HttpServlet
• Todo servlet é uma subclasse de
HttpServlet ou GenericServlet
• Todo servlet deve sobrescrever pelo
menos um dos métodos abaixo:
–
–
–
–
–
–
doGet()
doPost()
doPut()
doDelete()
init() e destroy()
getServletInfo()
10
Servlet template
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 {
// Use "request" to read incoming HTTP headers
// (e.g. cookies) and HTML form data (e.g. data the user
// entered and submitted).
String info = request.GetParameter(“info”);
// Use "response" to specify the HTTP response status
// code and headers (e.g. the content type, cookies).
PrintWriter out = response.getWriter();
// Use "out" to send content to browser
}
}
11
javax.HttpServlet
• Servlet’s agem como uma camada
intermediária entre um web browser ou
outro cliente HTTP e bancos de dados ou
outras aplicações instaladas no servidor.
• Na verdade apenas doGet() e doPost()
são essenciais; recebem dois argumentos
do tipo:
12
package javax.servlet.http
• Pacote que contém as classes:
• HttpServletRequest
– Possui métodos para a recuperação da informação que chega
ao servidor
• HttpServletResponse
– Permite obter um objeto PrintWriter que é usado para o envio de
informação ao cliente
13
Gerando HTML
• A maioria dos servlet’s gera conteúdo
HTML, mas isso deve ser especificado
• Devemos comunicar ao browser cliente
que a resposta vai no formato HTML
• Modificamos as sentenças com println()
para gerar HTML válido.
Ex.: HelloWWW.java
14
Gerando HTML
• Note que, diferente das JSP’s, a variável
out não é predefinida para os servlets
• Recomenda-se o uso dos cabeçalhos
específicos para HTML
HelloWWW2.java
15
Tratamento de formulários
• Gerenciado automaticamente pelo Java
• Uso:
– Chamar getParameter( param ) da classe HTTPServletRequest
– Podemos capturar todos os valores de um formulário usando
getParametersName()
ShowParameters.java
16
RequestHeaders
• São informações de cabeçalho que
acompanham uma solicitação do cliente
• Se você pensa em implementar HTTP não
deixe de ver:
– http://www.w3.org/Protocols/
• Servlets podem facilmente obter
informações sobre uma solicitação
ShowRequestHeaders.java
17
Gerenciamento de sessão
• Cookies e URLRewriting são duas boas
soluções
• Java implementa sessão automaticamente
sobre uma das duas políticas acima
• Os detalhes são escondidos do
programador
ShoeSession.java
18
O que você precisa saber:
19
Para saber mais
20
Download