Você está na página 1de 18

Conceitos de J2EE para

a WEB
PEC
Jobson Ronan {jrjs@cin.ufpe.br}
Guilherme Kely {gkmo@cin.ufpe.br}

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

Papel do 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)
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

Servio de aplicaes locais (rodam no cliente)

finalidade: publicao de informaes, multimdia


interatividade: limitada a hipertexto
tecnologias (passivas): HTML, folhas de estilo

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:

Rodam do lado do servidor, portanto, no


dependem de suporte por parte dos browsers

CGI - Common Gateway Interface


APIs: ISAPI, NSAPI, Apache API, Servlet API, ...
Scripts: ASP, JSP, LiveWire (SSJS), Cold Fusion, PHP, ...

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:

Desvantagens:

Toda a funcionalidade do servidor pode ser usada


Mltiplos clientes em processos internos (threads)
Muito mais rpidas e eficientes (menos overhead)
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

Geram respostas compatveis com HTTP (cdigos de


status, cabealhos RFC 822)
Interagem com Cookies

Alm dessas tarefas bsicas, tambm

Suportam os mtodos de requisio padro HTTP (GET,


POST, HEAD,PUT, DELETE, OPTIONS, TRACE)

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 implantlos 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

Neste curso, usaremos o Tomcat Web Container,


que pode tanto funcionar conectado a outro
servidor como usar seu prprio servidor Web

O Tomcat ocupar a porta 8080

Você também pode gostar