Vous êtes sur la page 1sur 18

Programao para a Internet

Prof. M.Sc. Slvio Bacal Jr


sbacala@gmail.com
www.facom.ufu.br/~bacala
A plataforma WEB

Baseada em HTTP (RFC 2068)


Protocolo simples de transferncia de arquivos
Sem estado (no mantm sesso aberta)
Funcionamento (simplificado):
Cliente e Servidor HTTP
Servidor HTTP
Gerencia sistema virtual de arquivos e diretrios
Mapeia pastas do sistema de arquivos local (ex: c:\htdocs) a diretrios
virtuais (ex: /) acessveis remotamente (notao de URI)
Papel do servidor HTTP
Interpretar requisies HTTP do cliente (mtodos GET, POST, ...)
Devolver resposta HTTP sada padro (cdigo de resposta 200, 404, etc.,
cabealho RFC 822* e dados
Papel do cliente HTTP
Enviar requisies HTTP (GET, POST, HEAD, ...) a um servidor.
Requisies contm URI do recurso remoto, cabealhos RFC 822 e
opcionalmente, dados (se mtodo HTTP for POST)
Processar respostas HTTP recebidas (interpretar cabealhos, identificar tipo
de dados, interpretar dados ou repass-los.
HTTP - mtodos
GET - pede ao servidor um arquivo (informado sua URI) absoluta (relativa raiz
do servidor)
GET <uri> <protocolo>/<verso>
<Cabealhos HTTP>: <valores> (RFC 822)
<linha em branco>
GET pode enviar dados atravs da URI (tamanho limitado)
<uri>?dados
Mtodo HEAD idntico ao GET mas servidor no devolve pgina (devolve apenas o
cabealho)

POST - envia dados ao servidor (como fluxo de bytes)


POST <uri> <protocolo>/<verso>
<Cabealhos HTTP>: <valores>
<linha em branco>
<dados>
Servios web
Servio de informaes
finalidade: publicao de informaes, multimdia
interatividade: limitada a hipertexto
tecnologias (passivas): HTML, folhas de estilo

Servio de aplicaes locais (rodam no cliente)


finalidade: oferecer mais recursos interativos ao cliente
interatividade: limitada pelo cliente
tecnologias (ativas): JavaScript, applets Java, Flash, ActiveX

Servio de aplicaes cliente/servidor


finalidade: oferecer interface para aplicaes no servidor
interatividade: limitada pela aplicao e servidor Web
tecnologias (ativas): CGI, ASP, ISAPI, Servlets, JSP
Tecnologias lado-servidor

Estendem as funes bsicas de servidor HTTP:


CGI - Common Gateway Interface
APIs: ISAPI, NSAPI, Apache API, Servlet API, ...
Scripts: ASP, JSP, LiveWire (SSJS), Cold Fusion, PHP, ...

Rodam do lado do servidor, portanto, no dependem de suporte por


parte dos browsers
Browsers fornecem apenas a interface do usurio

Interceptam o curso normal da comunicao


Recebem dados via requisies HTTP (GET e POST)
Devolvem dados atravs de respostas HTTP
CGI
Especificao que determina como construir uma aplicao que ser executada
pelo servidor Web

Programas CGI podem ser escritos em qualquer linguagem de programao. A


especificao limita-se a determinar os formatos de entrada e sada dos dados
(HTTP).

O que interessa que o programa seja capaz de


Obter dados de entrada a partir
de uma requisio HTTP
Gerar uma resposta HTTP
incluindo os dados e
parte do cabealho
Escopo: camada do servidor

No requer quaisquer funes adicionais do cliente ou do HTTP


CGI - Problemas
A interface CGI requer que o servidor sempre execute um programa
Um novo processo do S.O. rodando o programa CGI criado para cada
cliente remoto que o requisita.
Novos processos consomem muitos recursos, portanto, o desempenho do
servidor diminui por cliente conectado.

CGI roda como um processo externo, logo, no tem acesso a


recursos do servidor
A comunicao com o servidor
resume-se entrada e sada.
difcil o compartilhamento de
dados entre processos
APIs do servidor
Podem substituir totalmente o CGI, com vantagens:
Toda a funcionalidade do servidor pode ser usada
Mltiplos clientes em processos internos (threads)
Muito mais rpidas e eficientes (menos overhead)
Desvantagens:
Em geral dependem de plataforma, fabricante e linguagem
Solues proprietrias
Exemplos
ISAPI (Microsoft)
NSAPI (Netscape)
Apache Server API
Servlet API
API independente de plataforma e praticamente independente de
fabricante
Componentes so escritos em Java e se chamam servlets
Como os componentes SAPI proprietrios, rodam dentro do
servidor, mas atravs de uma Mquina Virtual Java
Disponvel como plug-in ou conector para servidores que no o
suportam diretamente
Nativo em servidores Sun, IBM, ...
Servlets - vantagens
... sobre CGI
Rodam como parte do servidor (cada nova requisio inicia um novo thread
mas no um novo processo)
Mais integrados ao servidor: mais facilidade para compartilhar informaes,
recuperar e decodificar dados enviados pelo cliente, etc.

... sobre APIs proprietrias


No dependem de nico servidor ou sistema operacional
Tm toda a API Java disposio (JDBC, RMI, etc.)
No comprometem a estabilidade do servidor em caso de falha (na pior
hiptese, um erro poderia derrubar o JVM)
Problemas de Servlets, CGI e APIs
Para gerar pginas dinmicas (99% das aplicaes), preciso embutir o HTML
ou XML dentro de instrues de uma linguagem de programao:

out.print("<h1>Servlet</h1>");
for (int num = 1; num <= 5; i++) {
out.print("<p>Pargrafo " + num + "</p>");
}
out.print("<table><tr><td> ... </tr></table>");

Maior parte da informao da pgina esttica, no entanto, precisa ser embutida


no cdigo

Afasta o Web designer do processo


Muito mais complicado programar que usar HTML e JavaScript
O design de pginas geradas dinamicamente acaba ficando nas mos do
programador (e no do Web designer)
Soluo: scripts de servidor
Coloca a linguagem de programao dentro do HTML (e no o
contrrio)
<h1>Servlet</h1>
<% for (int num = 1; num <= 5; i++) { %>
<p>Pargrafo <%= num %></p>
<%}%>
<table><tr><td> ... </tr></table>
Permite o controle da aparncia e estrutura da pgina em softwares
de design (DreamWeaver, FrontPage)
Pgina fica mais legvel (nem sempre)
Quando houver muita programao, cdigo pode ser escondido em
servlets, JavaBeans, componentes
Scripts de Servidor
Alguns dos mais populares:
Microsoft Active Server Pages (ASP)
Sun JavaServer Pages (JSP)
Macromedia Cold Fusion
PHP

A pgina geralmente possui uma extenso de nome de arquivo diferente para que
o servidor a identifique como um programa

As pgina ASP, PHP, JSP, etc. so processadas e os roteiros so executados


pelo servidor, que os consome
No browser, chega apenas a sada do programa: pgina HTML
Comandos <% .. %> ou similares nunca chegam no browser
Servidor envia cabealho Content-type: text/html (default) ou algum outro tipo texto
(text/xml, text/plain)
Controle de Sesso
HTTP no preserva o estado de uma sesso. preciso
usar mecanismos artificiais com CGI (ou qualquer outra
tecnologia Web)
Seqncia de pginas/aplicaes: desvantagens: seqncia
no pode ser quebrada; mesmo que pgina s contenha HTML
simples, precisar ser gerada por aplicao
Incluso de dados na URL: desvantagens: pouca flexibilidade e
exposio de informaes
Cookies (informao armazenada no cliente): desvantagens:
espao e quantidade de dados reduzidos; browser precisa
suportar a tecnologia
Cookies
Padro Internet (RFC) para persistncia de informaes entre
requisies HTTP

Um cookie uma pequena quantidade de informao que o


servidor armazena no cliente
Par nome=valor. Exemplos: usuario=paulo, num=123
Escopo no cliente: browser (sesso)
Durao: uma sesso ou tempo determinado (cookies persistentes)

Cookies so criados atravs de cabealhos HTTP


Content-type: text/html
Content-length: 34432
Set-Cookie: usuario=ax343
Set-Cookie: lastlogin=12%2610%2699
Aplicaes Web e Java
Servlets e JavaServer Pages (JSP) so as solues Java para
estender o servidor HTTP
Suportam os mtodos de requisio padro HTTP (GET, POST, HEAD,PUT,
DELETE, OPTIONS, TRACE)
Geram respostas compatveis com HTTP (cdigos de status, cabealhos
RFC 822)
Interagem com Cookies
Alm dessas tarefas bsicas, tambm
Suportam filtros, que podem ser chamados em cascata para tratamento de
dados durante a transferncia
Suportam controle de sesso transparentemente atravs de cookies ou
rescrita de URLs (automtica)
preciso usar um servidor que suporte as especificaes de
servlets e JSP
Como executar Servlets e JSP
Para executar servlets e JSP preciso implant-los em um Web
Container
Um Web Container pode estar executando como parte de um
servidor HTTP que o repassa as requisies destinadas a servlets e
JSP