Você está na página 1de 81

Aplicaes para Internet

Captulo 7

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Tpicos
Conceitos da Internet Formato de dados para a web

HTML, XML, DTDs

Introduo arquitetura trs-camadas A camada de apresentao (presentation tier)

Formulrios HTML; os mtodos Get e Post do protocolo HTTP, URL; Javascript; Stylesheets; XSLT

A camada lgica (middle tier)


CGI, servidores de aplicao, Servlets, JSP (JavaServerPages), passagem de parmetros, manuteno de estados (cookies)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

URI (Uniform Resource Identifiers)


Esquema de identificao nica de recursos na Internet Um recurso pode ser qualquer coisa disponvel pela Internet:
Pginas estticas ou dinmicas (Index.html, login.jsp) Arquivos (mysong.mp3, picture.jpg) Scripts, sadas de programas

Exemplos: http://www.cs.wisc.edu/~dbbook/index.html mailto:webmaster@ic.unicamp.br


3

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Estrutura de URIs
http://www.cs.wisc.edu/~dbbook/index.html

Trs partes:
Nome do protocolo (http) Nome do computador hospedeiro (host) (www.cs.wisc.edu) Nome do recurso (~dbbook/index.html)

URLs (Uniform Resource Locator) so subconjuntos das URIs


4

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Protocolo HTTP (Hypertext Transfer Protocol)

O que um protocolo de comunicao?


Conjunto de padres que definem a estrutura de mensagens, a fim de disciplinar e tornar possvel sua troca Exemplos: TCP, IP, HTTP

O mais comum usado pela Internet para transferir qualquer tipo de recurso O que acontece quando voc clica em www.cs.wisc.edu/~dbbook/index.html?
Cliente (web browser) envia requisies para o servidor Servidor responde s requisies recebidas Cliente recebe as respostas; faz novas requisies

Variantes (SSL, HTTPS, etc)


5

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

HTTP (Cont.)
Requisio (cliente):
GET ~/index.html HTTP/1.1 User-agent: Mozilla/4.0 Accept: text/html, image/gif, image/jpeg

Resposta (servidor):
HTTP/1.1 200 OK Date: Mon, 04 Mar 2002 12:00:00 GMT Server: Apache/1.3.0 (Linux) Last-Modified: Mon, 01 Mar 2002 09:23:24 GMT Content-Length: 1024 Content-Type: text/html <HTML> <HEAD></HEAD> <BODY> <h1>Barns and Nobble Internet Bookstore</h1> Our inventory: <h3>Science</h3> <b>The Character of Physical Law</b> ...
6

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Estrutura do protocolo HTTP


Requisies HTTP linhas de texto ASCII com uma linha em branco no fim Linha de requisio: GET ~/index.html HTTP/1.1
GET: campo do mtodo http (GET ou POST) ~/index.html: campo da URI HTTP/1.1: verso do protocolo

Tipo do cliente: User-agent: Mozilla/4.0 Tipos de arquivos aceitveis pelo cliente: Accept: text/html, image/gif, image/jpeg

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Estrutura do protocolo HTTP(Cont.)


Respostas HTTP

Linha de Status: HTTP/1.1 200 OK


Verso: HTTP/1.1 Cdigo de Status: 200 Mensagem do servidor associada: OK Combinaes mais comuns para Cdigos de Erro /mensagens do servidor:
200 OK: Requisio feita com sucesso 400 Bad Request: Requisio no pode ser preenchida pelo servidor 404 Not Found: objeto da requisio no existe no servidor 505 HTTP Version not Supported: Verso no suportada

Data da criao do objeto: Last-Modified: Mon, 01 Mar 2002 09:23:24 GMT Nmero de bytes enviados: Content-Length: 1024 Tipo do objeto: Content-Type: text/html Outras informaes (tipo do servidor, hora, etc)
8

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

HTTP - Observaes importantes

Protocolo stateless: no h informaes de estados


No existemsesses Conexes so mantidas somente at a resposta de uma mensagem No suporta interaes entre cliente - servidor Tradeoff entre facilidade de implementao e facilidade de implementao de aplicaes qualquer outra funcionalidade deve ser construda em outras camadas

Implicaes:
Qualquer informao de estados (informao de login, carrinho de compras) precisam ser acrescentados em cada requisio/resposta HTTP Abordagens mais comuns para controle de estados:

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Cookies URLs geradas dinamicamente pelo servidor

