INCOMPLETO
Bases de Dados II
6638: BSc in Information Systems and Technologies
Cap. 7 — Aplicações Web
6638 Bases de Dados II
Aplicações Web
Sumário
• 
Conceitos no âmbito da Internet
• 
Formatos de dados web
– 
HTML, XML, DTDs
• 
Introdução a arquitecturas 3-tier
• 
A tier (camada) da apresentação
– 
• 
Formulários HTML; HTTP Get e HTTP Post, codificação URL; Javascript; Stylesheets; XSLT
A tier intermédia
– 
CGI, servidores de aplicações, Servlets, JavaServerPages, passagem de argumentos, manutenção de
estado (cookies)
6638 Bases de Dados II
Aplicações Web
Uniform Resource Identifiers (URIs)
• 
Esquema uniforme de nomes (uniform naming schema) para identificar recursos na Internet
• 
Um recurso pode qualquer coisa, nomeadamente:
• 
– 
index.html
– 
mysong.mp3
– 
picture.jpg
Exemplos de URIs:
– 
http://www.cs.wisc.edu/~dbbook/index.html
– 
mailto:[email protected]
6638 Bases de Dados II
A estrutura de URIs
• 
Example:
– 
• 
• 
http://www.cs.wisc.edu/~dbbook/index.html
URI tem 3 partes:
– 
Esquema de nomes (http) - Nome do protocolo para aceder ao recurso
– 
Nome do computador hospedeiro (www.cs.wisc.edu)
– 
Nome do recurso (~dbbook/index.html)
URLs são um sub-conjunto de URIs
Aplicações Web
6638 Bases de Dados II
Hypertext Transfer Protocol (HTTP)
• 
• 
O que é um protocolo de comunicação?
– 
Conjunto de normas (standards) que define uma estrutura de mensagens
– 
Exemplos: TCP, IP, HTTP
O que acontece se se clicar em www.cs.wisc.edu/~dbbook/index.html?
– 
Cliente (web browser) envia um pedido HTTP ao servidor
– 
Servidor recebe o pedido e responde
– 
Cliente recebe resposta; faz novos pedidos
Aplicações Web
6638 Bases de Dados II
Aplicações Web
Hypertext Transfer Protocol (HTTP) (cont.)
• 
Client to Server:
GET index.html HTTP/1.1
User-agent: Mozilla/4.0
Accept: text/html, image/
gif, image/jpeg
• 
Server replies:
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>
...
6638 Bases de Dados II
Aplicações Web
Estrutura do protocolo HTTP:
pedidos HTTP
• 
Linha do pedido: GET index.html HTTP/1.1
– 
GET: campo de método http (possíveis valores são GET
e POST; mais detalhes adiante)
– 
index.html: campo URI
– 
HTTP/1.1: campo da versão HTTP
• 
Tipo de cliente: User-agent: Mozilla/4.0
• 
Que tipos de ficheiros são aceites pelo cliente:
– 
Accept: text/html, image/gif, image/jpeg
• 
Client to Server:
GET index.html HTTP/1.1
User-agent: Mozilla/4.0
Accept: text/html, image/
gif, image/jpeg
6638 Bases de Dados II
Estrutura do protocolo HTTP:
respostas HTTP
• 
Linha de estado: HTTP/1.1 200 OK
• 
Versão HTTP: HTTP/1.1
• 
Código de estado: 200
• 
Mensagem do servidor: OK
• 
Código de estado comum/combinações de mensagens do
servidor:
• 
– 
200 OK: Request succeeded
– 
400 Bad Request: Request could not be fulfilled by the server
– 
404 Not Found: Requested object does not exist on the server
– 
505 HTTP Version not Supported
Data de criação do objecto:
– 
Last-Modified: Mon, 01 Mar 2002 09:23:24 GMT
• 
Nº de bytes a enviar: Content-Length: 1024
• 
Que tipo de objecto a enviar: Content-Type: text/html
• 
Outra informação (i.e., tipo de servidor, etc.)
Aplicações Web
• 
Server replies:
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>
...
6638 Bases de Dados II
Aplicações Web
Algumas notas sobre HTTP
• 
HTTP não tem estado
–  Não tem sessões
–  Toda a mensagem é completamente auto-contida
–  Nenhuma interacção é “lembrada” pelo protocolo
–  Compromisso entre facilidade de implementação e facilidade de desenvolvimento da
aplicação:
• 
• 
Outra funcionalidade tem de ser construída sobre o protocolo HTTP
Implicações para as aplicações:
–  Qualquer informação de estado (cartões de compras, informação de login de utilizador)
precisa de ser codificada em qualquer pedido e resposta HTTP!
–  Métodos populares para manter o estado:
• 
Cookies (veja-se mais adiante)
• 
URLs únicos gerados dinamicamente ao nível do servidor (veja-se mais adiante)
6638 Bases de Dados II
Aplicações Web
Sumário
• 
Conceitos no âmbito da Internet
• 
Formatos de dados web
– 
HTML, XML, DTDs
• 
Introdução a arquitecturas 3-tier
• 
A tier (camada) da apresentação
– 
• 
Formulários HTML; HTTP Get e HTTP Post, codificação URL; Javascript; Stylesheets; XSLT
A tier intermédia
– 
CGI, servidores de aplicações, Servlets, JavaServerPages, passagem de argumentos, manutenção de
estado (cookies)
6638 Bases de Dados II
Formatos de dados web
• 
HTML
– 
• 
XML
– 
• 
Um modelo hierárquico auto-descritivo
DTD
– 
• 
A linguagem de apresentação para a Internet
Estandartização de esquemas para XML
XSLT (não tratado no livro de referência)
Aplicações Web
6638 Bases de Dados II
Exemplo em HTML
<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.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>
Aplicações Web
6638 Bases de Dados II
Aplicações Web
HTML: uma breve introdução
• 
HTML é uma linguagem de marcação (markup language)
• 
Comandos são tags: <tag inicial> ... <tag final>
– 
• 
• 
Exemplos:
• 
<HTML> ...</HTML>
• 
<UL> ...</UL>
Alguns comandos:
– 
<HTML>:
– 
<UL>: unordered list
– 
<LI>: list entry
– 
<h1>: largest heading
– 
<h2>: second-level heading, <h3>, <h4> analogous
– 
<B>Title</B>: Bold
Muitos editores geram automática e directamente HTML a partir dum documento aberto
(e.g., Microsoft Word tem uma opção “Save as html”)
6638 Bases de Dados II
Exemplo em XML
<?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>
Aplicações Web
6638 Bases de Dados II
XML: The Extensible Markup Language
• 
Language
– 
• 
Markup
– 
• 
Uma forma de comunicar informação
Notas ou meta-dados que descrevem os nossos dados ou linguagem
Extensible
– 
Capacidade sem restrições de definir novas linguagens ou conjuntos de dados
Aplicações Web
6638 Bases de Dados II
Aplicações Web
XML: elementos
• 
XML é sensível às letras minúsculas e maísculas, assim como aos espaços
• 
As tags de abertura e de fecho são obrigatoriamente idênticas
• 
– 
Tags de abertura: “<“+ element name + “>”
– 
Tags de fecho: “</”+ element name + “>”
Elementos vazios não têm dados nem tag de fecho:
– 
Começam com “<“ e terminam com “/>”
• 
Exemplo: <BOOK/>
<BOOK genre="Science" format="Hardcover">...</BOOK>
open tag
element name
attribute
attribute
value
closing tag
6638 Bases de Dados II
Aplicações Web
XML: atributos
• 
Atributos fornecem informação adicional aos elementos tag.
• 
Podem existir zero ou mais atributos em qualquer elemento; cada atributo tem a seguinte
forma:
attribute_name=‘attribute_value’
• 
– 
Não existe qualquer espaço entre o nome e o símbolo “=“
– 
Valores dos atributos têm de ser delimitados pelos caracteres “ ou ‘
Os atributos separam-se com espaço em branco (um ou mais espaços ou tabs).
<BOOK genre="Science" format="Hardcover">...</BOOK>
open tag
element name
attribute
attribute
value
closing tag
6638 Bases de Dados II
Aplicações Web
XML: dados e comentários
• 
Um dado XML é qualquer informação entre uma tag de abertura e outra de fecho
• 
Um dado XML não pode incluir os caracteres ‘<‘ e ‘>’
• 
Comentários: <!-comment ->
<BOOK genre="Science" format="Hardcover">...</BOOK>
open tag
element name
attribute
attribute
value
closing tag
6638 Bases de Dados II
XML: aninhamento e hierarquia
• 
As tags XML podem ser aninhadas numa hierarquia em árvore
• 
Os documentos XML podem ter uma só tag raiz
• 
Entre a tag de abertura e a de fecho podemos inserir:
1.  Dados
2.  Mais elementos
3.  Uma combinação de dados e elementos
<root>
<tag1>
Some Text
<tag2> More</tag2>
</tag1>
</root>
Aplicações Web
6638 Bases de Dados II
Aplicações Web
XML: armazenamento
• 
Type: Element_Node
Name: Element
Value: Root
Armazenamento é feito à semelhança
duma árvore n-ária (DOM)
Node
<root>
<tag1>
Some Text
Type: Element_Node
Name: Element
Value: tag1
<tag2> More</tag2>
</tag1>
</root>
Node
Node
Type: Element_Node
Name: Element
Value: tag2
Node
Type: Text_Node
Name: Text
Value: Some Text
Node
Type: Text_Node
Name: Text
Value: More
6638 Bases de Dados II
DTD - Document Type Definition
• 
A DTD is a schema for XML data
• 
XML protocols and languages can be standardized with DTD files
• 
A DTD says what elements and attributes are required or optional
– 
Defines the formal structure of the language
Aplicações Web
6638 Bases de Dados II
Aplicações Web
Exemplo em DTD
<?xml version='1.0'?>
<!ELEMENT Basket(Cherry+, (Apple | Orange)*) >
ELEMENT Cherry EMPTY>
<!
<!ATTLIST Cherry flavor CDATA #REQUIRED>
<!ELEMENT Apple EMPTY>
<!ATTLIST Apple color CDATA #REQUIRED>
<!ELEMENT Orange EMPTY>
<!ATTLIST Orange location “Florida”>
<Basket>
<Apple/>
<Cherry flavor=‘good’/>
<Orange/>
</Basket>
<Basket>
<Cherry flavor=‘good’/>
<Apple color=‘red’/>
<Apple color=‘green’/>
</Basket>
6638 Bases de Dados II
Aplicações Web
DTD - !ELEMENT
• 
!ELEMENT declara um nome dum elemento e que elementos subsidiários deve ter
• 
Tipos de conteúdo:
– 
Outros elementos
– 
#PCDATA (parsed character data)
– 
EMPTY (nenhum conteúdo)
– 
ANY (no checking inside this structure)
– 
Uma expressão regular
name
<!ELEMENT Basket(Cherry+, (Apple | Orange)*) >
children
6638 Bases de Dados II
Aplicações Web
DTD - !ATTLIST
• 
!ATTLIST define uma lista de atributos de um elemento
• 
Atributos podem ser de diferentes tipos, podem ser exigidos ou não, e podem ter valores
por omissão
element
attribute
type
flag
<!ATTLIST Cherry flavor CDATA #REQUIRED>
<!ATTLIST Orange location CDATA #REQUIRED color ‘orange’>
6638 Bases de Dados II
Aplicações Web
DTD bem-formado e válido
<?xml version='1.0'?>
<!ELEMENT Basket(Cherry+)>
<!ELEMENT Cherry EMPTY>
<!ATTLIST Cherry flavor CDATA #REQUIRED>
Not Well-Formed
Well-Formed but Invalid
<Basket>
<Cherry flavor=good>
</Basket>
<Job>
<Location>Home</Location>
</Job>
Well-Formed and Valid
<Basket>
<Cherry flavor=‘good’/>
</Basket>
6638 Bases de Dados II
Aplicações Web
XML e DTDs
• 
Mais e mais DTDs estandatizados serão desenvolvidos
–  MathML
–  Chemical Markup Language
• 
Permite a troca não-intensiva (light-weight) de dados com a mesma semântica
• 
Linguagens sofisticadas de inquirições (query languages) para XML estão disponíveis:
–  Xquery
–  XPath
6638 Bases de Dados II
Aplicações Web
Sumário
• 
Conceitos no âmbito da Internet
• 
Formatos de dados web
– 
HTML, XML, DTDs
• 
Introdução a arquitecturas 3-tier
• 
A tier (camada) da apresentação
– 
• 
Formulários HTML; HTTP Get e HTTP Post, codificação URL; Javascript; Stylesheets; XSLT
A tier intermédia
– 
CGI, servidores de aplicações, Servlets, JavaServerPages, passagem de argumentos, manutenção de
estado (cookies)
6638 Bases de Dados II
Aplicações Web
Componentes de aplicações Internet com grande intensidade de dados
• 
• 
Três tipos separados de funcionalidades:
– 
Gestão de dados
– 
Lógica da aplicação
– 
Apresentação
A arquitectura do sistema determina se estas 3 componentes residem num só sistema
(“tier”) ou se são distribuídos por várias tiers
6638 Bases de Dados II
Aplicações Web
Arquitectura 1-tier
• 
Toda a funcionalidade é combinada numa só
tier, normalmente num mainframe
• 
O utilizador tem acesso através dum terminal
• 
Vantagens:
– 
• 
Fácil manutenção e administração
Cliente
Lógica da Aplicação
Desvantagens:
– 
Hoje, os utilizadores esperam ter GUI (graphical
user interfaces).
– 
Computação centralizada de tudo e todos é
claramente excessivo para um sistema central
DBMS
Arquitectura 1-tier
6638 Bases de Dados II
Aplicações Web
Arquitectura cliente-servidor
Cliente
• 
• 
Cliente
...
Divisão do trabalho: Thin client
– 
Cliente só implementa a GUI
– 
Servidor implementa a lógica do negócio e a gestão de dados
Rede
Divisão do trabalho: Thick client
– 
Cliente implementa a GUI e a lógica do negócio
– 
Servidor implementa a gestão de dados
– 
Desvantagens de thick clients:
• 
Inexistência duma central para actualizar a lógica de negócio
• 
Problemas de segurança: servidor precisa de acreditar nos clientes
• 
– 
– 
Autenticação e controlo de acesso têm de ser tratados no servidor
Clientes têm de deixar a DB num estado consistente
– 
Uma possibilidade: encapsular todos os acessos à DB em stored
procedures
A escalabilidade só está garantida até 100s clientes aprox.
– 
Grande transferência de dados entre servidor e cliente
– 
Mais do que 1 servidor cria problema: x clientes, y servidores: x*y
conexões
Lógica da Aplicação
DBMS
Arquitectura 2-tier
(thin-client)
Cliente
6638 Bases de Dados II
Arquitectura 3-tier
• 
• 
Programa Cliente
(Web Browser)
...
Programa Cliente
Tier de apresentação
– 
Interface primária com o utilizador
– 
Necessita adaptação a diferentes
dispositivos de display (PC, PDA, cell
phone, voice access?)
Tier intermédia
– 
– 
• 
Aplicações Web
Implementa lógica de negócio (implementa
acções complexas, mantém estado entre
diferentes passos dum workflow)
Servidor de Aplicações
Rede
Acede a diferentes sistemas de gestão de
dados (DBMS)
Tier de gestão de dados
– 
Rede
Um ou mais DBMS
Sistema de Gestão de Dados
6638 Bases de Dados II
Aplicações Web
Exemplo 1: Airline Reservations
• 
Construir um sistema para fazer reservas de viagens de avião
• 
O que é feito nas diferentes tiers?
• 
Sistema de Gestão de Dados
– 
• 
Servidor de Aplicações
– 
• 
Info da companhia aérea, lugares disponíveis, info do cliente, etc.
Lógica de fazer reservas, cancelar reservas, adicionar novas companhias aéreas, etc.
Programa Cliente
– 
Dá entrada a diferentes utilizadores, apresenta formulários e faz a saída de informação perceptível
aos utilizadores
6638 Bases de Dados II
Aplicações Web
Exemplo 2: Matrícula em Cursos
• 
Construir um sistema para permita fazer a matrícula de estudantes em cursos
• 
O que é feito nas diferentes tiers?
• 
Sistema de Gestão de Dados
– 
• 
Servidor de Aplicações
– 
• 
Info do estudante, info do curso, info do instructor, disponibilidade de cursos, pré-requisitos, etc.
Lógica de adicionar um curso, eliminar um curso, criar um novo curso, etc.
Programa Cliente
– 
Dá entrada a diferentes utilizadores (estudantes, funcionários, docentes, etc), apresenta
formulários e faz a saída de informação perceptível aos utilizadores
6638 Bases de Dados II
Aplicações Web
Tecnologias usadas na arquitectura 3-tier
HTML
Javascript
XSLT
Programa Cliente
(Web Browser)
HTTP
JSP
Servlets
Cookies
CGI
XML
Stored Procedures
Servidor de Aplicações
(Tomcat, Apache)
JDBD, SQLJ
Sistema de Base de Dados
(DB2)
6638 Bases de Dados II
Aplicações Web
Vantagens da arquitectura 3-tier
• 
Sistemas heterogéneos
– 
• 
Thin clients
– 
• 
• 
Camada de apresentação exclusiva dos clientes (web browsers)
Integração no acesso aos dados
– 
Vários sistemas de bases de dados podem ser manipulados na tier intermédia duma forma
transparente
– 
Gestão central das conexões
Escalabilidade
– 
• 
Tiers podem ser independentemente mantidas, modificadas e substituídas
Replicação na tier intermédia permite escalabilidade da lógica de negócio
Desenvolvimento de software
– 
Código para a lógica de negócio é centralizado
– 
Interacção entre tiers é feita através de APIs: podemos re-usar componentes estandartizados em
cada tier
6638 Bases de Dados II
Aplicações Web
Sumário
• 
Conceitos no âmbito da Internet
• 
Formatos de dados web
– 
HTML, XML, DTDs
• 
Introdução a arquitecturas 3-tier
• 
A tier (camada) da apresentação
– 
• 
Formulários HTML; HTTP Get e HTTP Post, codificação URL; Javascript; Stylesheets; XSLT
A tier intermédia
– 
CGI, servidores de aplicações, Servlets, JavaServerPages, passagem de argumentos, manutenção de
estado (cookies)
6638 Bases de Dados II
Aplicações Web
Sobrevisão da camada (tier) de apresentação
• 
• 
Lembrete: Funcionalidade da camada de apresentação
– 
Interface primária do utilizador
– 
Precisa de se adaptar a diferentes dispositivos de visualização (PC, PDA, telemóvel, cell phone,
acesso de voz?)
– 
Funcionalidade simples, tais como a verificação da validade de campos
Veremos:
– 
Formulários HTML: como passar dados para a camada intermédia
– 
JavaScript: funcionalidade simples na camada de apresentação
– 
Folhas de estilo (style sheets): separação entre os dados e formatação
6638 Bases de Dados II
Aplicações Web
Formulários HTML
• 
Meio comum de comunicar dados da camada do cliente para a camada intermédia
• 
Formato geral dum formulário:
<FORM ACTION=“page.jsp” METHOD=“GET” NAME=“LoginForm”>
...
</FORM>
• 
Componentes de uma HTML FORM tag:
– 
ACTION: especifica URI que trata do conteúdo
– 
METHOD: especifica o método GET ou POST do HTML
– 
NAME: nome do formulário; pode ser usado em scripts do lado-do-cliente para fazer referência ao
formulario
6638 Bases de Dados II
Aplicações Web
Por dentro dum formulário HTML
• 
Etiqueta (tag) INPUT
– 
– 
• 
Atributos:
• 
TYPE: text (campo de entrada de texto), password (campo de entrada de texto), submit (onde está a
entrada), reset (reinicia todos os campos de entrada)
• 
NAME: nome simbólico; usado para identificar o valor do campo na camada intermédia
• 
VALUE: valor por omissão
Exemplo: <INPUT TYPE=“text” Name=“title”>
Exemplo de formulário:
<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="Clear">
</form>
6638 Bases de Dados II
Aplicações Web
Passagem de argumentos
• 
Dois métodos: GET e POST
– 
GET
• 
Conteúdo do formulário enviado para o URI submetido
• 
Estrutura:
action?name1=value1&name2=value2&name3=value3
action: nome do URI especificado no formulário
pares (nome,valor) vêm dos campos INPUT do formulário; campos vazios têm valores vazios
(“name=“)
Exemplo do formulário anterior (com password) :
– 
– 
• 
TableOfContents.jsp?userid=john&password=johnpw
• 
Note-se que a página designada pela action precisa de ser um programa, um “script”, ou uma página que
processará a entrada do utilizador
6638 Bases de Dados II
Aplicações Web
HTTP GET: codificação dos campos dum formulário
• 
Campos dum formulário podem conter caracteres ASCII que não podem aparecer num URI
• 
Uma convenção especial converte tais valores (nos campos do formulário) em caracteres
“URI-compatible”:
– 
Converte todos os caracteres “especiais” em %xyz, onde xyz é o código ASCII do carácter.
Caracteres especiais incluem &, =, +, %, etc.
– 
Converte todos os espaços em branco no carácter “+”
– 
Associa os pares (nome,valor) das etiquetas INPUT do formulário ao carácter “&” de molde a
formar o URI
6638 Bases de Dados II
Aplicações Web
Formulários HTML: um exemplo completo
<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>
6638 Bases de Dados II
Aplicações Web
Javascript
• 
Objectivo: adicionar funcionalidades à camada de apresentação.
• 
Exemplos no cliente:
– 
Detectar tipo de browser e página específica do browser
– 
Validação de formulários: validação dos campos de entrada de formulários
– 
Controlo do browser: abrir novas janelas, fechar janelas existentes (exemplo: anúncios pop-up)
• 
Usualmente embebido em HTML directament com a etiqueta <SCRIPT>...</SCRIPT>.
• 
A etiqueta <SCRIPT> tem vários atributos:
– 
LANGUAGE: especifica a linguagem de script (e.g. javascript)
– 
SRC: ficheiro externo com código script
– 
Exemplo:
<SCRIPT LANGUAGE=“JavaScript” SRC=“validate.js”> </SCRIPT
• 
Se a etiqueta <SCRIPT> não tem um atributo SRC, então o JavaScript está directamente
dentro dum ficheiro HTML.
6638 Bases de Dados II
Aplicações Web
Javascript (cont.)
• 
Exemplo:
<SCRIPT LANGUAGE=“JavaScript”>
<!--alert(“Welcome to our bookstore”) //-->
</SCRIPT>
• 
• 
Dois estilos de comentários diferentes
– 
<!-- comentário HTML, desde que o código JavaScript seja ignorado pelo HTML processor
– 
// comentário JavaScript por forma a terminar o comentário HTML
JavaScript é uma linguagem de scripting completa
– 
Variáveis
– 
Atribuições (=, +=, ...)
– 
Comparações (<,>,...), operadores booleanos (&&, ||, !)
– 
Instruções: if, for, do-while, while
– 
Funções com valores devolvidos
• 
Cria funções usando a função keyword
• 
f(arg1, ...,argk) {statements;}
6638 Bases de Dados II
Aplicações Web
JavaScript: um exemplo completo
HTML Form:
<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="Clear">
</form>
Associated JavaScript:
<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>
6638 Bases de Dados II
Aplicações Web
Folhas de estilos (style sheets)
• 
Idea: Separate display from contents, and adapt display to different presentation formats
• 
Two aspects:
• 
• 
– 
Document transformations to decide what parts of the document to display in what order
– 
Document rendering to decide how each part of the document is displayed
Why use style sheets?
– 
Reuse of the same document for different displays
– 
Tailor display to user’s preferences
– 
Reuse of the same document in different contexts
Two style sheet languages
– 
Cascading style sheets (CSS): For HTML documents
– 
Extensible style sheet language (XSL): For XML documents
6638 Bases de Dados II
Aplicações Web
CSS: Cascading Style Sheets
• 
Defines how to display HTML documents
• 
Many HTML documents can refer to the
same CSS
– 
Can change format of a website by
changing a single style sheet
– 
Example:
<LINK REL=“style sheet” TYPE=“text/
css” HREF=“books.css”/>
• 
Each line consists of three parts:
selector {property: value}
– 
Selector: Tag whose format is defined
– 
Property: Tag’s attribute whose value is
set
– 
Value: value of the attribute
• 
Example style sheet:
body {background-color: yellow}
h1 {font-size: 36pt}
h3 {color: blue}
p {margin-left: 50px; color: red}
• 
The first line has the same effect as:
<body background-color=“yellow”>
6638 Bases de Dados II
XSL
• 
Language for expressing style sheets
– 
• 
More at: http://www.w3.org/Style/XSL/
Three components
– 
– 
– 
XSLT: XSL Transformation language
• 
Can transform one document to another
• 
More at http://www.w3.org/TR/xslt
XPath: XML Path Language
• 
Selects parts of an XML document
• 
More at http://www.w3.org/TR/xpath
XSL Formatting Objects
• 
Formats the output of an XSL transformation
• 
More at http://www.w3.org/TR/xsl/
Aplicações Web
6638 Bases de Dados II
Aplicações Web
Sumário
• 
Conceitos no âmbito da Internet
• 
Formatos de dados web
– 
HTML, XML, DTDs
• 
Introdução a arquitecturas 3-tier
• 
A tier (camada) da apresentação
– 
• 
Formulários HTML; HTTP Get e HTTP Post, codificação URL; Javascript; Stylesheets; XSLT
A tier intermédia
– 
CGI, servidores de aplicações, Servlets, JavaServerPages, passagem de argumentos, manutenção de
estado (cookies)
6638 Bases de Dados II
Sobrevisão da camada de apresentação
• 
• 
Recall: Functionality of the middle tier
– 
Encodes business logic
– 
Connects to database system(s)
– 
Accepts form input from the presentation tier
– 
Generates output for the presentation tier
We will cover
– 
CGI: Protocol for passing arguments to programs running at the middle tier
– 
Application servers: Runtime environment at the middle tier
– 
Servlets: Java programs at the middle tier
– 
Java Server Pages: Java scripts at the middle tier
– 
Maintaining state: How to maintain state at the middle tier. Main focus: Cookies.
Aplicações Web
6638 Bases de Dados II
Aplicações Web
CGI: Commom Gateway Interface
• 
Goal: Transmit arguments from HTML forms to application programs running at the middle
tier
• 
Details of the actual CGI protocol unimportant as libraries implement high-level interfaces
• 
Disadvantages:
– 
The application program is invoked in a new process at every invocation (remedy:FastCGI)
– 
No resource sharing between application programs (e.g., database connections)
– 
Remedy: Application servers
6638 Bases de Dados II
CGI: exemplo
• 
HTML form:
<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>
• 
Perl code:
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;
Aplicações Web
6638 Bases de Dados II
Aplicações Web
Servidores de aplicações
• 
Idea: Avoid the overhead of
CGI
Web Browser
– 
Main pool of threads of
processes
– 
Manage connections
– 
Enable access to
heterogeneous data sources
– 
Other functionality such as
APIs for session management
HTTP
Web Server
C++ Application
Java Beans
Application Server
DBMS 1
Pool of Servelts
DBMS 2
6638 Bases de Dados II
Aplicações Web
Servlets
• 
• 
Java Servlets: código Java que corre na
camada intermédia
– 
Independente da plataforma
– 
Java APIs completas, incluindo JDBC
• 
Life of a servlet?
– 
Web server forwards request to servlet
container
– 
Container creates servlet instance (calls
init() method; deallocation time: calls
destroy() method)
– 
Container calls service() method
Exemplo:
import java.io.*;
import java.servlet.*;
import java.servlet.http.*;
public classServetTemplate extends
HttpServlet{
public void doGet(
HTTPServletRequest request,
HTTPServletResponse response
)
throws SerletExpection,
IOException{
PrintWriter
out=response.getWriter();
out.println(“Hello World”);
}
}
• 
service() calls doGet() for HTTP
GET or doPost() for HTTP POST
• 
Usually, don’t override service(), but
override doGet() and doPost()
6638 Bases de Dados II
Aplicações Web
Servlets: exemplo completo
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);
}
}
6638 Bases de Dados II
JSP: Java Server Pages
• 
• 
Servlets
– 
Generate HTML by writing it to the “PrintWriter” object
– 
Code first, webpage second
Java Server Pages
– 
Written in HTML, Servlet-like code embedded in the HTML
– 
Webpage first, code second
– 
They are usually compiled into aServlet
Aplicações Web
6638 Bases de Dados II
JSP: 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>
Aplicações Web
6638 Bases de Dados II
Aplicações Web
Estado da aplicação
• 
HTTP is stateless.
– 
– 
• 
Advantages
• 
Easy to use: don’t need anything
• 
Great for static-information
applications
• 
Requires no extra memory space
Disadvantages
• 
No record of previous requests means
– 
No shopping baskets
– 
– 
No user logins
No custom or dynamic content
– 
Security is more difficult to
implement
Server-side state
– 
• 
Client-side state
– 
• 
Information is stored in a database, or in
the application layer’s local memory
Information is stored on the client’s
computer in the form of a cookie
Hidden state
– 
Information is hidden within dynamically
created web pages
6638 Bases de Dados II
Aplicações Web
Estado do lado do servidor (server-side state)
• 
Many types of Server side state:
1. 
2. 
Store information in a database
• 
Data will be safe in the database
• 
BUT: requires a database access to query or update the information
Use application layer’s local memory
• 
Can map the user’s IP address to some state
• 
BUT: this information is volatile and takes up lots of server main memory
5 million IPs= 20 MB
• 
Should use Server-side state maintenance for information that needs to persist
– 
Old customer orders
– 
“Click trails” of a user’s movement through a site
– 
Permanent choices a user makes
6638 Bases de Dados II
Aplicações Web
Estado do lado do cliente: cookies
• 
Storing text on the client which will be passed to the application with every HTTP request.
– 
Can be disabled by the client.
– 
Are wrongfully perceived as "dangerous", and therefore will scare away potential site visitors if
asked to enable cookies1
• 
Are a collection of (Name, Value) pairs
• 
Advantages
• 
• 
– 
Easy to use in JavaServlets/ JSP
– 
Provide a simple way to persist non-essential data on the client even when the browser has closed
Disadvantages
– 
Limit of 4 kilobytes of information
– 
Users can (and often will) disable them
Should use cookies to store interactive state
– 
The current user’s login information
– 
The current shopping basket
– 
Any non-permanent choices the user has made
6638 Bases de Dados II
Criação e acesso a cookies
• 
Creating a cookie:
Cookie myCookie= new Cookie("username", "jeffd");
response.addCookie(userCookie);
• 
Acessing a cookie:
Cookie[] cookies = request.getCookies();
String theUser;
for(inti=0; i<cookies.length; i++) {
Cookie cookie = cookies[i];
if(cookie.getName().equals("username"))
theUser= cookie.getValue();
}
// at this pointtheUser== "username"
• 
Cookies need to be accessed BEFORE you set your response header:
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Aplicações Web
6638 Bases de Dados II
Aplicações Web
Sumário
• 
Conceitos no âmbito da Internet
• 
Formatos de dados web
– 
HTML, XML, DTDs
• 
Introdução a arquitecturas 3-tier
• 
A tier (camada) da apresentação
– 
• 
Formulários HTML; HTTP Get e HTTP Post, codificação URL; Javascript; Stylesheets; XSLT
A tier intermédia
– 
CGI, servidores de aplicações, Servlets, JavaServerPages, passagem de argumentos, manutenção de
estado (cookies)
Download

Aplicações Web em Bases de Dados