Escolar Documentos
Profissional Documentos
Cultura Documentos
Protocolo Da Camada de Apresentaçao
Protocolo Da Camada de Apresentaçao
Resumo do Captulo
Os principais tpicos abordados neste captulo so: (a) Conceitos da Internet,
(b) Formato de dados para a web, (c) Introduo arquitetura trscamadas, (d) A camada de apresentao (presentation tier) e (e) A camada
lgica (middle tier).
Conceitos da Internet
URI (Uniform Resource Identifiers)
URIs so esquemas para a identificao, i. e., endereamento de recursos na
Internet. Entende-se recursos por qualquer objeto disponvel na Internet,
desde pginas estticas e dinmicas (e.g. index.html, login.jsp), at arquivos
multimdia (e.g. song.mp3, picture.jpg e sadas de programas.
Exemplos de URIs:
http://www.cs.wisc.edu/~dbbook/index.html
mailto:webmaster@ic.unicamp.br
URIs so estruturadas em trs parte. A primeira descreve o protocolo de
acesso ao recursos. No primeiro exemplo, http. A segunda parte, informa a
mquina hospedeira (host) do recursos que se quer acessar
(www.cs.wisc.edu). Finalmente, a terceira parte indica o nome do recurso. No
primeiro exemplo ~dbbook/index.html
As conhecidas URLs so subconjuntos das URIs
URLs (Uniform Resource Locator) so subconjuntos das URIs e representam
recursos atravs de seu mecanismo de acesso.
Protocolo HTTP
O protocolo http, Hypertext Transfer Protocol, um protocolo de comunicao.
Protocolos comunicao so conjuntos de padres e regras que definem e
disciplinam determinadas trocas de informao.
O HTTP o procotolo de alto nvel mais comum para a transferncia de dados
na Internet. Na pilha da Internet existem outros protocolos de comunicao
utilizados, como o TCP e o IP, que formam as pilhas TCP/IP.
Quando um usurio clica em um endereo em seu browser, por exemplo:
http://www.cs.wisc.edu/~dbbook/index.html, o cliente envia requisies para
o servidor e este as responde com o header do protocolo e possivelmente com
dados. Neste caso, o cliente pode fazer automaticamente mais requisies,
possivelmente trazendo recursos indicados nos dados anteriores (e.g. imagens
de uma pgina HTML).
Existem algumas variaes do protocolo HTTP, como o HTTPS, que
basicamente o HTTP sobre uma conexo SSL.
A seguir um exemplo de requisio HTTP feita por um browser:
GET ~/index.html HTTP/1.1
User-agent: Mozilla/4.0
Accept: text/html, image/gif, image/jpeg
E a resposta do 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>
...
200
400
404
505
Exemplo:
<HTML> </HTML>
<UL> </UL>
Diversos editores de pginas geram cdigo HTML a partir da apresentao
grfica do documento, como o Macromedia Dreamweaver ou o Microsoft Word.
O HTML no case-sensitive quanto s tags. Algumas das principais tags so:
Outros elementos
#PCDATA (parsed character data)
EMPTY (sem contedo)
ANY (sem restries)
Uma expresso regular
Camada de apresentao
No detalhamento da camada de apresentao, abordaremos as tecnologias que
existem do lado cliente da arquitetura de trs camadas. Sero discutidos nesta
sesso formulrios HTML, Java Script e Style sheets.
Formulrio HTML
Os formulrios HTML so uma das maneiras mais comum que encontramos
para comunicao entre a camada de apresentao e a camada lgica.
Podemos ter vrios formulrios dentro de um documento HTML e geralmente
um formulrio HTML tem o seguinte formato:
<FORM ACTION = page.jsp METHOD =GET NAME=LoginForm>
</FORM>
Cada atributo da tag FORM, tem um significado e utilidade:
ACTION: Especifica a URI para onde ser encaminha o contedo do formulrio
quando ocorrer o submit. Nesta URI ocorrer o processamento dos dados de
entrada dos tags apropriados do formulrio (e.g. INPUT, SELECT,
TEXTAREA...).
METHOD: Especifica o mtodo pelo qual sero enviados os dados. Existem dois
mtodos GET e POST, os quais sero abordados com mais detalhes a seguir.
NAME: Especifica o nome do formulrio, de forma que este possa ser utilizado
por scripts do lado do cliente. Esta abordagem bastante utilizada com a
tecnologia JavaScript.
Dentro dos formulrios especificamos os elementos de entrada para os
usurios, os quais podem ser um INPUT, SELECT ou TEXTAREA. Os formulrios
podem conter vrios elementos de cada tipo.
Um exemplo de tag INPUT:
<INPUT TYPE=text NAME=title >
A tag INPUT poder ter vrios atributos, sendo que os mais importantes so:
TYPE: Especifica o tipo do campo de entrada. Este tipo pode ser text (campo
de texto), password (campo de texto aparecendo *), reset (boto onde
todos os campos do formulrio voltam para o seu valor default) e submit
(boto que dispara o envio dos campos de dados do formulrio para o
servidor).
NAME: Especifica o nome do campo para que este possa ser identificado na
camada lgica. Podemos definir o tag NAME para todos os tipos exceto reset e
submit.
VALUE: Especifica o valor defaut do campo.
Exemplo de um formulrio HTML utilizando a tag INPUT:
<form method=POST action=TableOfContents.jsp>
<input type=text name=userid>
<input type=password name=password>
<input type=submit value=Reset Values>
<input type=reset value=Log on>
</form>
Como mencionado anteriormente, existem dois mtodos para o envio dos
dados do formulrio HTML para o servidor, GET e POST. No caso do GET, o
contedo do formulrio codificado na URI, no seguinte formato:
Action?nome1=valor1&nome2=valor2&nome3=valor3
Onde action o nome da URI especificada no formulrios e os pares
(nome,valor) so os campos de entrada do formulrio.
No caso do mtodo POST os campos de entrada do formulrio vo embutidos
na requisio http, invisvel para o usurio. A aplicao e os seus requisitos o
que determina as escolha do mtodo a ser utilizado.
JavaScript
O JavaScript uma linguagem de script utilizada na camada de apresentao
que roda diretamente do lado do cliente. Geralmente ela utilizada para as
seguintes finalidades: (a) detectar o tipo de browser, (b) validar formulrios e
controlar o browser (abrir/fechar janelas).
Para se utilizar scripts Java, deve-se utilizar a tag <SCRIPT>. Se a tag no
conter o atributo SRC, o script estar embutido no prprio cdigo HTML da
pgina em questo. Do contrrio, os scripts sero buscados na URI relativa
apontada por SRC.
JavaScript uma linguagem bem completa: pode-se utilizar variveis,
atribuies, operadores, expresses e funes.
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>
Stylesheets
A funo dos stylesheets de separar a formatao da pgina de seu
contedo, de maneira que seja fcil a adaptao da apresentao da pgina
(i.e. de seu render) aplicaes e clientes diferentes.
Duas principais vantagens da utilizao de stylesheets so: (a) adaptao para
formatos diferentes de displays e (b) padronizao da apresentao grfica de
uma aplicao utilizando somente um conjunto especfico de stylesheets.
No caso de uma mudana de fonte ou tamanho, por exemplo, no seria
necessrio alterar toda a aplicao e sim apenas o documento que descreve
este padro.
Existem duas principais linguagens de stylesheets: (a) Cascading Style Sheets
(CSS), para documento HTML e (b) Extensible Stylesheet Language(XSL), para
documento XML.
Cascading Style Sheets (CSS)
a linguagem que define como os documentos HTML sero mostrados. Vrios
documentos HTML podem acessar um nico css, facilitando a padronizao de
aplicaes.
Um exemplo de um documento HTML referenciando um css:
<LINK REL=style sheet
TYPE=text/css HREF=books.css>
Camada lgica
Nesta camada onde epxressa a lgica do negcio, a conexo com o banco
de dados, recebimento das entradas da camada de apresentao e a gerao
de sadas para camada de apresentao.
Referente a estada camada, sero apresentados os seguintes tpicos: CGI,
Servidor de aplicao, Servlets, JSP e Manuteno de estados.
Common Gateway Interface (CGI)
Protocolo para passagem de argumentos para programas que rodam na
camada lgica.
O CGI (Common Gateway Interface) permite que um navegador de Internet
execute programas residentes no servidor web. Tais programas podem
processar dados recebidos de formulrios de pginas HTML, alm de
armazenar e ler dados no servidor.
Apesar de muito utilizado, principalmente em aplicaes legadas, o protocolo
tem algumas desvantagens, como: (a) para cada nova requisio, o programa
de aplicao chamado em um novo processo, causando uso excessivo de
recursos no caso de muitos acessos simultneos e, (b) No existe
compartilhamento de recursos entre os programas de aplicao (p.e.,
conexes com o banco de dados).
Uma soluo para esses problemas a utilizao de um Servidor de aplicaes.
Servidor de aplicaes
Um servidor de aplicao uma forma moderna de se implementar a camada
de aplicao.
Um bom servidor de aplicao deve executar aplicaes de negcio com nveis
garantidos de desempenho, disponibilidade e integridade, e deve suportar
mltiplos padres e arquiteturas, de acordos com as necessidades especficas
de cada negcio.
A idia do Servidor de aplicao veio para evitar o overhead do CGI. Para
tanto, um Servidor de aplicao capaz de manter um Pool de threads e
processos, gerenciar conexes acesso aos recursos de dados heterogneos. O
Servidor de aplicaes ainda disponibiliza uma API para o gerenciamento de
sesses.
Servlets e Java Server Pages (JSP)
Os Servlets, assim como as paginas JSP tratam chamadas (requests) e
respostas (responses) do protocolo HTTP. A principal diferena entre os JSP's e
os servlets que as pginas JSP's so mais fceis de se trabalhar,
aproveitando com o front-end do usurio, ou seja o HTML.
Ambos so independentes de plataforma.
Os Servlets geram HTML atravs de escritas de strings contendo cdigo HTML,
pelo uso de seu objeto PrintWriter. Desta forma, as pginas HTML esto
contidas no cdigo Java.
Os JSPs, por sua vez so cdigos Java embutidos em pginas HTML, assim
como linguagens como ASP e PHP.
Segue exemplos de Servlet e de JSP:
Servlets:
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);
}
}