Formatos de Dados para a web

HTML
A linguagem de apresentao para a Internet

Xml
Modelo de dados hierrquico e auto-descritivo

DTD
Esquemas de padronizao para XMLs

XSLT (XML + informaes para apresentao)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

10

HTML: Exemplo
<HTML> <HEAD></HEAD> <BODY> <h1>Barns and Nobble Internet Bookstore</h1> Our inventory: <h3>Science</h3> <b>The Character of Physical Law</b> <UL> <LI>Author: Richard Feynman</LI> <LI>Published 1980</LI> <LI>Hardcover</LI> </UL> <h3>Fiction</h3> <b>Waiting for the Mahatma</b> <UL> <LI>Author: R.K. Narayan</LI> <LI>Published 1981</LI> </UL> <b>The English Teacher</b> <UL> <LI>Author: R.K. Narayan</LI> <LI>Published 1980</LI> <LI>Paperback</LI> </UL> </BODY> </HTML>
11

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

HTML: Breve introduo


Hypertext Markup Language: formatao de texto Comandos so representados por tags:

Cada comando possui uma tag de incio e de fim Exemplo:


<HTML> </HTML> <UL> </UL>

Diversos editores que geram cdigo HTML graficamente ou a partir de documentos (Microsoft Word)
12

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

HTML: Alguns comandos


<HTML>: <UL>: lista <LI>: uma entrada na lista <h1>: aumento de cabealho (<h2>, <h3>, ...) <B>Ttulo</B>: Negrito <TABLE>: tabela <TR>: linha de uma tabela <TD>: diviso de uma linha

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 13

XML: Exemplo
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BOOKLIST> <BOOK genre="Science" format="Hardcover"> <AUTHOR> <FIRSTNAME>Richard</FIRSTNAME><LASTNAME>Feynman</LASTNAME> </AUTHOR> <TITLE>The Character of Physical Law</TITLE> <PUBLISHED>1980</PUBLISHED> </BOOK> <BOOK genre="Fiction"> <AUTHOR> <FIRSTNAME>R.K.</FIRSTNAME><LASTNAME>Narayan</LASTNAME> </AUTHOR> <TITLE>Waiting for the Mahatma</TITLE> <PUBLISHED>1981</PUBLISHED> </BOOK> <BOOK genre="Fiction"> <AUTHOR> <FIRSTNAME>R.K.</FIRSTNAME><LASTNAME>Narayan</LASTNAME> </AUTHOR> <TITLE>The English Teacher</TITLE> <PUBLISHED>1980</PUBLISHED> </BOOK> </BOOKLIST> UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 14

XML (Extensible Markup Language)

Linguagem
Uma maneira para comunicao de informao (conjunto organizado e bem definido de dados) Meta-Dados que descrevem os dados/linguagens

Extensvel
Conjunto de tags infinitas: novas linguagens ou conjunto de dados Modo de integrao dos SGBDs com aplicaes web: ponte entre a viso orientada a documentos do HTML e a viso orientada a esquemas de um SGBD
15

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

XML (Cont.)

Unio em um s documento dos dados e descrio do que eles representam


til para definio de linguagens prprias ou protocolos

Exemplo: Chemical Markup Language


<molecule> <weight>234.5</weight> <Spectra></Spectra> <Figures></Figures> </molecule>

Objetivos principais:
Compatvel com SGML (meta-linguagem para definio de outras linguagens de troca de documentos e dados HTML) Processadores fceis de implementar O design deve ser formal e preciso

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

16

XML Estrutura
XML: fuso entre SGML e HTML Aparncia idntica HTML Hierarquia de tags definidas pelo usurio chamados elementos com atributos e dados Dados so descritos pelos elementos, elementos so descritos por atributos

<BOOK genre="Science" format="Hardcover"></BOOK>


atributo Tag de incio Valor do atr. dado Tag de fim
17

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

XML Elementos
<BOOK genre="Science" format="Hardcover"></BOOK>
Tag de inicio Nome do elem

atributo

Valor do atr.

dado

closing tag

Sensvel a espao e caso Tags de incio e de fim de um elemento devem ter o mesmo nome Tags de incio: < + nome do elemento + > Tags de fim: </ + nome do elemento + > Elementos vazios no possuem dados e nem tag de fim: Comeam com < e terminam com /> <BOOK/>

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

18

XML Atributos
<BOOK genre="Science" format="Hardcover"></BOOK>
Tag de incio Nome do elemento atributo Valor do atr. dado Tag de fim

Atributos fornecem informao adicional para os elementos Podem existir zero ou mais atributos para cada elemento, cada um com o formato:
Nome_atributo=valor_atributo - Sem espaos entre o nome e o = - Valores devem estar entre ou

Atributos so separados por espaos (ou tabs)


19

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

XML Dados e comentrios


<BOOK genre="Science" format="Hardcover"></BOOK>
Tag de incio Nome do elemento

atributo Valor do atr. dado

Tag de fim

Dados so qualquer informao entre as tags de incio e de fim Os dados no podem conter os caracteres < e > Caracteres especiais: &, <, >, e ; Comentrios: <!- comentrio ->

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

20

XML Agrupamento e hierarquia


Tags XML podem ser agrupadas em uma hierarquia de rvore Documentos XML podem ter apenas uma tag raiz Entre uma tag de incio e uma tag de fim, possvel inserir:
1. Dado 2. Outros elementos 3. Combinao de elementos e dados

Documento XML bem formado: declarao, elemento raiz, elementos devidamente agrupados
21

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

XML estrutura de armazenamento

Armazenamento feito como em qualquer outra rvore n-ria (DOM)


<root> <tag1> Algum texto <tag2>Mais texto</tag2> </tag1> </root>
Tipo: Text_Node Nome: Text Valor:Algum texto N N Tipo: Element_Node Nome: Element Valor: tag2 Tipo: Text_Node Nome: Text Valor: Mais texto
22

Tipo: Element_Node Nome: Element Valor: Root Tipo: Element_Node Nome: Element Valor: tag1

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

DTD (Document Type Definition)


Esquema de verificao para documentos Xml Protocolos e linguagens definidas por Xml podem ser padronizadas por DTDs Um DTD especifica quais elementos e seus atributos so necessrios (obrigatrios ou no)

Definio formal da estrutura da linguagem

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

23

DTD Exemplo
<?xml version='1.0'?> <!ELEMENT Cesta(Cereja+, (Ma | Laranja)*) > <!ELEMENT Cereja EMPTY> <!ATTLIST Cereja sabor CDATA #REQUIRED> <!ELEMENT Ma EMPTY> <!ATTLIST Ma cor CDATA #REQUIRED> <!ELEMENT Laranja EMPTY> <!ATTLIST Laranja localizao Florida> --------------------------------------------------------------------------------

<Cesta> <Cereja sabor=bom/> <Ma cor=vermelha/> <Ma cor=verde/> </Cesta>

<Cesta> <Ma/> <Cereja sabor=bom/> <Laranja/> </Cesta>


24

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

DTD - !ELEMENT
<!ELEMENT Cesta(Cereja+, (Ma | Laranja)*) >
Nome Sub-elementos

!ELEMENT declara um elemento, com seu nome e seus sub-elementos (contedo) Tipos de contedo:

Outros elementos #PCDATA (parsed character data) EMPTY (sem contedo) ANY (sem restries) Uma expresso regular
25

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

DTD - !ELEMENT (Cont.)

Estrutura de uma expresso regular:


exp1, exp2, exp3, , expk: Lista de expresses regulares exp*: expresso opcional (zero ou mais ocorrncias) exp+: expresso obrigatria (uma ou mais ocorrncias) exp1 | exp2 | | expk: disjuno de expresses

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

26

DTD - !ATTLIST
<!ATTLIST Cereja sabor CDATA #REQUIRED>
Elemento Artibuto Tipo

Flag

<!ATTLIST Laranja localizao CDATA #REQUIRED cor laranja>

!ATTLIST define uma lista de atributos para um elemento Atributos podem ser de diferentes tipos, podem ser obrigatrios ou no, e podem ter valores padro

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 27

DTD Bem-formado e vlido


<?xml version='1.0'?> <!ELEMENT Cesta(Cereja+)> <!ELEMENT Cereja EMPTY> <!ATTLIST Cereja sabor CDATA #REQUIRED> --------------------------------------------------------------------------------

Mal-formado

<cesta> <Cereja sabor=bom> </Cesta>

Bem-formado mas invlido

<Trabalho> <Localizao>Casa</Localizao> </Trabalho>

Bem-formado e vlido
<Cesta> <Cereja sabor=bom/> </Cesta>

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

28

XML e DTDs

Desenvolvimento crescente de DTDs padronizados


MathML Chemical Markup Language

Permite troca leve de informaes sem perda na semntica Existncia de linguagens sofisticadas de consultas:
Xquery XPath

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

29

Tpicos
Conceitos da Internet Formato de dados para a web

HTML, XML, DTDs

Introduo arquitetura trs-camadas A camada de apresentao (presentation tier)

Formulrios HTML; os mtodos Get e Post do protocolo HTTP, URL; Javascript; Stylesheets; XSLT

A camada lgica (middle tier)


CGI, servidores de aplicao, Servlets, JSP (JavaServerPages), passagem de parmetros, manuteno de estados (cookies)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

30

Componentes de sistemas de dados (data-intensive)


Trs tipos diferentes de funcionalidades (ou componentes funcionais): Gerenciamento de dados Lgica da aplicao Apresentao

A arquitetura do sistema determina se esses componentes estaro em um nico sistema (camada) ou distribudos em diversas camadas
31

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Arquiteturas de uma camada


Todas as funcionalidades combinadas em uma nica camada (normalmente um mainframe)
Acesso atravs de terminais simples

Cliente

Vantagens:
Facilidade de manuteno e administrao

Lgica da aplicao

Desvantagens:
Exigncia por interfaces grficas Processamento centralizado para todas as funcionalidades muito para um sistema central

SGBD

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

32

Arquiteturas Cliente-Servidor
Diviso do trabalho: thin client
Cliente implementa apenas a interface grfica Servidor implementa a lgica do negcio e o gerenciamento de dados

Lgica da Aplicao

SGDB

Diviso do trabalho: thick client


Cliente implementa interface grfica e lgica do negcio Servidor implementa gerenciamento de dados

Rede
Cliente Cliente

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

33

Arquiteturas Cliente-Servidor(Cont.)
Desvantagens de thick-client
Atualizao da lgica do negcio no centralizada Segurana: servidor deve confiar nos clientes
Controle de acesso e autenticao precisam ser gerenciados no servidor Cliente precisa deixar a base de dados do servidor em estado consistente Uma possvel soluo: encapsulamento de todo o acesso base de dados atravs de stored procedures

Escalonamento
Grande transferncia de dados entre cliente e servidor Mais de um servidor: x clientes e y servidores x*y conexes
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 34

A arquitetura trs-camadas
Camada de Apresentao Progama Cliente (web brownser)

Camada lgica

Servidor de Aplicao

Camada de Gerenciamento de dados

Sistema de banco de dados


35

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

As trs camadas
Camada de Apresentao (Presentation tier)
Interface com o usurio Necessidade de adaptao para diferentes dispositivos de display(PC, PDA, tel. celulares, acesso a voz?)

Camada lgica (Midle tier)


Implementa lgica do negcio (aes complexas, mantm diferentes estados) Acessa diferentes sistemas de gerenciamento de dados

Camada de gerenciamento de dados(Data management tier)


Um ou mais SGBDs
36

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Exemplo 1: reservas de passagens


Sistema de reservas de passagens areas online Sistema de Banco de Dados

Informao das linhas areas, assentos disponveis, informao do cliente, etc.

Servidor de Aplicao
Lgica para fazer as reservas, cancelar reservas, adicionar linhas areas, etc.

Programa Cliente
Login de diferentes usurios, disponibilizao de formulrios e sadas de dados

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

37

Exemplo 2: Matrculas em cursos


Sistema on-line para matrculas de estudantes em cursos Sistema de gerenciamento de dados

Informao dos estudantes, dos cursos, das turmas, requisitos, etc.

Servidor de Aplicao
Lgica para adicionar cursos, turmas, fazer matrculas, etc

Programa cliente
Login de diferentes tipos de usurios (estudantes, operadores), formulrios e sadas de dados

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

38

Tecnologias
Programa Cliente

(Web Browser)
Servidor de Aplicao

HTML Javascript XSLT JSP Servlets Cookies CGI XML Stored Procedures
39

(Tomcat, Apache)

Sistema de banco de dados (DB2)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Vantagens da Arquitetura trscamadas

Sistema heterogneos
Manuteno, modificao e substituio das camadas independentemente

Clientes leves
Apenas a camada de apresentao nos clientes (web browsers)

Acesso aos dados integrado


Diversos sistemas de banco de dados podem ser manipulados transparentemente pela camada lgica Gerenciamento centralizado das conexes

Escalabilidade
Replicao da camada lgica permite escalabilidade da lgica do negcio

Desenvolvimento do software
Cdigo da lgica centralizado Componentizao

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

40

Tpicos
Conceitos da Internet Formato de dados para a web

HTML, XML, DTDs

Introduo arquitetura trs-camadas A camada de apresentao (presentation tier)

Formulrios HTML; os mtodos Get e Post do protocolo HTTP, URL; Javascript; Stylesheets; XSLT

A camada lgica (middle tier)


CGI, servidores de aplicao, Servlets, JSP (JavaServerPages), passagem de parmetros, manuteno de estados (cookies)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

41

Overview da Camada de Apresentao

Reviso: Funcionalidade da camada de apresentao


Interface com o usurio Necessidade de suporte a diferentes dispositivos (PC, PDA, tel. Celulares, acesso a voz?) Funcionalidade simples (validao de entradas)

Assuntos que sero cobertos


Formulrios HTML: como passar os dados para a camada lgica JavaScript: funcionalidade simples na camada de apresentao Style sheets: separar dados de sua formatao

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

42

Formulrios HTML

Maneira mais comum de transferncia de dados entre o cliente e a camada lgica Formato geral:
<FORM ACTION=page.jsp METHOD=GET NAME=LoginForm> </FORM>

Componentes da tag FORM:


ACTION: especifica a URI que manipula o contedo METHOD: especifica o mtodo utilizado para enviar os dados (GET ou POST) NAME: nome do formulrio; pode ser usado em scripts no cliente para a referncia ao formulrio

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

43

Formulrios HTML (Cont.)

Tag INPUT
Atributos:
TYPE: text (campo de texto), password (campo de texto com *), reset (limpa todos os campos do formulrio) NAME: nome simblico, usado para identificar o valor do campo na camada lgica VALUE: valor padro

Exemplo: <INPUT TYPE=text Name=ttulo>

Formulrio exemplo:
<form method="POST" action="TableOfContents.jsp"> <input type="text" name="userid"> <input type="password" name="password"> <input type="submit" value="Login name="submit"> <input type=reset value=Limpar> </form>

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

44

Passagem dos parmetros


Dois mtodos: GET e POST GET
Contedo do formulrio vai na URI Estrutura: action?nome1=valor1&nome2=valor2&nome3=valor3
Action: nome da URI especificada no formulrio Os pares (nome,valor) vm de campos de entrada (input) do formulrio; campos vazios possuem valores vazios (nome=)

Exemplo (formulrio anterior): TableOfContents.jsp?userid=john&password=johnpw Note que a ao da pgina precisa ser um programa, um script ou uma pgina que ir processar a entrada do usurio
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 45

Mtodo GET: codificao dos campos


Campos de formulrios podem conter caracteres ASCII que no podem aparecer na URI Uma conveno especial de codificao converte esses valores em caracteres compatveis com a URI:
Converte todos os caracteres especiais em %xyz, onde xyz o cdigo ASCII do caractere. Caracteres especiais: &, =, +, %, etc. Converte espaos para + Junta os pares (nome, valor) das tags INPUT com & como separador para formar a URI

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

46

Formulrios HTML: Exemplo


<form method="POST" action="TableOfContents.jsp"> <table align = "center" border="0" width="300"> <tr> <td>Userid</td> <td><input type="text" name="userid" size="20"></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password" size="20"></td> </tr> <tr> <td align = "center"><input type="submit" value="Login name="submit"></td> </tr> </table> </form>
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 47

JavaScript

Objetivo: adicionar funcionalidade na camada de apresentao Tarefas mais comuns:


Detectar tipo do browser para carregar uma pgina especfica Validao de formulrios: validar as entradas dos campos Controle do browser: Abrir / fechar janelas (pop-up)

Normalmente embutido diretamente no cdigo HTML, com a tag <SCRIPT> </SCRIPT> Tag <SCRIPT> possui diversos atributos:
LANGUAGE: linguagem do script SRC: arquivo com o cdigo do script Exemplo <SCRIPT LANGUAGE=JavaScript SRC=validate.js> </SCRIPT>

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

48

JavaScript (Cont.)

Se a tag <SCRIPT> no possui o atributo SRC, o script fica no prprio cdigo HTML Exemplo: <SCRIPT LANGUAGE=JavaScript> <!-- alert(Bem vindo Unicamp!!) //--> </SCRIPT> Comentrios:
<! comentrio para o cdigo HTML (ignorar o cdigo do script caso o browser no suporte tal linguagem) //: comentrio JavaScript para finalizar o comentrio HTML

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

49

JavaScript (Cont.)

Linguagem de script completa


Variveis Atribuies (=, +=, ) Operadores de comparao (<,>,), e booleanos (&&, ||, !) Expresses
if (condition) {statements;} else {statements;} Loops for, do-while e while

Funes com valores de retorno


f(arg1, , argk) {statements;}
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 50

JavaScript: Exemplo
Formulrio HTML:
<form method="POST name=LoginForm action="TableOfContents.jsp onSubmit=return testLoginEmpty()> <input type="text" name="userid"> <input type="password" name="password"> <input type="submit" value="Login name="submit"> <input type=reset value=Clear> </form>

JavaScript associado:
<script language="javascript"> function testLoginEmpty() { loginForm = document.LoginForm if ((loginForm.userid.value == "") || (loginForm.password.value == "")) { alert('Please enter values for userid and password.'); return false; } else return true; } </script>
51

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Stylesheets

Idia: Separar o display do contedo, e adaptar o display a diferentes formatos de apresentao Dois aspectos:
Transformaes do documento para identificar quais partes sero mostradas e em que ordem Renderizaes do documento para decidir como cada parte do documento ser mostrada.

Porque Stylesheets?
Reuso do mesmo documento para diferentes displays Adaptao do formato preferncia do usurio Reuso do mesmo documento em contextos diferentes

Duas linguagens de stylesheets:


Cascading style sheets (CSS): para documentos HTML Extensible stylesheet language (XSL): para documentos XML

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

52

CSS: Cascading Style Sheets


Define como os documentos HTML sero mostrados Diferentes documentos HTML podem referenciar um mesmo css
Possibilidade de mudar um website apenas alterando um css Exemplo: <LINK REL=style sheet TYPE=text/css HREF=books.css/>

Cada linha possui trs partes: selector {property: value} Selector: Tag cujo formato definido Property: atributo da tag cujo valor ser ajustado Value: valor do atributo

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

53

CSS: Cascading Style Sheets


Exemplo de stylesheet: body {background-color: yellow} h1 {font-size: 36pt} h3 {color: blue} p {margin-left: 50px; color: red} A primeira linha tem o mesmo efeito da seguinte tag: <body background-color=yellow>

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

54

XSL

Linguagem para descrever style sheets


http://www.w3.org/Style/XSL/

Trs componentes:
XSLT: XSL Transformation language
Transforma um documento em outro diferente http://www.w3.org/TR/xslt

XPath: XML Path Language


Seleciona partes de um documento XML http://www.w3.org/TR/xpath

Objetos de formatao XSL


Formata a sada de uma transformao XLS http://www.w3.org/TR/xsl/
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 55

Tpicos
Conceitos da Internet Formato de dados para a web

HTML, XML, DTDs

Introduo arquitetura trs-camadas A camada de apresentao (presentation tier)

Formulrios HTML; os mtodos Get e Post do protocolo HTTP, URL; Javascript; Stylesheets; XSLT

A camada lgica (middle tier)


CGI, servidores de aplicao, Servlets, JSP (JavaServerPages), passagem de parmetros, manuteno de estados (cookies)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

56

Overview da Camada lgica

Reviso: Funcionalidade da camada lgica


Codificao da lgica do negcio Conexo com a base de dados Recebimento de entradas da camada de apresentao Gerao de sadas para a camada de apresentao

O que ser coberto:


CGI: protocolo para passagem de argumentos para programas que rodam na camada lgica Servidor de Aplicao: ambiente de runtime para a camada lgica Servlets: programas Java na camada lgica JavaServerPages: scripts Java na camada lgica Manuteno de estados: como manter estados na camada lgica (foco: Cookies).

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

57

CGI: Common Gateway Interface


Objetivo: transmitir argumentos dos formulrios HTML para programas que rodam na camada lgica Detalhes do protocolo no precisam ser levados em considerao interfaces de alto-nvel disponibilizadas por bibliotecas Desvantagens:
O programa de aplicao chamado em um novo processo a cada nova requisio No h compartilhamento de recursos entre os programas de aplicao (p.e.,conexes com o banco de dados) Soluo: servidores de aplicao

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

58

CGI: Exemplo

Formulrio HTML:
<form action=findbooks.cgi method=POST> Type an author name: <input type=text name=authorName> <input type=submit value=Send it> <input type=reset value=Clear form> </form>

Cdigo Pearl relacionado:


use CGI; $dataIn=new CGI; $dataIn->header(); $authorName=$dataIn->param(authorName); print(<HTML><TITLE>Argument passing test</TITLE>); print(The author name is + $authorName); print(</HTML>); exit;

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

59

Servidores de Aplicao

Idia: Evitar o overhead do CGI


Pool de threads e processos Gerenciamento de conexes Permite acesso a recursos de dados heterogneos Outras funcionalidades como APIs para gerenciamento de sesses

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

60

Servidor de Aplicao: estrutura de processos


Estrutura de Processos
Web Browser HTTP Servidor Web Aplicao C++ JavaBeans Servidor de Aplicao JDBC ODBC DBMS 1 DBMS 2

Pool de Servlets
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 61

Servlets

Java Servlets: cdigo Java que roda na camada lgica


Independente de plataforma (Java) APIs Java disponveis, incluindo JDBC

Exemplo:
import java.io.*; import java.servlet.*; import java.servlet.http.*; public class ServetTemplate extends HttpServlet { public void doGet(HTTPServletRequest request, HTTPServletResponse response) throws SerletExpection, IOException { PrintWriter out=response.getWriter(); out.println(Hello World); } }
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 62

Servlets (Cont.)

Vida de a servlet?
Servidor web encaminha requisies para o servlet container Container cria uma instncia do servlet (chama o mtodo init(); destroy() na desalocao) Container chama o mtodo service()
service() chama doGet() ou doPost(), dependendo de qual mtodo HTTP foi submetido

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

63

Servlets: Exemplo
public class ReadUserName extends HttpServlet { public void doGet( HttpServletRequest request, HttpSevletResponse response) throws ServletException, IOException { reponse.setContentType(text/html); PrintWriter out=response.getWriter(); out.println(<HTML><BODY>\n <UL> \n + <LI> + request.getParameter(userid) + \n + <LI> + request.getParameter(password) + \n + <UL>\n<BODY></HTML>); } public void doPost( HttpServletRequest request, HttpSevletResponse response) throws ServletException, IOException { doGet(request,response); } }
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 64

Java Server Pages

Servlets
Geram HTML atravs de escritas do cdigo HTML no seu objeto PrintWriter Pagina contida no cdigo

JavaServerPages
Escrito em HTML, cdigo servlet embutido no HTML Cdigo contido na pgina Internamente so transformados em um servlet

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

65

JavaServerPages: Exemplo
<html> <head><title>Welcome to B&N</title></head> <body> <h1>Welcome back!</h1> <% String name=NewUser; if (request.getParameter(username) != null) { name=request.getParameter(username); } %> You are logged on as user <%=name%> <p> </body> </html>
UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 66

Manuteno de estados
HTTP um protocolo sem estados Vantagens
Facilidade de uso timo para aplicaes estticas No necessita de espao em memria adicional

Desvantagens
No manter informaes de requisies anteriores no permite:
Carrinhos de compras Login de usurios Contedo dinmico

Segurana difcil de implementar


UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 67

Estado da aplicao

No lado do servidor
Informao mantida no banco de dados ou na memria local da camada lgica

No lado do cliente
Informao mantida no computador do cliente atravs de Cookies

Estado escondido
Informao escondida entre pginas dinmicas

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

68

Estado da aplicao
Tantas formas de manuteno de estados... como vou escolher?

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

69

Estados no lado do servidor


Diferentes tipos de manuteno de estados no lado do servidor: 1. Informao armazenada no banco de dados

Dados esto seguros no banco de dados Mas: exige um acesso ao banco de dados para consultar ou atualizar tal informao (overhead)

2. Informao armazenada na memria local da camada lgica


Mapeamento do IP do usurio em estados Mas: informao voltil e consome muita memria do servidor 5 M IPs = 20 MB

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

70

Estados armazenados no servidor

Deveria usar armazenamento de estados no servidor para informaes persistentes


Pedidos antigos de clientes Cliques de usurios pelo site Escolhas permanentes dos usurios

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

71

Estados no lado cliente: Cookies

Armazenamento de texto no cliente enviada ao servidor atravs de toda requisio HTTP


Pode ser desabilitado pelo cliente Comumente e erroneamente encarados como perigosos, e por tal motivo acabam sendo rejeitados por usurios1

Coleo de pares (Nome, Valor)

72 UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems1http://www.webdevelopersjournal.com/columns/stateful.html 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

Estados no lado cliente: Cookies

Vantagens

Desvantagens

Fcil de se usar em Java (Servlets / JSP) Oferecem uma maneira simples de persistncia de dados no cliente mesmo aps o web browser ter sido fechado Limite de 4 KB Usurios podem desabilit-los

Devem ser usados para armazenar estados interativos


Informao de login do usurio atual O carrinho de compras atual Qualquer opo no-permanente feita pelo usurio

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

73

Criando um Cookie
Cookie myCookie = new Cookie(username", jeffd"); response.addCookie(userCookie);

possvel criar um cookie em qualquer momento

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

74

Acessando um Cookie
Cookie[] cookies = request.getCookies(); String theUser; for(int i=0; i<cookies.length; i++) { Cookie cookie = cookies[i]; if(cookie.getName().equals(username)) theUser = cookie.getValue(); } // neste ponto theUser == username

Cookies precisam ser acessados antes de setar o cabealho de resposta:

response.setContentType("text/html"); PrintWriter out = response.getWriter();

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

75

Funcionalidades dos Cookies

Cookies podem ter


Durao (expira ou persiste aps o fechamento do browser) Filtros para quais caminhos de domnios /diretrios o cookie enviado

Maiores informaes: Java Servlet API (Javadoc), Tutoriais de Servlets, internet, site da sun, etc

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

76

Estados escondidos
Normalmente o usurio desabilita os cookies Os dados podem ser escondidos em dois lugares:

Campos hidden em um formulrio Utilizando a informao do caminho

No exige armazenamento de informao pois a informao passada por cada pgina web

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

77

Estados escondidos: Campos hidden

Declarao de campos hidden em um formulrio:


<input type=hidden name=user value=username/>

Usurio no v tal informao (a no ser que ele visualize o cdigo HTML) Se usado sem cautela, ir prejudicar seriamente a performance, pois CADA pgina deve estar contida em um formulrio

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003. 78

Estados escondidos: informao no Path

Informao armazenada na URL de requisio:


http://server.com/index.htm?user=jeffd

Separao dos campos atravs do caractere &:


index.htm?user=jeffd&preference=pepsi

Existem ferramentas em Java que parseiam tais campos (javax.servlet.http.HttpUtils parserQueryString())

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

79

Mltiplos mtodos de armazenamento de estados

Normalmente todos os mtodos de armazenamento de estados so utilizados:


Usurio faz login no sistema e essa informao armazenada no cookie Usurio solicita uma busca que armazenada atravs de um Path Usurio acrescenta um item no carrinho de compras cookie Usurio realiza a compra, e o nmero de seu carto de crdito armazenado /obtido do banco de dados Usurio gera um histrico de cliques pelo site, o qual armazenado no servidor web (o que pode ser analisado posteriormente)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

80

Resumo
Assuntos cobertos: Conceitos da Internet Formato de dados para a web
HTML, XML, DTDs

Introduo arquitetura trs-camadas A camada de apresentao (presentation tier)


Formulrios HTML; os mtodos Get e Post do protocolo HTTP, URL; Javascript; Stylesheets; XSLT

A camada lgica (middle tier)


CGI, servidores de aplicao, Servlets, JSP (JavaServerPages), passagem de parmetros, manuteno de estados (cookies)

UNICAMP/IC/MO410/MC536/2003-5 - Slides do livro Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke, McGrow-Hill, 2003.

81

Você também pode gostar