Você está na página 1de 91

Internet Information

Server, MS-Access, MS-


SQL Server, Active Server
Pages: Uma Solução Web

João Garrott Negreiros (Univ. Lusófona e


Univ. Nova Lisboa)
Ana Cristina Costa (Univ. Nova Lisboa)
Ilídio Lopes (Instituto Politécnico Santarém)
Dulce Sá (Univ. Nova Lisboa)
José Santos (Univ. Nova Lisboa)

Portugal, Abril 2007


apostilando.com 2
1 Internet Information Server

1.1. Conceitos Básicos

Antes de se introduzir um estudo mais aprofundado do Internet Information Server, é


necessário relembrar alguns conceitos básicos da Internet, segurança, Windows XP e,
nomeadamente, TCP/IP. Alternativamente, apresenta-se no Glossário desta obra alguns
conceitos sobre Web mas os autores aconselham a consultar livros e Web sites
especializados sobre estes assuntos.

1.2. Instalação do IIS

O Microsoft Internet Information Server faz parte do Windows Option Pack CD mas pode
ser obtido pelo site da Microsoft. A sua instalação é um processo relativamente fácil.
Contudo, é importante mencionar alguns pré-requisitos, quer a nível de hardware quer a
nível de software, como os seguintes itens:
• Desinstalar qualquer versão anterior de servidor Web ou FTP
• Logon como administrator
• Fechar todas as ligações ODBC até a instalação estar completa
• 128 MB de memória ou superior
• Placa de rede instalada com TCP/IP e um IP address fixo (não é possível assignar
o computador ao serviço DHCP para obtenção de um IP address dinâmico)
certificado (se possível, por um Internet Service Provider).
• Instalação do Windows XP com o Service Pack 2.

Outras componentes que a Microsoft permite instalar além do Web Server e do FTP
Server são o Microsoft Transaction Server (processo de transacções para aplicações
distribuídas), Active Server Pages (mecanismo que permite um acesso dinâmico a
páginas Web pelos browsers), Data Access Components (conjunto de componentes para
acesso a base de dados) e o Microsoft Management Console (ferramenta administrativa
do site).

apostilando.com 3
A partir das opções Start/Painel de controlo/Adicionar ou remover
programas/Componentes de Windows, seleccione, entre outras, a opção Internet
Information Server que permite suportar as transacções do MS-FrontPage, Active Server
Pages e possíveis conexões a base de dados via ODBC e ADO.

Por defeito, o directório de instalação do serviço WWW é no directório


c:\InetPub\wwwroot e do serviço FTP é no directório c:\InetPub\ftproot, podendo ser
alterado caso o utilizador o entenda. Após a instalação, o Internet Service Manager será a
ferramenta que permitirá ao utilizador realizar a gestão deste software pertencente a um
package designado Microsoft Back Office.

apostilando.com 4
A estrutura de directórios criadas apresenta-se, de seguida. Note a existência do ficheiro
default.html (por vezes é o ficheiro index.html) normalmente designado a home page do
site em causa.

apostilando.com 5
1.3 TCP/IP em MS-Windows

• O próximo passo é testar a sua placa de rede e verificar se outros computadores


podem aceder ao host que retém o IIS. Criando uma sessão MS-DOS e dando o
comando ipconfig/all é possível verificar qual o estado do computador local em
termos da rede, nomeadamente em relação ao protocolo TCP/IP. Em termos
gráficos, a componente que regista esta informação de redes no Windows XP é
realizada em Start/Control Panel/Networking. Os parâmetros principais são o
endereço físico, o endereço IP, a máscara de sub-rede, a gateway predefinida, o
servidor de DNS (Domain Name System) e o servidor WINS. Convêm, por razões
óbvias, a firewall estar ligada. Outras opções a ter em conta é o NetBIOS Name e
nome do domínio ou workgroup a que pertence o computador em causa (realize o
comando set a partir da consola do Windows para visualizar esta informação),
serviços a instalar como o Computer Browser, Workstation, Server e o SAP Agent,
protocolos instalados como o TCP/IP, o DLC, o AppleTalk e o NetBEUI, quais as
placas de rede instaladas como a 3Com, DEC, Intel, HP e IBM e a capacidade de
conectar protocolos, placas de rede e serviços (painel bindings).

Neste caso particular e baseado na figura acima, tem-se:


• O Host Name (255 caracteres, no máximo) é webalunos.isegi.unl.pt (criado
quando se instalou o TCP/IP) e o seu IP address é o 193.136.119.7. Note que estes
parâmetros devem ser únicos na rede em que o computador está integrado.
• Como se está presente perante uma rede de classe C, a Subnet Mask apresenta os
valores 255.255.255.0 para distinguir a network do host.
• A placa de rede presente designa-se Novell 2000 Adapter com o MAC endereço
00-00-E8-14-7B-F3 (48 bits).

apostilando.com 6
• Um outro ponto importante é a definição do IP do DNS Server necessário no Host
Name Resolution (tabelas de IPs necessária quando uma aplicação pretende
conectar uma outra através do host name).
• Finalmente é necessário saber qual o IP da máquina que serve de router/gateway
da rede em causa para comunicação com outras redes exteriores.

Um outro comando DOS a verificar no computador é o comando hostname. Este


NetBIOS Name poderá será usado no acesso a shares remotos através da especificação
Universal Name Conventional (UNC) como, por exemplo, \\webalunos\temp1, em que
temp1 seria o nome de um share relativo ao directório c:\winnt\temp no computador
webalunos. Lembre-se, também, que um host pode apenas conter apenas um NetBIOS
Name mas podem ser assignados vários host names associados a nomes de domínios,
formando o Fully Qualified Domain Name (FQDN). Por exemplo: É perfeitamente
possível instalar no mesmo Internet Information Server os serviços
http://biblio.isegi.unl.pt e ftp://biblio.isegi.unl.pt (dois nomes FQDNs para um nome
NetBIOS).

Um modo bastante eficaz de testar a acessibilidade ao host acima descrito é num outro
computador (neste caso, o 193.136.119.18) digitar o comando ping target-IP-Address
(neste caso, ping 193.136.119.7). Vários pacotes de 32 bytes são enviados e, caso a
máquina destino esteja alive, estes serão devolvidos indicando que o host destino se
encontra contactável.

1.4 DNS

O Domain Name System é um serviço de name resolution, tal como o WINS, cujo
objectivo é manter uma série de equivalências entre endereços IPs de hosts e respectivos
nomes. Este serviço é usado para aplicações e utilitários que usam o interface Sockets
(port 53) como o ftp, telnet, ssh, rsh, ping e o tracert.

apostilando.com 7
O serviço Microsoft DNS Server pode ser instalado no Windows 2003 Server e será
invocado pelos clientes que têm de estar configurados com o endereço desse mesmo
servidor como se visualiza na imagem seguinte. Neste caso particular, o cliente
garrott.ist.utl.pt apresenta dois endereços IPs na opção DNS.

O DNS Manager é o responsável pela administração deste serviço mas para se entender
este utilitário é necessário relembrar os seguintes conceitos:
• Name Space é o conjunto de nomes organizados hierarquicamente a partir do
domain top como .edu, .com.br ou .pt.

• Zone files são os ficheiros residentes em \winnt\System32\dns que contêm os


resources records de cada sub-dominio existente.

• Cache File é um ficheiro criado por este serviço que contém endereços de
servidores DNS da Internet, capaz de dar conta do processo de name resolution do
domínios de topo.

• Master Server são os servidores a partir do qual um servidor DNS secundário


obtém cópias das zone files.

• Reverse Lookup Files são os ficheiros de extensão .in-addr.arpa que fornecem os


nomes dos hosts em função de endereços IP.

• A verificação deste serviço no Windows 2003 Server é feita na opção


Start/Settings/Control Panel/Network/Services (ver figura seguinte)

apostilando.com 8
Como se pode verificar na figura seguinte, o computador associado a este DNS designa-
se mail.isegi.unl.pt, não existindo outros servidores na rede com este serviço. Além disso,
apresenta apenas uma zona chamada isegi.unl.pt cujos registos são visualizados na janela
do lado direito.

Compreendido em termos gerais o serviço DNS, é assim necessário introduzir um novo


registo referente ao novo serviço a criar no IIS e que se irá designar biblio.isegi.unl.pt.
Repare que não é necessário introduzir o sub-dominio isegi.unl.pt pois já existe (o registo
tipo SOA – Start Of Authority – existente nos registos deste subdominio indicam esta
conclusão). Além disso, é fundamental criar o endereço IP do novo serviço a criar no
DNS e que foi aquele obtido pelo comando ipconfig/all. Só assim, será possível aceder ao
novo web site de qualquer parte do mundo.

apostilando.com 9
A actualização da janela é feita pela tecla F5 (refresh) conforme a imagem anterior prova.

1.5 Criação de um Web Site

A criação do site http://biblio.isegi.unl.pt anteriormente referido no DNS será objecto de


estudo nesta secção. Assim, a opção a escolher no Windows Server, dentro do IIS
Manager, será Action/New/Site.

Seguidamente, deve ser criado uma pequena descrição do Web site que servirá como
identificação para o Internet Information Manager (neste caso particular, foi a
biblioteca). Selecciona-se o endereço IP da máquina que suporta o IIS e como seria de
esperar, o port do serviço Web será o 80. De facto, como as ligações Web usam a
tecnologia Sockets e como o IP do computador onde reside o IIS é sempre o mesmo, será
a porta que distinguirá qual o serviço a seleccionar. Caso se instale o serviço ftp (por
exemplo, ftp://biblio.isegi.unl.pt) no mesmo IIS então seria o port 21, por defeito, que
identificaria este serviço.

apostilando.com 10
Uma outra hipótese seria instalar também um outro serviço WWW no mesmo IIS. Por
exemplo: http://videoteca.isegi.unl .pt. Esta situação é possível mas atenção: a porta de
ligação não poderia ser o port 80 mas obrigatoriamente teria que ser uma outra pois esta
já estava assignada ao serviço http://biblio.isegi.unl.pt.

O passo seguinte consiste em indicar o directório de raiz do site a criar. Neste caso é
c:\InetPub\wwwroot\biblioteca. A imagem seguinte indica quais as permissões a dar à
home directory acima mencionada. Por defeito, as opções permitidas são Allow Read
Access e Allow Script Access. O privilégio Allow Execute Access permite a execução de
correr qualquer tipo de aplicação incluindo executáveis binários e DLLs. Finalmente, o
privilégio Allow Directory Browsing permite o cliente visualizar a estrutura dos ficheiros
e directórios do nosso sistema.

apostilando.com 11
Após o término da instalação do novo site http://biblio.isegi.unl.pt, o seu status deve ser
Running. Note que o site Default Web Site está Stopped pois o endereço IP e a porta de
ligação é a mesma, o que naturalmente não pode acontecer. Apenas um deles pode estar
alive. Como já foi referido, uma possibilidade seria assignar uma porta diferente. Por
exemplo: o port 88. Consequentemente, o acesso seria http://biblio.isegi.unl.pt:88.
Apresenta-se, de seguida, a home page do site e a localização do ficheiro default.htm.

1.6 Administração de um Web Site

Parametrizar e controlar os diversos parâmetros de um site Web quando instalado no IIS é


a principal função que um administrador deve ter durante o tempo de vida do mesmo.
Para isso e recorrendo ao site criado http://biblio.isegi.unl.pt, analise-se alguns dos seus
parâmetros mais importantes numa subdivisão em nove categorias:
• Web Site - Configura informação sobre identificação do mesmo e conexões.

• Operators - Apresenta os privilégios do operador.

apostilando.com 12
• Performance - É usado para optimização de tempos de resposta e o ajustamento de
algumas funções de nivelamento de performance como o número de conexões
simultâneas ao site.

• Configuração - Permite a edição, criação, apagamento e status dos ISAPI Filters.

• Home Directory - Especifica o directório raiz e permissões associados ao Web Site.

• Documents - Indica os documentos de default.

• Directory Security - Configura outras autenticações do site.

• HTTP Headers - Permite controlar ao browser a verificação da data actual com a


data de expiração da página a ler e decidir se a página a mostrar deve ser aquela
que está em cache ou se é necessário actualizar a página no site (processo de
reload).

• Custom Errors - Visualiza as mensagens de erros.

O primeiro painel a analisar é o Home Directory na qual se destaca os seguintes


parâmetros (ver figura acima):
• A Directory Located On This Computer - Indicação que o directório raiz se
encontra no computador presente.

• A Share Located On Another Computer - Capacidade de indicar através de um


share de rede (UNC) a localização do directório raiz. Por exemplo:
\\adamastor\biblio-share.

apostilando.com 13
• A Redirection To A URL - O directório raiz encontra-se num outro servidor Web
(URL). Por exemplo: http://www.ist.utl.pt/biblioteca.

• Log Access - Assegurar que todas as visitas ao site são registadas. Deve estar
sempre activo.

Uma outra capacidade do IIS é restringir o acesso ao site criado (painel Directory
Security). Esse objectivo pode ser realizado de duas formas:
• Granted Access permite o acesso a todos os computadores do mundo excepto os
que forem mencionados na janela abaixo.

• Denied Access não permite ninguém aceder ao site excepto os que forem descritos.

O painel Custom Errors especifica as mensagens de erro do protocolo http 1.1 que são
retornadas ao browser do cliente (ver figura seguinte). Assim, é possível a edição e
customização. O painel Operators indica os accounts (utilizadores e grupos) do Windows
NT Server que permite gerir o site como actualizar os documentos Web de default ou
parametrizar as permissões de acesso. No entanto, para se criar directórios virtuais,
mudar a password da conta anonymous ou alterar a configuração base do IIS é
fundamental caso o utilizador seja membro do grupo Administrators.

apostilando.com 14
No painel Web Site é possível especificar a sua descrição, IP Address da placa de rede, o
port usado pelo serviço Web (por omissão, é o port 80), indicar o número de conexões
simultâneas permitidas e ligar/desligar o ficheiro de registos de segurança (data, tempo,
IP, browser, protocolo e username do cliente, status do pedido, número de bytes enviados
e recebidos, tipo de recurso acedido pelo cliente…) do IIS segundo quatro formatos:
Microsoft Logging, NCSA Logging, Extended Logging e ODBC Logging.

Finalmente, o painel Documents permite indicar quais os ficheiros que suportam a home
page do site (normalmente, costuma ser default.htm ou o default.asp). Além disso, é
possível especificar o documento de rodapé (opção Enable Document Footer) para ser
adicionado a todas as páginas Web. Normalmente, especifica-se neste ficheiro informação
estática como copyrights ou nomes e telefones de contacto.

1.7 Directório Virtual

O conceito de directório virtual é relativamente simples e muito útil para quem


administra um site Web. Assim, o seu objectivo é de criar um nome ou alias que
representará um determinado caminho (path) na estrutura de directórios existente
localmente ou num computador remoto. Imagine que o utilizador quer disponibilizar
todos os ficheiros do directório c:\users\cristina\temp sem querer alterar a configuração
do seu site que se localiza em d:\InetPub\wwwroot. Para isso, basta criar um directório
virtual no site em causa (cristina, por exemplo) associado ao directório
c:\users\cristina\temp. Qualquer referência ao directório virtual
(http://www.site.com/cristina) significa aceder directamente ao directório acima referido.

apostilando.com 15
No exemplo seguinte, visualiza-se a criação de um directório virtual designado d464
através da opção Action/New/Virtual Directory no site http://biblio. isegi.unl.pt. Acontece
que o directório a disponibilizar encontra-se num outro computador (Isegi01) sendo
obrigatório necessário indicar a path completa segundo a norma UNC.

Uma vez que este directório pertence ao utilizador d464 do domínio ISEGI, é necessário
indicar a password de autorização de acesso.

Finalmente, indica-se quais as permissões de acesso ao directório virtual (por defeito, são
o Allow Read Access e o Allow Script Access). Como mostra a figura seguinte, o site
biblioteca, situado no computador webalunos, apresenta o directório virtual d464
localizado num outro computador, Isegi01. Visto ter sido dado o privilégio Directory
Browsing Allowed, é possível visualizar todo o seu conteúdo à custa do URL
http://biblio.isegi.unl.pt/d464. Caso se queira aceder ao ficheiro page1.htm, bastaria
escrever http://biblio.isegi.unl.pt/d464/page1.htm. Contudo, tenha cuidado se acciona o
privilégio Write pois é possível instalar software por parte de qualquer cliente no
directório em causa.

apostilando.com 16
1.8 Instalação de um FTP Site

A criação de um servidor de FTP é similar ao apresentado no sub capítulo 1.5.


Consequentemente, o primeiro passo é a descrição do site, FTP Biblioteca neste caso
particular. O passo seguinte é a selecção do endereço IP da placa de rede e do port 21
necessário nas comunicações WinSockets API. O terceiro passo traduz-se na localização
do directório raiz, c:\InetPub\ftproot\Biblioteca, e quais as permissões associadas, isto é,
Allow Read Access e/ou Allow Write Access. Note-se que não é possível ter dois FTPs
sites no mesmo IIS com o mesmo port.

Uma das propriedades a salientar é as mensagens onde é possível inserir uma mensagem
que se associará quando o utilizador precisar de contactar o site em causa.

apostilando.com 17
Uma outra possibilidade é criar o utilizador anonymous de modo a obter-se acesso a
conteúdos restritos do site em causa. Por defeito, o username criado designa-se
IUSR_computername (no nosso caso particular chama-se IUSR_webalunos) ao qual é
dado direitos de logon local.

Este account anonymous é criado automaticamente pelo sistema e sendo possível ser
verificado pelo User Manager For Domains do Windows Server (actual Active
Directory). Note-se que este utilizador especial deve pertencer ao grupo local Guests
como também não deve ter assignado uma password (ver figura anterior).

Em termos do ponto de vista do utilizador final, é possível aceder aos conteúdos de um


serviço de FTP de dois modos: 1) Web browser como o Internet Explorer, Mozilla ou o
Ophra. 2) Programa tradicional de FTP como o WS_FTP (ver figuras seguintes).

apostilando.com 18
1.9 Monitorização da Performance do Web Server

O Windows Server apresenta algumas ferramentas que permite verificar a performance do


servidor do IIS tais como o Task Manager, Performance Monitor, Network Monitor (não
faz parte da instalação standard do Windows NT ) e Server Manager.

O Task Manager (taskmgr.exe) permite obter uma visão rápida do sistema,


nomeadamente o CPU e a memória RAM usada. É subdividido por três tabulações:
• Applications (programas do utilizador em estado Running)

• Processes (nome do processo, PID, tempo de CPU e memória usada)

• Performance (estado corrente e histórico do CPU e memória usada).

apostilando.com 19
O utilitário Performance Monitor é acessível através das opções Start/Programs
/Admnistrative Tools/Performance Monitor na qual é possível seleccionar objectos,
instâncias (número de ocorrências de objectos) e counters (características mensuráveis do
objecto seleccionado). Além disso, é possível accionar a opção alert, quando associado a
objectos, para informar o administrador de situações de alerta.

Apresentam-se, de seguida, os objectos/counters mais importantes para um administrador


de sistemas:
• Cache Size - Tamanho da cache partilhada do http e do FTP.

• Cached Used - Quantidade de dados em cache incluindo listagem de directórios.

• Measured Async I/O Bandwidth Usage - Média do número total de bytes enviados
e recebidos pelo Web Server por minuto.

• Current Blocked Async I/O Requests - Número de pedidos bloqueados e retidos


em buffer para um pós-processamento.

• Total Files Transfered - Número de ficheiros enviados e recebidos pelo Web


Server desde que o serviço começou.

• Bytes Sent Per Second - Rácio de bytes enviados pelo servidor Web.

• Bytes Received Per Second - Rácio de bytes recebidos pelo servidor Web.

• Total CGI Requests - Número de pedidos CGIs desde que o serviço começou.

• Total Method Requests - Número de pedidos HTTP DELETE, GET, HEAD,


POST, PUT, e TRACE.

apostilando.com 20
• Logical Disk - Percentagem de espaço livre no disco.

O Windows Server Manager (Start/Programs/Admninistrative Tools) apresenta ainda


duas vertentes: Gerir recursos do Server e visualizar informação actualizada dos recursos
partilhados entre servidores (Users, Shares, In Use, Replication, Alerts).

apostilando.com 21
2
2.1 Introdução
Active Server Pages (Part I)

Active Server Pages (ASP) é uma aplicação Web Server-Side da Microsoft e que permite
desenvolver programas interactivos para a Internet utilizando diversas tecnologias como
a Object Linking and Embedding (OLE), ActiveX, Active Data Objects, Visual Basic,
Perl, VBScript (linguagem por defeito), Jscript e a Open Database Connectivity (ODBC).
Isto significa que as ASPs permitem o acesso a bases de dados via ODBC e ADO como o
Access ou o SQL Server.

Por outras palavras, uma aplicação ASP é uma tecnologia Server-Side que pode conter
código HTML, delimitadores scripts com código VBScript ou Jscript, componentes
ActiveX e outros acessórios. Note que o cliente Web nunca poderá aceder ao código ASP
original mas apenas ao seu resultado em HTML gerado pelo servidor.

apostilando.com 22
Não sendo necessário compilar o código criado, uma ASP é uma componente Data
Library Linked (DLL) instalada no servidor Web que processa ficheiros .ASP,
complementado as aplicações client-side escritas, também, em linguagens scripts.

Server-side significa que o cliente conecta-se ao servidor Web a pedir um documento.


Caso seja um script ASP, o Web Server executa localmente o código e reenvia o
respectivo output ao cliente em formato HTML. Neste momento, a conexão é terminada.

Para uma melhor utilização desta tecnologia, convém utilizar o Windows Server com IIS
por motivos de performance e segurança. A construção destas aplicações podem ser
realizadas pelo Frontpage, Visual InterDev ou o Dreamweaver. No entanto e por motivos
didácticos, todo o código será construído a partir do editor de texto Notepad onde o
código ASP é inserido no meio de código HTML e delimitado pelos delimitadores <% e
%>. Não se esqueça que o directório que contêm o código ASP deve ser atribuído a
permissão de Script ou Execute pelo IIS.

Analise-se o primeiro exemplo de ASP deste capítulo e o respectivo output. Contudo,


pede-se ao leitor que consulte informação respeitante complementar ao VBScript e às
ASPs como o excelente livro da SAMS Teach Yourself, Active Server Pages 2.0 In 21
Days.

<%@ LANGUAGE="VBScript" %>


<HTML>
<HEAD><TITLE>Exemplo 1 (http://biblio.isegi.unl.pt/d464/exemplo1.asp)
</TITLE></HEAD>
<BODY BGCOLOR="FFFFAA">
<HR>
<%= "Hora Local: " & Time & " do dia " & FormatDateTime (date,vblongDate) %>
<HR>
<%
If Request.form.Item("nome")="" Then
%>
<FORM method=POST action="exemplo1.asp" name="tipos_de_carro">
Indique o seu nome: <INPUT name=nome><BR>
<INPUT name=tipo value=1 type=radio checked> Luxuoso <BR>
<INPUT name=tipo value=2 type=radio checked> Desportivo <BR>
<INPUT name=tipo value=3 type=radio checked> Descapotável <BR>
<INPUT type=submit> <INPUT type=reset>
</FORM><HR>
<%
Else
Select Case Request.Form.Item("tipo")
Case 1 : Response.Write (Request.form.Item("nome") & " prefere carros do
tipo Luxuoso")

apostilando.com 23
Case 2 : Response.Write (Request.form.Item("nome") & " prefere carros do
tipo Desportivo ")
Case 3 : Response.Write (Request.form.Item("nome") & " prefere carros do
tipo Descapotável ")
End Select
End If
%>
<P><A HREF="exemplo1.asp"> Clique aqui para recomecar a aplicação </A>
</BODY>
</HTML>

Antes de tudo, convêm ter sempre presente que o código de scripting deve estar
delimitado pelas tags <% e %>, o que não acontece obviamente com o código HTML.
Alem disso, a primeira linha de código poderia ser dispensável visto, por defeito, a
linguagem de script ser o VBScript.

Em termos de delimitadores nas ASPs, existem três tipos principais a saber:


• <% Instruções ASPs %>

apostilando.com 24
o <% Dim NumeroLinhas %>

• <%= Visualizar calculos de resultados ou conteúdos de variáveis no meio de


código de HTML %>
o <%= FormatDateTime(Data,vbLongDate) %> (equivalente a <%
Response.Write FormatDateTime(Data,vbLongDate) %>)

• Definição dos blocos ASPs e da linguagem de Scripting


o <SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT>……… </SCRIPT>

Do exemplo anterior, apresenta-se de seguida mais alguns detalhes importantes a reter


pelo leitor:
• O parâmetro RUNAT=SERVER é fundamental na medida em que indica que o
Script deve ser executado pelo servidor. Caso contrário, os comandos são
embebidos no ficheiro de HTML e enviados ao browser para posterior execução.

• É possível usar duas linguagens de scripting: VBScript e Jscript.

• O Netscape browser não suporta VBScript nem objectos ActiveX.

• Os testes de ficheiros .ASP devem ser realizados num servidor com o Internet
Information Server.

• Evite o uso de gráficos grandes e complexos como o uso de gráficos para


background da página Web. Mais, tente evitar o uso de Java Applets (<applet>…
</applet>) e controlos ActiveX.

• As funções criadas pelo utilizador DataJscript Function e DataVBScript Function


são chamadas pela função Call.

• A instrução For var=x to y <Instructions> Next permite executar interactivamente


um conjunto de instruções y-x vezes.

• O mesmo se passa com a estrutura Do...Loop Until Condition.

• A instrução condicional segue a seguinte sintaxe: If condition Then <Instructions>


Else <Instructions> End If.

• Similar à anterior, tem-se Select Case Variable…End Select.

O próximo exemplo contêm um conjunto de instruções que permite testar a validação de


datas.

<%@ LANGUAGE=VBScript %>


<HTML><HEAD><TITLE>Validação das Datas</TITLE></HEAD>

apostilando.com 25
<BODY bgcolor=lightgoldenrodyellow>
<P><CENTER><STRONG><FONT color=#006633 face="Comic Sans MS" size=5
style="BACKGROUND-COLOR:#ccff99"> </FONT> </STRONG>
</CENTER><P>
<%
Dim Data
If (Request.Form.Item("Dia")="" OR Request.Form.Item("Mes")="" OR
Request.Form.Item("Ano")="") Then %>
<FORM method=POST action=validacao_datas.asp name=validacao_
data_Form>
Indique o Dia: <INPUT name=dia><BR>
Indique o Mês: <INPUT name=mes><BR>
Indique o Ano: <INPUT name=ano><BR>
<INPUT type=submit name=submit1>
<INPUT type=reset name=reset1>
</FORM>
<% Else
Data=Request.Form.Item("dia") & "/" & Request.Form.Item("mes") & "/" &
Request.form.Item("ano")
If IsDate(Data) Then %> <HR> <%
Response.write("Data Válida") %><P><%
Else %> <HR> <%
Response.Write("Data Inválida") %><P><%
End If
End If
%>
<A HREF="validacao_datas.asp"> Clique aqui para recomeçar a aplicação </A>
</BODY>
</HTML>

Note que neste exemplo académico, a concatenação de strings e variáveis do Form à


variável Data é conseguida pelo símbolo &. Duas das funções relativas ao factor tempo
em VBScript são o Now() que retorna a data corrente e o Weekday() que determina o dia
da semana como Domingo ou Sábado. Assim, a resposta ao input indicado acima, a

apostilando.com 26
resposta da ASP seria Data Válida. Caso se indicasse alguns caracteres alfabéticos sem
qualquer sentido, a resposta passaria a ser o output seguinte:

2.2 Forms

Virtualmente, é possível obter informação do utilizador, à semelhança da função


InputBox() do Vbasic, através dos famosos Forms do HTML por dois métodos:
• GET especificado pela sintaxe <FORM METHOD="GET"...</FORM>

• PUT especificado pela sintaxe <FORM METHOD="PUT"… </FORM>

O método GET permite uma transferência de informação de 2048 bytes e que poderá ser
determinado pelo método Request.QueryString() cujo argumento será o nome do campo
atribuído no Form. Analise o seguinte exemplo e note as seguintes três particularidades:
• O parâmetro ACTION indica o nome do próprio ficheiro ASP onde se insere o
próprio Form.

• A instrução <% If Request.QueryString("nome-do-campo")=""…Else…End If%>


vai permitir que o mesmo ficheiro sirva de cliente (introdução dos dados) e
servidor (tratamento e resposta desses mesmo dados) simultaneamente.

• Os dados do cliente fazem parte do endereço de URL da aplicação ASP.

<%@ LANGUAGE=VBScript %>


<HTML>
<HEAD><TITLE>Entrada de dados pelo método GET
(http://biblio.isegi.unl.pt/formget.asp) </TITLE></HEAD>
<BODY>
<P><FONT face="Comic Sans MS" size=4 style="BACKGROUND-COLOR:
#ffaaff">
<% If Request.QueryString("passatempo")="" Then %>
<FORM method=get action=formget.asp>

apostilando.com 27
Indique qual o seu passtempo preferido :
<INPUT name=passatempo>
<P><INPUT type=submit value=" Pressione este butão " name=submit1>
<INPUT type=reset value=" Reinincializar Form " name=reset1>
<% else %>
<HR><%= " O seu passatempo preferido é " & Request.QueryString ("passatempo")
& ", seu malandro ! " %><HR>
<P><A href="formget.asp"> Clique aqui para recomeçar a aplicação </A>
<% End If %>
</FORM>
</BODY>
</HTML>

Em termos do método PUT, as diferenças a assinalar no exemplo anterior é a presença do


método Request.Form.Item() que permite obter o conteúdo das variáveis em causa. O
exemplo seguinte permite obter o factorial de um número que é fornecido pelo utilizador
através do método acima referido. Note que caso não seja indicado qual a linguagem de
scripting, a linguagem por defeito é o VBScript.

<HTML>
<HEAD><TITLE>Factorial de um número utilizando o método POST
(http://biblio.isegi.unl.pt/factorialpost.asp) </TITLE></HEAD>
<BODY>
<P>
<% If Request.Form("factorial")="" Then %>

apostilando.com 28
<FORM method=post action=factorialpost.asp>
Indique um número : <INPUT name=factorial>
<P><INPUT type=submit value=" Pressione este butão " name=submit1>
<INPUT type=reset value=" Reinincializar Form " name=reset1>
<%
ElseIf IsNumeric(Request.Form.Item("factorial")) Then
mensagem=" O seu factorial é "
fact=1
For contador=1 to Request.Form.Item("factorial")
fact=fact*contador
Next %>
<%= mensagem %> <%= fact%>
<%
Else
Response.Write ("O seu input não é válido!")
End If %>
<P><A href="factorialpost.asp"> Clique aqui para recomeçar a aplicação </A>
</FORM>
</BODY>
</HTML>

Analisando o programa anterior, tem-se:


• A função IsNumeric() permite validar a entrada dos dados pelo campo factorial
pertencente ao Form.

• As variáveis alfanuméricas são inicializadas entre ASPs.

• A função Request.Form.Item() permite obter o conteúdo da variável que se


apresenta como argumento.

• A função Response.Write() visualiza a mensagem que estiver no seu argumento.

apostilando.com 29
Caso o utilizador digite um conjunto de caracteres, a validação dos dados é feita
respondendo o sistema com o seguinte output:

2.3 Ficheiros de Texto

Uma das outras características importantes das ASPs é o acesso a ficheiros ASCII
situados no disco do servidor através da componente text stream. Esta componente utiliza
o objecto FileSystem para ler (método OpenTextFile) e escrever (método CreateTextFile)
texto no ficheiro em causa. A sua inicialização é feita à custa do comando Set
FileStreamObject = CreateObject (“Scripting.File SystemObject”).

Como qualquer linguagem que manipule ficheiros de texto, também as ASPs contêm um
conjunto de propriedades que convêm salientar:
• AtEndOfLine – Determina fim de linha quando se lê caractere a caractere com o
método Read.

• AtEndOfStream – Determina se é ou não fim de ficheiro.

• Column – Especifica o número de caracteres lidos desde o inicio da linha.

• Line – Indica o número de linhas lidas até aqui.

apostilando.com 30
Em termos dos métodos do objecto TextStream, apresenta-se a seguinte lista de métodos e
respectiva breve explicação:
• Read – Usado para leitura de um carácter de cada vez.

• ReadLine – Utilizado para leitura de uma linha inteira.

• Write – Escreve uma string mas não incluindo o carriage return.

• WriteLine – O mesmo que o comando anterior mas incluindo o carriage return.

• Skip – Salto de um conjunto de caracteres.

• SkipLine – Salto para a próxima linha.

O exercício seguinte tenta mostrar a possível utilidade do acesso a ficheiros pelas ASPs.
O método OpenTextFile permite usar o ficheiro Noticias.txt que reside na raiz do servidor
http://biblio.isegi.unl.pt. O segundo parâmetro permite indicar que será feita uma leitura
sobre o ficheiro. Caso o valor fosse 2 então teria-se um acesso de escrita. Não se esqueça,
também, que o directório onde reside o ficheiro a aceder deve conter os privilégios de
direito (Read, Write, Execute, Delete, Take Ownership ou Change Permission). Caso o
cliente Web que, por defeito, pertence ao grupo Everyone não lhe for assignado
privilégios de acesso ao directório onde reside o ficheiro em causa, o código de erro de
acesso será visualizado.

Note que a base de dados biblioteca.mdb e todos os ficheiros ASPs a seguir descritos
localizam-se, a partir deste momento, em c:\InetPub\wwwroot\GSTI\D464 (por motivos
de acesso local, contem um sharing designado testes) enquanto a home directory do site
http://biblio.isegi.unl.pt reside em c:\InetPub\wwwroot\GSTI no computador webalunos.
Isso significa que o antigo directório virtual remoto, d464 situado em

apostilando.com 31
\\Isegi01\alunos\d464\temp, foi modificado para o directório local
c:\InetPub\wwwroot\GSTI\D464 (repare que nada mudou para o URL do cliente mas
simplesmente para o administrador de sistemas).

<%@ LANGUAGE="VBScript" %>


<HTML>
<HEAD> <META HTTP-EQUIV="Content-Type" content="text/HTML">
<TITLE>Exemplo 1 (http://biblio.isegi.unl.pt/d464/Leitura_ficheiro.asp) </TITLE>
</HEAD>
<BODY BGCOLOR="FFFFAA">
<%
Set FileStreamObject = CreateObject("Scripting.FileSystemObject")
Set leitura = FileStreamObject.OpenTextFile(Server.MapPath("/") & "\Noticias.txt",1)
While not leitura.AtEndOfStream
Response.Write leitura.ReadLine
Wend
leitura.close
%>
</BODY>
</HTML>

Como seria de esperar, o output desta ASP é o seguinte e que representa a visualização do
conteúdo do ficheiro noticias.txt.

2.4 O Objecto Request

Quando um utilizador se conecta a uma página HTML num servidor Web, um conjunto de
informações (variáveis Server) sobre a transacção está disponível através do objecto
Request cuja sintaxe é a seguinte: Request.ServerVariables ("Nome_da_ Variável").
Analise-se agora o seguinte script e o respectivo output:

<%@ LANGUAGE="VBScript" %>


<HTML>

apostilando.com 32
<HEAD>
<TITLE>http://biblio.isegi.unl.pt/d464/request.asp</TITLE></HEAD>
<BODY BGCOLOR="AAFFFF">
<CENTER><H2>Aceder às variáveis de ambiente do SERVER através do
Request.ServerVariables("Nome da variável")</H2></CENTER>
<P><HR><P>
<% For each variavel In Request.ServerVariables %>
<P><H3><%= variavel %></H3>&nbsp;&nbsp;&nbsp;
<%= Request.ServerVariables(variavel) %><BR>
<% Next %>
<P><HR>
</BODY>
</HTML>

Associado ao ciclo For…Each…Next, este visualiza os valores das variáveis do servidor


onde o método Request.ServerVariables é fundamental. O significado das variáveis mais
importantes são:
• CONTENT_TYPE - Indica o tipo de objectos (MIME content types) associados à
transferência (HTML, Word, GIFs…).

• HTTP_ACCEPT - Menciona os objectos suportados pelo Web browser.

• HTTP_USER_AGENT - Web browser usado pelo cliente.

• PATH_INFO - Relata os parâmetros de input pelo programa.

• PATH_TRANSLATED - Mostra a Pathname completo do Script ASP.

apostilando.com 33
• QUERY_STRING - Quando o script usa o método GET no Form, esta variável
contem as variáveis e respectivos valores introduzidos pelo cliente.

• REMOTE_ADDR - Refere o endereço IP do cliente.

• REQUEST_METHOD - Indica o método (HEAD, POST, GET, PUT) de chamada à


ASP.

• SERVER_NAME - Relembra o nome do servidor da ASP chamada.

• SERVER_PORT - Declara o número do port usado pelo http que, normalmente, é


80.

• SERVER_SOFTWARE - Afirma o nome do software instalado pelo servidor Web da


ASP invocada.

Um exemplo típico do uso destas variáveis poderia ser o teste do endereço IP associado
ao cliente para uma visualização ou não de uma página de HTML. Apesar de não ser um
teste rigoroso de segurança, pois é possível ao cliente mudar o seu verdadeiro endereço
IP, mostra-se a seguir, a titulo de exemplo, uma possível aplicação do uso destas
variáveis do sistema:

<%@ LANGUAGE="VBScript" %>


<HTML>
<HEAD>
<TITLE>http://biblio.isegi.unl.pt/d464/seguranca.asp</TITLE></HEAD>
<BODY BGCOLOR="AAFFFF">
<CENTER><H2>Testar o endereço IP do Cliente através do Request.
ServerVariables("REMOTE_ADDR")</H2></CENTER>
<P><HR><P>
<%
If Request.ServerVariables("REMOTE_ADDR") = "193.136.119.10" Then %>
<CENTER><Img SRC="sapo_generico.gif"></CENTER>
<% Else
Response.write "Não está autorizado a Visualizar a imagem do milénio!!!"
End If %>
<P><HR>
</BODY>
</HTML>

Neste exemplo, a imagem sapo_generico.gif só poderá ser visualizado se o IP do cliente


for o 193.136.119.10. Caso contrário, a mensagem "Não está autorizado a visualizar a
imagem do milénio!!!" será visualizada (ver figuras seguintes).

apostilando.com 34
2.5 Introdução ao Acesso a Bases de Dados em Ambiente Web

O objectivo desta secção e da próxima será a utilização de ASPs no acesso a uma base de
dados em MS-Access (biblioteca.mdb) de modo a obter-se uma solução Web. Só não se
esqueça que o Microsoft Access apenas permite até 10 conexões simultâneas o que não
acontece com o Microsoft SQL Server.

Após a criação da base de dados, é necessário criar o File Data Source Name (os dados
são guardados num ficheiro de texto) ou o System Data Source Name (a informação é
guardado no Windows Registry). Neste caso, optou-se pela segunda opção e isso é
conseguido pela opção Start/Settings/Control Panel/ODBC Data Sources. Note que a
criação de um ODBC para uma base de dados em MS-Access é obrigatório na presença
do device drive (ver figura seguinte). Relembra-se que a base de dados biblioteca.mdb e
todos os ficheiros ASPs mencionados localizam-se, neste momento, em
c:\InetPub\wwwroot\GSTI\D464 e a home directory do site http://biblio.isegi.unl.pt reside
em c:\InetPub\wwwroot\GSTI.

apostilando.com 35
Criado o driver ODBC para a BD, uma possível solução Web para visualização de todos
os registos desta seria a seguinte ASP. Repare que após a criação do Open Data Base
Connectivity através de componentes ActiveX Data Objects (ADO) entre a base de dados
biblioteca.mdb e a ASP a criar (Set MyConnection=Server.CreateObject
("ADODB.Connection") e MyConnection .Open "DSN=BibliotecaODBC", "","")), é
necessário criar o seguinte objecto temporário de modo a reter os registos resultantes da
selecção a fazer: Set MyRS=Server.CreateObject("ADODB.Recordset"). A instrução
MyRS.Open "livros",MyConnection,,,0 permite aceder à tabela livros com a instancia
criada MyConnection e, finalmente, o aparecimento do ciclo While…wend permite
visualizar o conteúdo da tabela livros no browser do cliente. A tradução desta explicação
resume-se à seguinte listagem e respectivo output:

<HTML>
<HEAD><TITLE>ACESSO À BASE DE DADOS MICROSOFT BIBLIOTECA.MDB
DO SERVIDOR HTTP://BIBLIO.ISEGI.UNL.PT /D464/LIVROS.ASP
</TITLE></HEAD>
<BODY>
<%Set MyConnection=Server.CreateObject("ADODB.Connection")
MyConnection.ConnectionTimeout=15
MyConnection.CommandTimeOut=30
MyConnection.Open "DSN=BibliotecaODBC","",""
Set MyRS=Server.CreateObject("ADODB.Recordset")
MyRS.Open "livros",MyConnection,0,1,2
While not MyRS.EOF%>
<b>LIVRO ID:</b> <%=MyRS("LIVROID") %></P>
<b>TITULO:</b> <%=MyRS("TITULO") %></P>
<b>PUBLICAÇÃO:</b> <%=MyRS("PUBLICACAO") %></P>
<b>PREÇO:</b> <%=MyRS("PRECO") %><P>
<b>PRATELEIRA:</b> <%=MyRS("PRATELEIRA") %></P>

apostilando.com 36
<HR>
<% MyRS.MoveNext
wend%>
<P>Obrigado!!
<P><A href="biblioteca_web.htm"> Menu Principal </A></FORM>
<P><hr></BODY></HTML>

2.6 Construção de uma Aplicação Web com ActiveX Data Object

ActiveX Data Objects é um grupo de objectos criados para facilitar a interface de


programação com bases de dados como o Access e, de certo modo, similar às tecnologias
DAO (Data Access Objects) e RDO (Remote Data Objects). Entretanto, a Microsoft
resolveu criar o OLE DB, uma interface que permite trabalhar com qualquer tipo de
dados mesmo que não sigam o formato da forma tradicional tabular. Acontece que esta
tecnologia é complexa e na tentativa de ultrapassar esta dificuldade, a Microsoft criou o
ADO, uma versão simples e condensada do OLE DB, constituída por três objectos
principais:
• Connection que permite estabelecer a conexão com a base de dados. Open() e
Close() são os métodos usados pelos pelas ASPs. Outras propriedades importantes
deste objecto são:
o Connectionstring - Informação mandatória no estabelecimento de uma
ligação a uma BD.
o ConnectionTimeout - Tempo máximo de espera que o método Open deve
esperar pela resposta da BD.

<%
Dim Connection
Set Connection=Server.CreateObject("ADODB.Connection")

apostilando.com 37
Connection.Open "DSN=bibliotecaODBC","",""
……
Connection.Close
%>

• Command representa uma instrução que recairá sobre a base de dados como um
procedimento ou uma simples instrução SQL. As propriedades mais importantes
são:
o CommandText - Item que guarda a instrução SQL.
o Execute - Efectua o comando no data provider.

• Recordset é o sub-conjunto de registos de uma base de dados. Os métodos mais


importantes são:
o Addnew - Criação de um novo registo vazio.
o Update - Guarda as novas alterações realizadas no registo corrente.
o MoveNext - Deslocamento para o próximo registo no recordset.
o MovePrevious - Deslocamento para o registo anterior no recordset.
o MoveFirst - Deslocamento directo para o primeiro registo do recordset.
o MoveLast - Deslocamento directo para o último registo do recordset.
o Delete - Apagamento do registo corrente.
o Save - Necessita como parâmetro o nome do ficheiro para salvaguardar o
corrente recordset.

Guardando a teoria e salvaguardando a prática, inicie-se pela criação da seguinte página


Web:

apostilando.com 38
<HTML><head><title>Biblioteca Web</title></head>
<body>
<p align="center"><b><FONT color="#FF0000" size="5" face="Abadi MT
Condensed">Biblioteca Web</font></b></p>
<p><HR><a href="http://biblio.isegi.unl.pt/d464/livros.asp">Consulta de todos os
livros</a>
<P><a href="http://biblio.isegi.unl.pt/d464/apagarlivros.asp">Apagar livros por
Livro ID</a>
<p><a href="http://biblio.isegi.unl.pt/d464/pesquisalivros.asp">Pesquisa de livros
por assuntos</a>
<p><a href="http://biblio.isegi.unl.pt/d464/comentarios.ASP > Comentarios ao
serviço bibliotecário</a><HR>
</body>
</HTML>

Por motivos didácticos, foi criada uma nova tabela designada comentários e o respectivo
Form na base de dados biblioteca.mdb cuja estrutura se visualiza a seguir:

Inicie-se pela inserção de registos nesta tabela através do seguinte Form:

apostilando.com 39
<HTML>
<head><title>Biblioteca do ISEGI</title></head>
<body>
<hr><p align="center"><b><foNT color="#0000FF" size="6">Biblioteca do
ISEGI-UNL</font></b></p>
<form method="POST" action="comentarios.asp">
<p align="left"><b>Nome Completo:&nbsp; </b><input type="text" name="T1"
size="41"></p>
<p align="left"><b>Email:&nbsp; </b>
<input type="text" name="T2" size="41"></p>
<p align="left"><b>Comentário:</b></p>
<p align="left">&nbsp;
<textarea rows="4" name="S1" cols="64"></textarea></p>
<p align="center"><input type="submit" value="Submit" name="B1"><input
type="reset" value="Reset" name="B2"></p>
</form>
<p><b><font size="3">Obrigado.</font></b></p>
<hr>
</body>
</HTML>

Não se esqueça dar privilégios ao grupo Everyone de escrita à base de dados


biblioteca.mdb o direito de Write através da opção Security/File Permissions.

apostilando.com 40
Em termos de HTML, é uma estrutura muito simples constituída por dois campos de
texto, T1 e T2, e uma área de texto de quatro linhas e sessenta e quatro caracteres de
nome S1. O Active Server Page que irá receber os três inputs designa-se comentarios.asp
e que se descreve a seguir.

Em termos de VBScript, analise-se os pontos mais importantes da ASP em causa:


• É necessário que os três campos sejam preenchidos para uma introdução da
informação na BD (traduzido na primeira instrução If).

• A criação de três variáveis: Conn, Resultado e SQL.

• Estabelecimento de uma ligação com a base de dados com as instruções Set Conn
e Conn.Open. A classe ID ADODB.Connection é imperativa para indicar qual o
objecto a criar enquanto o método Open necessita o parâmetro DSN da base de
dados.

• A criação do objecto Resultado do tipo Recordset. Para isso, são necessários dois
passos: As instruções Set Resultado=Server.CreateObject e Resultado.Open.

• As cinco instruções seguintes têm como propósito criar um registo novo mas vazio
que será preenchido pelos conteúdos introduzidos pelo utilizador.

• Se o recordset não estiver vazio é possível aceder ao conteúdo de campos através


do comando <Nome do Recordset>("<Nome do campo>"). Por exemplo:
Resultado.Fields.Item("email").Value.

• Não é necessário preencher o campo comentarioID porque este atributo é auto


incremental.

apostilando.com 41
<%@ LANGUAGE=VBScript %>
<HTML>
<head><title>Biblioteca do ISEGI</title></head>
<body><hr>
<%
If Request.Form("T1")="" OR Request.Form("T2")="" OR Request.Form("S1")=""
Then %>
<p align="center"><b><font color="#0000FF" size="6">Biblioteca do ISEGI-
UNL</font></b></p>
<form method="POST" action="comentarios.asp">
<p align="left"><b>Nome Completo:&nbsp; </b><input type="text" name="T1"
size="41"></p>
<p align="left"><b>Email:&nbsp; </b><input type="text" name="T2"
size="41"></p>
<p align="left"><b>Comentários: </b></p>
<p align="left">&nbsp;<textarea rows="4" name="S1"
cols="64"></textarea></p>
<p align="center"><input type="submit" value="Submit" name="B1"><input
type="reset" value="Reset" name="B2"></p>
</form>
<%
Else
Dim Conn
Dim Resultado
Dim SQL
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionTimeout=10
Conn.CommandTimeOut=20
Conn.Open "DSN=BibliotecaODBC","",""
Set Resultado = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM comentarios"
Resultado.Open SQL, Conn, 1, 2
Resultado.AddNew
Resultado("nome") = Request.Form("T1")
Resultado("email") = Request.Form("T2")
Resultado("comentario") = Request.Form("S1")
Resultado.Update
Conn.Close
End If %>
<P>Obrigado!!
<P><A href="comentarios.asp"> Clique aqui para recomeçar a aplicação </A>
<P><A href="biblioteca_web.htm"> Menu Principal </A></FORM>
<P><hr>
</body>
</HTML>

apostilando.com 42
A resposta ao cliente está simulada na seguinte imagem:

Uma outra opção do menu geral é apagar livros da BD pela Web através da introdução do
username (Admin) e de uma password (Pass-pASS), ambos case sensitive. Apesar de esta
informação estar digitada na ASP, não se esqueça que esta tecnologia é Server Side o que
significa que o cliente nunca poderá visualizar o código fonte e o username/password de
acesso. O script associado a este Form é o seguinte:

<HTML>
<head><title>Biblioteca do ISEGI</title></head>
<body>
<hr><%
If Request.Form("T1")="" OR Request.Form("T2")="" OR Request.Form("T3")=""
Then %>
<p align="center"><b><foNT color="#0000FF" size="6">Biblioteca do ISEGI-
UNL</font></b></p>
<form method="POST" action="apagarlivros.ASP">
<p align="left"><b>Username:&nbsp; </b><input type="text" name="T1"
size="20"></p>
<p align="left"><b>Password:&nbsp; </b><input type="password" name="T2"
size="20"></p>
<p align="left"><b>Livro ID:&nbsp; </b><input type="text" name="T3"
size="4"></p>
<p align="center"><input type="submit" value="Submit" name="B1"><input
type="reset" value="Reset" name="B2"></p>
</form>
<%
Else If Request.Form("T1")="Admin" AND Request.Form("T2")="Pass-pASS" Then
Dim Conn
Dim Resultado
Dim SQL

apostilando.com 43
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionTimeout=10
Conn.CommandTimeOut=20
Conn.Open "DSN=BibliotecaODBC","",""
Set Resultado = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM livros WHERE livroID = CInt(' " &
Request.Form.Item("T3") & " ') "
Resultado.Open SQL,Conn,1,2
If Resultado.Recordcount=1 Then
Resultado.Delete
Response.Write("Registo apagado. Obrigado!!")
Else
Response.Write("Registo não apagado por não existir. Obrigado!!")
End If
Resultado.Close
Conn.Close
End If
End If %>
<P><A href="apagarlivros.asp"> Clique aqui para recomeçar a aplicação </A>
<P><A href="biblioteca_web.htm"> Menu Principal </A></FORM>
<P><hr>
</body></HTML>

Caso o LivroID mencionado pelo utilizador não exista então a mensagem de aviso é a
seguinte:

apostilando.com 44
Esta capacidade é testada pela propriedade Recordcount que indica o número de registo
contidos no recordset. Caso não seja um então é porque o livroID não faz parte do
recordset e, consequentemente, da base de dados.

Finalmente, a pesquisa de livros por assuntos torna-se, em última análise, um script muito
parecido com o apresentado na secção anterior. A diferença traduz-se no comando Select
em que se destaca o parâmetro like permitindo uma selecção de todos os campos dos
registos em que os conteúdos dos parâmetros de entrada façam um match com os
respectivos campos das tabelas/queries.

<HTML>
<head><title>Pesquisa de Livros por Assuntos</title></head>
<body>
<p align="center"><foNT color="#000080" size="4"><b>Pesquisa de Livros por
Assuntos</b></font></p>

<% If Request.Form.Item("assunto")="" Then %>


<form method="POST" action="pesquisalivros.asp">
<p align="center">Escolha o assunto: <select size="1" name="assunto">
<option>GEOGRAFIA</option>
<option>COMPUTADORES</option>
<option>FRANCES</option>
<option>MUSICA</option>
<option>GEOLOGIA</option>
</select></p>
<p align="center"><input type="submit" name="submit"></p>
<%
Else
Dim Conn
Dim Resultado
Dim SQL

apostilando.com 45
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionTimeout=10
Conn.CommandTimeOut=20
Conn.Open "DSN=BibliotecaODBC","",""
Set Resultado = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM livros_por_assuntos WHERE descricao like '" &
"%%" & Request.Form.Item("assunto") & "%%" & "' "
Resultado.Open SQL,Conn,1,2
Do While Not Resultado.EOF
Response.Write "<P><HR>"
Response.Write " Assunto: "
Response.Write Resultado("descricao")
Response.Write " Livro ID: "
Response.Write Resultado("LivroID")
Response.Write " Titulo: "
Response.Write Resultado("Titulo")
Response.Write " Prateleira: "
Response.Write Resultado("Prateleira")
Resultado.MoveNext
Loop
Conn.Close
End If %>
<P><A href="pesquisalivros.asp"> Clique aqui para recomeçar a aplicação </A>
<P><A href="biblioteca_web.htm"> Menu Principal </A></FORM>
</body>
</HTML>

Escolhido o assunto através de uma Combo Box simulada em HTML pelo seguinte
código...

<p align="center">Escolha o assunto: <select size="1" name="assunto">


<option>GEOGRAFIA</option>
<option>COMPUTADORES</option>
<option>FRANCES</option>

apostilando.com 46
<option>MUSICA</option>
<option>GEOLOGIA</option>
</select></p>

... a resposta pontual ao browser do cliente foi, neste caso, a seguinte:

2.7 Database Schemas

Uma outra capacidade do ActiveX Data Object é o método Connection. Assim, o


OpenSchem permite a possibilidade de obter informação dinâmica em run-time da
estrutura da base de dados como, por exemplo, mostrar as tabelas constituintes e
respectivos campos. Tudo isto é realizado através do ciclo Do While...Loop e da instrução
Tabelas.Filter = "Table_Type='Table'" que filtrará as tabelas principais. Como seria de
esperar, as últimas duas instruções do script é o fecho das ligações criadas.

<HTML>
<head><title>Exemplo do Open Schema</title></head>
<body>
<%
Dim Conn
Dim Tabelas
Dim Tabelacorrente
Dim TabelaSchema
Dim Campos
Dim SQL

TabelaSchema=20
Set Conn = Server.CreateObject("ADODB.Connection")
Set Tabelas = Server.CreateObject("ADODB.Recordset")
Set TabelaCorrente = Server.CreateObject("ADODB.Recordset")

apostilando.com 47
Conn.Open "bibliotecaODBC"
Set Tabelas = Conn.OpenSchema(TabelaSchema)
Tabelas.Filter = "Table_Type='Table'"

Do While Not Tabelas.EOF %>


<H2><%= Tabelas("Table_Name") %></H2>
<% SQL = "Select * From [" & Tabelas("Table_Name") & "] "
TabelaCorrente.Open SQL,Conn,1,2
For Each Field in Tabelacorrente.Fields
Response.Write "<H4>"
Response.Write Field.Name & "</H4>" & vbcrlf
Next
TabelaCorrente.Close
Tabelas.MoveNext
Loop

Tabelas.Close
Conn.close
%>

</body>
</HTML>

A figura seguinte mostra parte do output do run deste script (repare nas tabelas e
respectivos campos que os constituem).

apostilando.com 48
2.8 Envio de Correio Electrónico via ASPs

Este capítulo debruça-se sobre a capacidade de enviar correio electrónico a partir de


Active Server Pages utilizando o objecto CDONTS (Microsoft Collaboration Data
Objects for Windows Server). O Form abaixo visualizado nada apresenta de especial.
Constituído por campos do tipo INPUT e outro do tipo TEXTAREA que terão de ser
preenchidos obrigatoriamente, a resposta deste script denominado mail.asp é a simples
resposta "Mensagem Enviada. Obrigado". Contudo, esta mensagem não confirma que o
destinatário irá receber o mail pois o endereço de destino poderá simplesmente não
existir.

<%@ LANGUAGE=VBScript %>


<HTML>
<HEAD>
<TITLE>Envio de um Email por ASPs (http://biblio.isegi.unl.pt/d464/mail.asp)
</TITLE>
</HEAD>

<BODY>
<HR>
<% If Request.Form("FROM")="" OR Request.Form("TO")="" OR
Request.Form("MESSAGE")="" OR Request.Form("SUBJECT")="" Then %>

<FORM method=POST action=mail.ASP>


<P>
<B> From : <INPUT name=FROM size="40">
<P>
To : <INPUT name=TO size="40">
<P>
Subject : <INPUT name=SUBJECT size="60">
<P>

apostilando.com 49
<TEXTAREA ROWS="10" name="MESSAGE" cols="64">
</TEXTAREA></B><P>
<CENTER><INPUT type=submit><INPUT type=reset>
<P>(Note que é absolutamente necessário preencher todos os campos)</CENTER>
<% else
Dim MyMail
Set MyMail = Server.CreateObject("CDONTS.NewMail")
MyMail.From = Request.Form("FROM")
MyMail.To = Request.Form("TO")
MyMail.Subject = Request.Form("SUBJECT")
MyMail.BodyFormat = 1
MyMail.MailFormat = 0
MyMail.Importance = 0
MyMail.Body = Request.Form("MESSAGE")
MyMail.Send
Set MyMail = Nothing %>
<B>Mensagem Enviada. Obrigado.
<% End If %>
</FORM>
<HR>
<B> Para enviar outra, <a href="mail.asp">clique aqui</a></B>.
</BODY>
</HTML>

Uma pequena análise da ASP apresentada sugere os seguintes detalhes a saber:


• Declaração do objecto MyMail do tipo CDONTS:NewMail

• Preenchimento das seguintes propriedades:


o Form (endereço do remetente)
o To (endereço do destinatário)
o Subject (assunto)
o BodyFormat (0 para indicar que a mensagem contêm informação em HTML e
1 para declarar que apenas existe texto ASCII puro)

apostilando.com 50
o MailFormat (0 indicia que o objecto é do tipo MIME ou Multipurpose
Internet Mail Extension ou 1 para mencionar que o seu conteúdo é
simplesmente texto.)
o Importance (0 para baixa prioridade, 1 para normal e 2 para urgente)
o Body (mensagem propriamente dita).

• Finalmente, o método send permite enviar automaticamente a mensagem.

Se fizer uma visita à caixa de correio do utilizador c8057@alfa.ist.utl.pt através do


utilitário mailx do Unix, é possível ler a mensagem enviada pelo utilizador
d464@isegi.unl.pt.

2.9 Acesso ao SQL Server

Paralelamente ao MS-Access, a utilização de ASPs com o Microsoft SQL Server é similar


bastando criar no servidor do IIS o respectivo System DSN Data Source (neste caso, o
SQL Server 3.7). Através da opção Start/Settings/Control Panel/ODBC Data
Source/System DSN e como mostra a figura anterior, a base de dados encontra-se num
computador remoto, mas pertencente à mesma rede, designado SQLSERVER.

apostilando.com 51
O próximo passo é relativamente importante pois relaciona-se com o direito de acesso ao
SQL Server. È preciso compreender que o acesso de logon pelo sistema operativo
Windows Server ao computador é algo que nada tem a haver com o acesso ao SGBD
Microsoft SQL Server porque esta contém definições de utilizadores, perfis de direitos,
tabelas, views, rules e outros objectos. Optou-se pela segunda opção não sendo assim
necessário criar nenhum utilizador a nível do User Manager.

No passo seguinte, não esquecer de indicar qual a base de dados a considerar (neste caso,
o computador SQLSERVER). Consequentemente, a opção Change The Default Database
To deve conter como argumento, neste caso particular, BibliotecaSQLServer.

No final deste wizard, a configuração final é mostrada sendo possivel testar o ODBC
criado.

apostilando.com 52
Ao terminar este processo, pode-se verificar no System DSN o novo Data Source
BibliotecaSQLServer.

Em termos das ASPs anteriormente criadas, o único ponto a alterar é o seguinte:


Conn.Open "DSN=BibliotecaSQLServer","d464","asterix". É necessário indicar o novo
nome do SQL Server Data Source e de dois novos argumentos ignorados até aqui:
username e password de acesso à base de dados BibliotecaSQLServer resultante da
migração da base de dados do MS-Access biblioteca.mdb. A administração do acesso à
base de dados em causa deve ser realizado no SQL Server Enterprise
Manager/Security/Logins conforme a imagem seguinte demonstra. Lembre-se, também,
que este username e respectiva password nunca poderão ser visualizados pelo browser do
cliente visto as ASPs serem uma tecnologia server-side.

apostilando.com 53
A figura seguinte mostra os privilégios associados á Query livros_por_assuntosView
como outros objectos. Não se esqueça que a visualização da ASP no browser do cliente
requer o Driver ODBC Data Source para o Microsoft Access 4.0 ou superior e/ou SQL
Server 3.7 ou superior.

<html>
<head><title>Pesquisa de Livros por Assuntos</title></head>
<body>
<p align="center"><font color="#000080" size="4"><b>Pesquisa de Livros por
Assuntos</b></font></p>
<% If Request.Form.Item("assunto")="" Then %>

apostilando.com 54
<form method="POST" action="pesquisalivrosSQLServer.asp">
<p align="center">Escolha o assunto: <select size="1" name="assunto">
<option>GEOGRAFIA</option>
<option>COMPUTADORES</option>
<option>FRANCES</option>
<option>MUSICA</option>
<option>GEOLOGIA</option>
</select></p>
<p align="center"><input type="submit" name="submit"></p>
<%
Else
Dim Conn
Dim Resultado
Dim SQL
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionTimeout=10
Conn.CommandTimeOut=20
Conn.Open "DSN=BibliotecaSQLServer","d464","asterix"
Set Resultado = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM livros_por_assuntosView WHERE descricao like '" &
"%%" & Request.Form.Item("assunto") & "%%" & "' "
Resultado.Open SQL,Conn,1,2
Do While Not Resultado.EOF
Response.Write "<P><HR>"
Response.Write " Assunto: "
Response.Write Resultado("descricao")
Response.Write " Livro ID: "
Response.Write Resultado("LivroID")
Response.Write " Titulo: "
Response.Write Resultado("Titulo")
Response.Write " Prateleira: "
Response.Write Resultado("Prateleira")
Resultado.MoveNext
Loop
Conn.Close
End If %></FORM>
</body>
</html>

apostilando.com 55
Um outro exemplo já criado anteriormente relaciona-se com a introdução de novos
registos na tabela comentários.

<%@ LANGUAGE=VBScript %>


<html>
<head><title>Biblioteca do ISEGI</title></head>
<body>
<hr>
<%
If Request.Form("T1")="" OR Request.Form("T2")="" OR Request.Form("S1")="" Then
%>
<p align="center"><b><font color="#0000FF" size="6">Biblioteca do ISEGI-
UNL</font></b></p>
<form method="POST" action="comentariosSQLServer.asp">
<p align="left"><b>Nome Completo:&nbsp; </b><input type="text" name="T1"
size="41"></p>
<p align="left"><b>Email:&nbsp; </b><input type="text" name="T2"
size="41"></p>
<p align="left"><b>Comentários: </b></p>
<p align="left">&nbsp;<textarea rows="4" name="S1"
cols="64"></textarea></p>
<p align="center"><input type="submit" value="Submit" name="B1"><input
type="reset" value="Reset" name="B2"></p>
</form>
<%
Else
Dim Conn
Dim Resultado
Dim SQL
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionTimeout=10
Conn.CommandTimeOut=20

apostilando.com 56
Conn.Open "DSN=BibliotecaSQLServer","d464","asterix"
Set Resultado = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM comentarios"
Resultado.Open SQL, Conn, 1, 2
Resultado.AddNew
Resultado("nome") = Request.Form("T1")
Resultado("email") = Request.Form("T2")
Resultado("comentario") = Request.Form("S1")
Resultado.Update
Resultado.Close
Conn.Close
End If %>
<P>Obrigado!!
<P><A href="comentariosSQLServer.asp"> Clique aqui para recomeçar a aplicação
</A>
</FORM><P><hr></body></html>

apostilando.com 57
3 Active Server Pages (Part II)

Paralelamente à tecnologia PHP, as ASPs são uma tecnologia server-side


(essencialmente, tem-se VBscript a gerar conteúdos de HTML do lado do servidor).
Apresentam ficheiros com extensão. asp (.aspx se gerados na framework .Net) e o código
é delimitado por <%...%>. É uma linguagem non-case sensitive
(maiusculas=minusculas), precisa do Internet Information Server (IIS) e apresenta um
conjunto de objectos que lhe são únicos: Request, Response, Application, Session,
Server e ASPError.

Apresenta-se, de seguida, alguns excertos de código com alguns comentários relativos às


ASPs:
<% Option explicit Criação de variáveis e vectores dimênsionais.
Const idadelimite=30
Dim x, y, a(20), b()
x=10
Redim b(5,3)
y=“jose” %>
While c1 ... Wend Ciclos existentes nas ASPs
Do while c1 ... Loop
Do until c1 ... Loop
Do ... Loop while c1
Do ... Loop until c1
For each var in collection ... Next
For cont=i1 to f1 step s1

apostilando.com 58
...
Next
*, /, -, +, \, mod Operadores aritméticos
& Concatenação de strings
=, <>, <, >, <=, >=, is Operadores lógicos
not, and, or, xor, eqv, imp
If c1 then ... else ... end if Instruções condicionais
Select case c1
case ca ....
case else ....
End select
Function f1(p1, p2,...) Referência a funções com parâmetros de entrada:
Dim v1 call f1(p1,p2,...). Repare que uma função retorna
... sempre um valor.
f1=...
End function
Sub p1(p1, p2,...) Referência a procedimentos com parâmetros de
Dim v1 entrada: call p1(p1,p2,...).
...
End sub
Abs() Devolve o valor absoluto de um número.
Asc() Devolve o código ASCII de uma tecla.
Chr() Devolve o carácter correspondente a um dado código ASCII.
Cint() Converte um número não inteiro para inteiro.
Cstr() Converte para cadeia de caracteres.
Date() Devolve a data corrente.
Filter() Pesquisa um vector para procurar um valor ou expressão variável.
lnStr() Procura uma cadeia dentro de outra (devolve a posição, se encontrar a cadeia;
devolve zero, se não encontrar).
LnStrRev() Semelhante ao lnStr, mas procura do fim para o principio.
IsNuIl() Se a variável estiver vazia devolve True. Caso contrário, devolve False.
lsNumeric() Verifica se o valor é numérico.
Lcase() Converte para minúsculas.
Left() Devolve um dado número de caracteres a partir da esquerda.
Len() Devolve o tamanho da cadeia.
Ltrim() Retira os espaços em branco à esquerda do uma string.
Mid() Devolve um dado número de caracteres, a partir do uma dada posição.
Replace() Substitui um caractere ou uma cadeia por outra.
Rnd() Calcula um número aleatório.
Round() Efectua um arredondamento.
Space() lntroduz um dado número de espaços numa cadeia.
Split() Divide uma cadeia num vector de cadeias, escolhendo como caractere de
separação o espaço, a virgula ou outro caractere especificado.
StrComp() Compara duas cadeias, determinando se são iguais ou não.
Time() Devolve a hora corrente.
response.cookies(“nome do cookie”) = valor Gestão de cookies

apostilando.com 59
response.cookies(“nome do cookie”).expires = date()+30 (atribuição, expiração
variavel = request.cookies(“nome do cookie”) temporal, leitura e limpeza
response.cookies(“nome do cookie”) = “” do seu conteúdo)
session(“variavel”) = valor Gestão de variáveis de
session.Timeout = 10 sessão (session) e globais
response.write (session.sessionID, session.variavel) (application)
application(“variavel”) = valor
application.lock(“variavel”)
application.unlock(“variavel”)
<SCRIPT LANGUAGE=”VBScript” RUNAT=”Server”> Exemplo clássico do
Sub Application_OnStart global.asa
Session. Timeout =3
Application. Lock
Application(”utilizadores”) = 0
Application. UnLock
End Sub
Sub Session_OnStart
Application. Lock
Application(”utilizadores”)=Application(”utilizadores”)+1
Application. UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application(”utilizadores”)=Application(”utilizadores”)-I
Application. UnLock
End Sub
Sub Application_OnEnd
End Sub
</SCRIPT>

3.1 Programas Clássicos

A) FACTORIAL

<% If Request.Form("factorial")="" Then %>


<FORM method=post action=aa_1.asp>
Indique um número : <INPUT name=factorial><p>

apostilando.com 60
<INPUT type=submit value=" Pressione este butão " name=submit1>
<INPUT type=reset value=" Reinincializar Form " name=reset1>
<%
ElseIf IsNumeric(Request.Form.Item("factorial")) Then
mensagem=" O seu factorial é "
fact=1
For contador=1 to Request.Form.Item("factorial")
fact=fact*contador
Next %>
<%= mensagem %> <%= fact%>
<% Else
Response.Write ("O seu input não é válido!")
End If %>
<P><A href="aa_1.asp"> Clique aqui para recomeçar a aplicação </A>

B) LEITURA DE FICHEIROS DE TEXTO (Versão 1)

<%
Set FileStreamObject = CreateObject("Scripting.FileSystemObject")
Set leitura = FileStreamObject.OpenTextFile(Server.MapPath("/") & "\Noticias.txt",1)
While not leitura.AtEndOfStream
Response.Write leitura.ReadLine
Wend
leitura.close %>

C) ESCRITA EM FICHEIROS DE TEXTO

<%

apostilando.com 61
response.write "Processo de criação de uma linha de texto no ficheiro a.txt"
set obj = CreateObject("Scripting.fileSystemObject")
set esc = obj.CreateTextFile(Server.MapPath("a.txt"),true)
esc.writeline("Esta linha está escrita no ficheiro...")
esc.close
set esc=nothing
%>

D) LEITURA DE FICHEIROS DE TEXTO (Versão 2)

<%
set objectoficheiro = CreateObject("Scripting.fileSystemObject")
set lertexto = objectoficheiro.OpenTextFile(Server.MapPath("z2.txt"),1)
response.write " A primeira linha contem " & lertexto.Readline & "<p>"
response.write " A segunda linha contem " & lertexto.Readline
set objectoficheiro = nothing
%>

E) ACESSO AS VARIÁVEIS DA NORMA CGI

<CENTER><H2>Aceder às variáveis de ambiente do SERVER através do


Request.ServerVariables("Nome da variável")</H2></CENTER>

apostilando.com 62
<P><HR><P>
<% For each variavel In Request.ServerVariables %>
<P><H3><%= variavel %></H3>
<%= Request.ServerVariables(variavel) %><BR>
<% Next %>

F) Envio de dados entre .ASPs utilizando o método POST (versão 1)

Repare que neste exemplo, os conteúdos dos campos nome e apelido são transferidos do
programa aa_1.asp para aa_enviar1.asp utilizando o método POST no formulário em
questão. Será o objecto request que terá a capacidade de receber os respectivos conteúdos
das variáveis utilizadas (nome e apelido, neste caso particular).

<html><body>
<form action="aa_enviar1.asp" method="post">
Nome: <input type="text" name="nome">
Apelido: <input type="text" name="apelido">
<p><input type="submit" value="Enviar">
</form>
</body></html>

apostilando.com 63
<html><body>
<%
nomerecebido = request.form("nome")
apelidorecebido = request.form("apelido")
response.write (" A pessoa chama-se " & nomerecebido & " " & apelidorecebido)
%>
</body></html>

G) Envio de dados entre .ASPs utilizando o método POST (versão 2)

<html><body>
<form action="aa_enviar1.asp" method="post">
<p>Primeiro numero: <input name="num1" type="text">
<p>Segundo numero: <input name="num2" type="text">
<input type="submit" value="Enviar">
</form></body></html>

<html><body>
<% n1recebido = cint(request.form("num1"))
n2recebido = cint(request.form("num2"))

apostilando.com 64
total = n1recebido + n2recebido %>
<input type="text" name="total" value="<%=total%>">
</body></html>

H) Exemplos da utilização de funções prédefinidas

<%
var1=Abs(-23.24)
var2=Asc("C")
var3=Chr(67)
response.write varl & " " & var2 & " " & var3 %>
<br>Data de hoje é: <%response.write(date())%>
<br>Hora local do servidor é: <%response.write(time())%>
<br><% Response.Write Instr("Olá", "1") %>
<br><% Response.Write Instr("Olá", "R") %>
<br><% var5=LCase("Porto Coimbra Braga") %>
<%=var5%>
<br><% var6=Left("Multimédia 2002", 3) %>
<%=var6%>
<br><% var7=Len("Verde") %>
<%=var7%>
<br><% var8=Mid("programar ASP",4,2)%>
<%=var8%>
<br><% var9=Round(27,01)%>
<%=var9%>
<br><% meuArray = Split("pinheiro sobreiro — pereira oliveira laranjeira") %>
<% meuArrayFiltrado = Filter(meuArray, "eiro", True, VBTextCompare) %>
<%=Join(meuArrayFiltrado)%><br>

apostilando.com 65
I) Detecção do Browser do Cliente

<html>
<body>
<script>
var n=navigator.appName
var ns=(n=="Netscape")
var ie=(n=="Microsoft Internet Explorer")
if (ns)
window.location="aa.htm"
else
window.location="bb.htm"
</script>
</body>
</html>

Repare que caso o browser do cliente seja o Netscape (actual Mozilla), o ficheiro a
visualizar será o aa.htm. Caso contrário, o ficheiro bb.htm será mostrado no ecrã do
utilizador final.

3.2 Acesso a Base de Dados (MS-Access)

Como já foi referido no primeiro capitulo deste documento, o acesso ao MS-Access só é


possivel através de uma interface pois as BDs só entendem SQL. Esta secção irá basear-
se no ODBC Pizza criado a nível de sistema operativo (Control panel/Administrative
tools/Data sources/System DSN/Add/Microsoft Access driver) e como demonstra a figura
seguinte. Considerou-se que a base de dados em causa reside em C:\Inetpub
\wwwroot\aa\ pizza.mdb.

apostilando.com 66
A) ACESSO À PIZZA.MDB VIA ODBC (TABELA PIZZA)

<%
Dim Conn, Resultado, SQL
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "pizza"
Set Resultado = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM pizza"
set resultado = Conn.execute(SQL)
do while not resultado.EOF %>
<b>Pizza: </b><%=resultado("pizza")%>
<b>Quantidade: </b><%=resultado("quantidade")%>
<b>Nome: </b><%=resultado("nome")%>
<b>Telefone: </b><%=resultado("telefone")%><p>
<% resultado.MoveNext
loop
resultado.Close
Conn.Close %>
<P>Obrigado pela sua consulta!!

apostilando.com 67
B) ACESSO À PIZZA.MDB VIA ADO

<%@LANGUAGE="VBSCRIPT"%>
<%
Dim pizza, MM_pizza_STRING
MM_pizza_STRING = "Driver={Microsoft Access Driver
(*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb"

Set pizza = Server.CreateObject("ADODB.Recordset")


pizza.ActiveConnection = MM_pizza_STRING
pizza.Source = "SELECT * FROM pizza"
pizza.Open() %>
<table border="1">
<tr>
<td><b>Pizza</b></td>
<td><b>Quantidade</b></td>
<td><b>Nome</b></td>
<td><b>Telefone</b></td>
</tr>
<% While (NOT pizza.EOF) %>
<tr>
<td><%=(pizza.Fields.Item("nome").Value)%></td>
<td><%=(pizza.Fields.Item("quantidade").Value)%></td>
<td><%=(pizza.Fields.Item("nome").Value)%></td>
<td><%=(pizza.Fields.Item("telefone").Value)%></td>
</tr>
<%
pizza.MoveNext()
Wend
pizza.Close()
Set pizza = Nothing %>
</table>

C) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ODBC

Deixa-se ao leitor a criação do seguinte formulário em HTML com os seguintes campos:


pizza, quantidade, nome e telefone. Note que o método de transferência dos dados do

apostilando.com 68
form para o ficheiro aa_6.asp deve ser o POST embora existam outros exemplos em que
o método de escolha foi o GET.

<%
Dim Conn, Resultado, SQL
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=pizza","",""
Set Resultado = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM pizza"
Resultado.Open SQL, Conn, 1, 2
Resultado.AddNew
Resultado("pizza") = Request.Form("pizza")
Resultado("quantidade") = Request.Form("quantidade")
Resultado("nome") = Request.Form("nome")
Resultado("telefone") = Request.Form("telefone")
Resultado.Update
Conn.Close %>
<P>Obrigado!!

D) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ADO

<%
Dim rs, MM_pizza_STRING,SQL

apostilando.com 69
MM_pizza_STRING = "Driver={Microsoft Access Driver
(*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb;"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = MM_pizza_STRING
SQL="insert into pizza(pizza,quantidade,nome,telefone) "
SQL=SQL&"values('"&Request.Form("pizza")&"',"
SQL=SQL&" '"&Request.Form("quantidade")&"',"
SQL=SQL&" '"&Request.Form("nome")&"',"
SQL=SQL&" '"&Request.Form("telefone")&"')"
rs.Open SQL,MM_pizza_STRING,1,2
%>
<P>Obrigado pelo pedido!!

E) APAGAR UM REGISTO NA PIZZA.MDB VIA ODBC

<h3 align="center">Apagar registos por nome do telefone</h3>


<form name="form1" method="post" action="aa_7.asp">
Telefone do cliente: <input name="telefone" type="text" id="telefone">
<input name="Submit" type="submit" value="Submit">

</form>

<% Dim rs, Conn, SQL


Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "Pizza"
Set rs=Server.CreateObject("ADODB.Recordset")
SQL="delete from pizza where telefone='" & Request.form("telefone") &"'"
rs.open SQL,conn,1,2
conn.Close %>

apostilando.com 70
<P>Registo apagado!!

F) APAGAR UM REGISTO NA PIZZA.MDB VIA ADO

<% Dim pizza, MM_pizza_STRING


MM_pizza_STRING = "Driver={Microsoft Access Driver
(*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = MM_pizza_STRING
rs.Source = "SELECT * FROM pizza"
rs.Open() %>

<form name="form1" method="get" action="z4_1.asp">


<p>Apagar por telefone:
<select name="telefone1">
<option selected>-----Escolha-------</option>
<% while not rs.eof %>
<option value="<%=rs.Fields("telefone")%>"><%=rs.Fields("telefone")%></option>
<%rs.movenext
wend
rs.close
Set rs = Nothing %>
</select>
<input type="submit" name="Apagar" value="Apagar">
</form>

apostilando.com 71
F) PESQUISA DE UM REGISTO POR NOME NA PIZZA.MDB VIA ADO

<%
Dim pizza, MM_pizza_STRING, nome
MM_pizza_STRING = "Driver={Microsoft Access Driver
(*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb"

Set pizza = Server.CreateObject("ADODB.Recordset")


pizza.ActiveConnection = MM_pizza_STRING
pizza.Source = "SELECT * FROM pizza where nome like '%" &
request.QueryString("nome1") & "%'"
pizza.Open() %>

<table border="1">
<tr>
<td><b>Pizza</b></td>
<td><b>Quantidade</b></td>
<td><b>Nome</b></td>
<td><b>Telefone</b></td>
</tr>
<% While (NOT pizza.EOF) %>
<tr>
<td><%=(pizza.Fields.Item("pizza").Value)%></td>
<td><%=(pizza.Fields.Item("quantidade").Value)%></td>
<td><%=(pizza.Fields.Item("nome").Value)%></td>
<td><%=(pizza.Fields.Item("telefone").Value)%></td>
</tr>
<%
pizza.MoveNext()
Wend
pizza.Close()
Set pizza = Nothing %>
</table>

apostilando.com 72
3.3 Acesso a Conteúdos de Multimédia com o MS-Access

Uma outra possibilidade que o MS-Access permite é a utilização de campos do tipo


hiperlink para referenciar conteúdos de imagem, som e vídeo (multimédia). Com este
objectivo em mente, criou-se uma base de dados com a tabela multimédia com os
seguintes atributos:

Considera-se que os ficheiros de multimédia em causa não são inseridos na base de dados
mas residem, neste caso particular, no mesmo directório da base de dados. Será o campo
link que permitirá a ligação aos ficheiros em causa através da seguinte opção:

Como referência para o seguinte exercício, apresenta-se o conteúdo parcial da tabela


multimédia. Como o leitor já deve ter reparado, existe um vídeo do tipo mpeg, um
executável em Flash (swf), uma imagem jpg e uma música em formato mp3.

apostilando.com 73
Se a inserção dos conteúdos é realizada localmente a partir do próprio MS-Access, a sua
visualização e acesso aos conteúdos multimédia pode ser realizada a partir de uma ASP
utilizando o protocolo http. Com esse objectivo em mente, apresenta-se o seguinte
código:

<html>
<head>
<title>Acesso a conteúdos de multimédia via ASPs</title>
</head>
<body>
<%
Dim multimedia, MM_multimedia_STRING
MM_multimedia_STRING = "Driver={Microsoft Access Driver (*.mdb)};
DBQ=C:\Inetpub\wwwroot\aa\multimedia.mdb"

Set multimedia = Server.CreateObject("ADODB.Recordset")


multimedia.ActiveConnection = MM_multimedia_STRING
multimedia.Source = "SELECT * FROM multimedia"
multimedia.Open() %>
<table border="1" bgcolor="#FFFFCC" align="center" title="Hypermedia available"
bordercolor="#0000CC">
<tr bgcolor="#FF0000" align="center">
<td>Titulo</td><td>Tipo</td><td>Autores</td><td>Editora</td><td>Data
Lancamento</td><td>Custo Aluguer</td><td>Link</td>
<% While (NOT multimedia.EOF) %>
<tr>
<td align="center"><%=(multimedia.Fields.Item("titulo_multimedia").Value)%></td>
<td align="center"><%=(multimedia.Fields.Item("tipo_multimedia").Value)%></td>
<td align="center"><%=(multimedia.Fields.Item("autores").Value)%></td>
<td align="center"><%=(multimedia.Fields.Item("editora").Value)%></td>
<td align="center"><%=(multimedia.Fields.Item("data_lancamento").Value)%></td>
<td align="center"><%=(multimedia.Fields.Item("custo_aluguer").Value)%></td>
<td align="center"><a href="<%=(multimedia.Fields.Item("link").Value)%>"
target="_blank">Click Here</a></td>
</tr>
<%
multimedia.MoveNext()

apostilando.com 74
Wend
multimedia.Close()
Set multimedia = Nothing %>
</table>
</body>
</html>

Caso o leitor queira aceder ao conteúdo em causa, basta clicar no link em causa e como se
demonstra na figura seguinte:

apostilando.com 75
Glossário

• Anonymous FTP - Método usado no acesso livre a um host FTP. Normalmente, a


password da conta anonymous é o endereço de correio electrónico do cliente.

• API - Application Programming Interface é um conjunto de funções e


procedimentos compilados numa Dynamic Library Link (DLL).

• ARP - Address Resolution Protocol é o protocolo que permite obter o MAC (Media
Access Control, 48 bits) address de uma placa de rede através do IP address. A
gravação do MAC address numa placa de rede designa-se address burning.

• ASP - Active Server Pages é uma componente do IIS que permite combinar HTML,
VB e Java Scripts e outros elementos (Active X controls) na construção de Web
sites. Por ser server side, o cliente nunca vê o código do script.

• ATM - Asynchronous Transfer Mode (RDIS de banda larga) é um protocolo


orientado muito rápido na transmissão de voz, vídeo e dados em LANs (155Mbps).
Comunica com pacotes de 53 bytes chamados células. Suportado pelo Windows
Server.

• Backbone - Porção da rede que gere a maior parte do tráfego.

• Bandwidth - Capacidade de transmissão de um canal de transmissão.

• Bastion Host - Computador que permite o acesso à Internet de uma LAN.

• Binding - Processo de estabelecer a comunicação do protocolo usado e a placa de


rede.

• Bridge - Similar à função dos routers com a diferença que as bridges utilizam
endereços MAC enquanto os routers utilizam endereços IP. Alem disso, este
equipamento é destinado à interligação de troços de rede distintos e não
homogéneos.

• Broadcast Address - IP de uma rede que permite conectar todos os computadores


pertencentes a essa rede (Ex: O endereço de broadcast da rede de classe C
193.136.119 é 193.136.119.255).

• Browse List - Lista de computadores e respectivos recursos ao disposição na rede.


Esta lista é actualizada dos seguintes modos:
o Sempre que exista um request announcement da parte do master browser.

apostilando.com 76
o Sempre que se desliga um computador.
o Sempre que um computador arranca, este emite alguns broadcasts ao master
browser da rede a indicar quais os recursos que fornece. Após esta fase, os
anúncios de permanência da rede são feitos com uma periodicidade de 12
minutos.

• Browsing – Serviço responsável pela manutenção da informação sobre os


computadores disponíveis para partilhar recursos através da rede visualizados pela
opção Network Neighborhood ou o Map Network Drive. Os comandos associados
ao start e stop deste serviço são o net stop computer browser e net start computer
browser.

• Built-in Groups - Grupos de default do Windows NT Server e NT Workstation com


as respectivas permissões e direitos definidos.

• CGIs - Common Gateway Interface é um conjunto de definições de regras na


interacção entre um servidor e um cliente.

• Circuito Virtual - Conexão dedicada temporária num ambiente de comunicação


partilhado.

• Computer Browser – Computadores que armazenam uma browse list.

• Daemon - Programas em background em ambiente UNIX/LINUX com o objectivo


de colectar informação ou realizar funções administrativas.

• Datagrama - Pacote de dados transmitidos pela rede e que incluem, entre outros
campos, o endereço do remetente e do destinatário.

• DHCP - Dynamic Host Configuration Protocol é um serviço do Windows Server


(DHCP Server) que permite assignar IPs dinâmicos (scope de endereços IP) a NT
Workstations, por exemplo. Os comandos associados a este serviço são o
ipconfig/release e ipconfig/renew.

• Dial-up Line - Canal de comunicação não dedicada cuja conexão é quebrada após
a chamada se completar.

• Direct Connection - Circuito Virtual de comunicação não partilhado por outros


utilizadores.

• DNS - Domain Name System é um serviço estático de name resolution que permite
mapear o endereço IP de um computador através do seu Fully Qualified Host
Name. Utiliza o port 53. Pode ser substituído pelo ficheiro HOSTS do computador
pessoal. Chama-se name space a um conjunto de nomes organizados
hierarquicamente a partir de um conjunto de designações como .com, .edu

apostilando.com 77
(domínio organizacional), .fr (domínio geográfico) e outras a que se designam top
Domains. A gestão global é centralizada pelo Network Information Center (NIC).

• DNS alias ou Canonical names - Renomeação de nomes de hosts (CNAME).

• Dual-Homed Host - Servidor configurado com duas placas de rede, cada uma
ligada a uma rede diferente (Multihomed Computer).

• Encapsulação – Em ambiente de redes, é o processo de inserir cabeçalho e dados


de um high-level protocol numa frame de um lower-level protocol.

• Endereço IP - Número de 32 bits de comprimento que identifica univocamente um


determinado serviço na Web. Será a netmask que indicará qual a network ID
(classe A caso o network ID <126, classe B se entre 128 a 191 e classe C se entre
192 e 223) a que pertence e qual o hostID para identificação do computador.
Atenção às seguintes regras:
o O endereço 0.0.0.0 está reservado para máquinas que não conheçam o seu
endereço.
o Um hostID não pode ser 0 ou 255.
o O endereço 255.255.255.255 refere-se a todos os hosts da rede Local.
o Os endereços começados por 127 são utilizados para fins especiais de loopback.

• Ethernet - Rede Local desenvolvida pela Xerox, Digital e Intel (DIX), em 1976
(IEEE 802.3 e ISO 8802-3), com uma velocidade média de transmissão na ordem
dos 10-100-1000Mbps (thick ou thin coaxial cable, fiber-optic ou twisted-pair
cabling). Utilizando baseband, os pacotes designam-se frames e o processo de
detecção de colisões chama-se CSMA/CD (Carrier Sense Media Access with
Collision Detection). As variações básicas desta topologia são:
o 10-100-1000 Base 2 ou Thin Ethernet (10 a 1000 mbps, 185 metros, 30
máquinas, fichas BNC para ligação ao cabo coaxial de 50 Ω)
o 10-100-1000 Base 5 ou Thick Ethernet (10 a 1000 mbps, 500 metros, 100
dispositivos, MAU ou transceiver para ligação ao cabo coaxial de 50 Ω em
PVC)
o 10-100-1000 Base F (Fibra óptica, 2000 metros, 10 a 100 mbps)
o 10-100-1000 Base T (10 a 1000 mbps, cabo entrelaçado UTP com fichas RJ45)

• Eudora - Sistema de correio electrónico similar ao MS-Outlook.

• FDDI - Fiber Distributed Digital Interface é uma tecnologia de fibra óptica de


62.5/125 microns de anel duplo imune ao ruído (100 Km, 100 Mbps, 500 estações).

• Firewall - Barreira de hardware/software que filtra o tráfego electrónico entre


redes.

apostilando.com 78
• FQDN - Fully Qualified Domain Name é a associação de um Domain ao nome de
um host. Exemplo: proxy.esoterica.tw. O seu comprimento máximo será 255
caracteres. Note que um computador pode reter apenas um NetBIOS name mas
vários FQDN.

• Frame Relay - Usado em WANs, esta técnica derivada do X.25 permite uma
transmissão de dados TCP/IP ou outro tipo de protocolo com uma largura de
banda entre os 56kbps a 1.5Mbps. A ligação entre redes é feita através de um
FRAD (Frame Relay Adapter).

• Frames - Pacotes de transmissão encapsulados por outros dados e controles


dependentes do tipo de rede a utilizar.

• FTP - File Transfer Protocol é uma aplicação que permite transferir ficheiros entre
hosts. Utiliza os ports 20 e 21 mas a sua definição encontra-se no documento RFC
959.

• Gateway - Hardware e software que permite conectar diferentes redes que utilizam
protocolos diferentes. Em termos genéricos, pode tratar-se de um router, uma
bridge, um FRAD ou um multihomed computer.

• Gateways/Routers - Dispositivos da rede que permite o encaminhamento dos


pacotes de uma determinada origem para um destino especifico através de routing
tables.

• Hop Count - Número de nodes (routers, bridges…) que um pacote passa numa
transmissão entre dois hosts.

• Host Name Resolution - Tal como acontece com os nomes NetBIOS, existem
diversas maneiras de obter endereços IP com base em host names ou FQDNs. O
processo consiste na seguinte na seguinte sequência, interrompida assim que o
endereço IP é determinado:
o Comparação com o nome local
o Local HOSTS
o DNS
o LMHOSTS
o WINS
o Broadcast

• Host Unreachable – Mensagem do sistema operativo a indicar que o host remoto


não se encontra alive.

• Hostname - Comando que visualiza o nome do host ou host name da máquina.


Este nome é usado com os comando ping ou tracert, por exemplo.

apostilando.com 79
• HOSTS - Ficheiro localizado em \winnt\System32\drivers\etc e que traduz FQDN
em endereços IPs.

• HotJava - Web browser interactivo da Sun MicroSystems.

• Hub - Concentrador de segmentos de rede em estrela. Apresenta um


comportamento passivo em termos de pacotes de rede.

• ICMP - Internet Control Message Protocol oferece funções de controlo e gestão da


rede ao protocolo IP.

• Interfaces - Elo de ligação entre as aplicações e as camadas inferiores do modelo


com o objectivo de possibilitarem a comunicação entre computadores.
Basicamente, existem três APIs (Application Interface Interface):
o NetBIOS API (Network Basic Input/Output System API) que utiliza o NetBIOS
name (15 caracteres) de um computador (criado no momento de instalação do
Windows). Funciona através de broadcasts para pequenas redes não
segmentadas. Comandos típicos que utilizam esta API são os comandos net
view, net use e net send. Esta interface é automaticamente instalado quando se
procede ao setup do Windows NT e facilmente verificável no painel
Settings/Network/Services.
o WinSocket API constituído pelo endereço IP, port e protocolo (TCP ou UDP)
o NetBT API (NetBIOS Over TCP/IP) é uma espécie de simbiose dos dois
anteriores. As aplicações mencionam NetBIOS names para computadores em
redes diferentes obrigando, assim, a usar TCP/IP através dos ports 137 (UDP),
138 (UDP) ou 139 (TCP).

• InterNIC - Entidade americana que comercializa e gere os endereços IPs em todo o


mundo muito embora as empresas procedam ao registo e aquisição de endereços e
nomes através dos ISPs como a Telepac.

• IP Next Generation – Futuros endereços IP com 128 bits permitindo manter a


compatibilidade com os endereços actuais de 32 bits.

• ISP - Internet Service Provider é uma empresa que permite a conexão de um Web
Server, por exemplo, à Internet.

• Java - Linguagem interpretada e compilada, segura e orientada por objectos,


desenvolvida pela Sun MicroSystems, que permite uma interacção de programas
em tempo real numa rede independentemente do sistema operativo devido à
existência da Java Virtual Machine (JVM).

• JDBC - Java Database Connectivity é uma API que permite os programadores de


java applets o acesso a BDs.

apostilando.com 80
• JPEG - Joint Photographic Expert Group, sistema de compressão não vectorial
para fotografias, vídeo frames e scanned images (ratio 20:1).

• Largura de Banda - Capacidade de transmissão do canal de comunicação


normalmente medida em bits/s.

• Linhas Série – Estabelecimento de ligações ponto-a-ponto através das linhas


telefónicas (Dial-up e dedicadas analógicas/digitais).

• LMHOSTS - Ficheiro Localizado em \winnt\System32\drivers\etc e que traduz


NetBIOS Names em endereços IPs. É um processo estático mas atenção: Nunca
coloque nos ficheiros LMHOSTS e HOSTS equivalências entre nomes e endereços
IPs de computadores que estão configurados como clientes DHCP porque estes
obtém o seu endereço IP de modo dinâmico.

• MetaSearch Web Sites - Similar aos Search Engines com a diferença de a sua
query ser avaliada por várias base de dados ao mesmo tempo. Consulte, por
exemplo, http://cage.cs.colostate.edu, http://metaSearch. com ou
http://www.metacrawler.com.

• Modelo OSI - Modelo de referência com o objectivo de definir uma arquitectura de


comunicações aberta. Esta estrutura consiste num conjunto de sete níveis (físico,
lógico, rede, transporte, sessão, apresentação e aplicação) estanques com funções e
interfaces bem definidas havendo um fluxo de comunicação na vertical através das
interfaces de serviço (request, indicativo, response e confirmation) de cada
camada.

• Modem – Equipamento destinado à conversão bidireccional de sinais digitais


provenientes de equipamentos informáticos em sinais analógicos passíveis de
transmissão numa linha telefónica comutada ou dedicada (MODelator
DEModelator).

• MPEG - Motion Picture Expert Group, standard de compressão para vídeo (ratio
200:1).

• Multihomed Computers - Computador que tem instaladas múltiplas placas de rede


com o objectivo de fazerem routing entre os diversos segmentos a que as placas se
ligam. No Windows Server, é necessário ligar a opção Enable IP Forwarding.

• Name Resolution - Métodos (Cache, DNS, WINS, HOSTS, LMHOSTS, Broadcast)


de obtenção do endereço IP quando é conhecido o Fully Qualified Domain Name
ou o NetBIOS name (NetBIOS Name/FQDN=>IP=>MAC).

apostilando.com 81
• NDIS - Network Driver Interface Specification é uma especificação de devices
drivers, desenvolvido pela Microsoft e 3Com em 1990, que torna independente a
placa de rede do protocolo usado.

• Net Unreachable – Mensagem do sistema operativo a indicar que o router não


conhece o caminho para uma determinada rede.

• NetBEUI - NetBIOS Extended User Interface é uma extensão do protocolo


NetBIOS desenvolvido pela Microsoft e apenas usado em pequenas redes devido
ao seu tamanho do seu overhead.

• NetBIOS - Network Basic Input Output System é um protocolo de sessão


desenvolvido pela IBM e Sytek com o objectivo de trocar dados e no acesso a
recursos da rede.

• NetBIOS Name - Nome do computador assignado no momento de instalação do


Windows NT e que pode conter, no máximo, 15 caracteres.

• NetBIOS Name Cache - Tabela interna de cada computador que faz a equivalência
NetBIOS Name e o respectivo endereço IP construída à medida que os nomes vão
sendo invocados e resolvidos. O seu registo é feito de duas formas:
1) Quando o processo de name resolution acontece e o nome ainda não existe na
tabela.
2) quando se processa o carregamento a partir de LMHOSTS. O conteúdo desta
tabela é feita através do comando nbtstat -c.

• NetBIOS Name Resolution - Processo de obter o endereço IP em função do


NetBIOS Name. A sequência nem sempre é igual:
o NetBIOS Name Cache
o LMHOSTS
o WINS
o DNS Server
o HOSTS
o Broadcast

apostilando.com 82
• NetBIOS Name Table - Tabela interna de cada computador que regista os nomes
NetBIOS locais conhecidos e que poderá ser verificado pelo comando nbtstat -n.

• NetShow - Tecnologia Microsoft para multimédia (Live Player, Live Server) que
suporta streaming and multicasting. A sua grande concorrente é a Realaudio
(http://www.realaudio.com).

• Newsreader - Aplicação usado para ler artigos colocados no Usenet newsgroups.

• Pass-through Authentication - Método de autenticação do username/ password no


PDC ou BDC, no momento de logon, de um utilizador.

• PDF - Portable Document Format, formato de ficheiros desenvolvido pela Adobe


Systems.

• Perl - Practical Extraction and Reporting Language é uma linguagem interpretada


e usada no mundo UNIX e CGIs na manipulação de texto, ficheiros e processos.

• PGP - Pretty Good Privacy é um popular shareware de encriptação utilizando uma


chave publica, escrito por Phil Zimmermann.

• Plug-In - Pequeno programa ligado ao browser para lhe adicionar alguma


capacidade especial.

• POP3 - Post Office Protocol é uma ferramenta que permite a manipulação de


correio electrónico quando estas estão depositadas numa mail box num servidor
SMTP. Para que o processo seja possível é necessário que o utilizador tenha acesso
à máquina remota através de um username e uma password.

• PPP - Point to Point Protocol é similar ao SLIP mas permite correr outros
protocolos como a Decnet, IPX/SPX ou NETBeui. O serviço RAS para estabelecer
ligações ponto a ponto utilizam este protocolo.

• RAID - Redundant Array of Inexpensive Disks é o método de usar vários discos


num array de modo a providencial fault tolerance no caso de um dos discos falhar.
O Windows Server suporta RAID 0 (no redundancy), 1 (disk mirroring) e 5 (disk
strip).

• RAS - Remote Access Service é um outro serviço do Windows Server que permite
o acesso até 256 conexões simultâneas dial-up (modem, ISDN ou X.25). Permite
utilizar os protocolos de baixo nível SLIP (Serial Line Internet Protocol), PPP
(Point to Point Protocol), PPTP, Microsoft RAS Protocol ou o NetBIOS Gateway.
Note que é necessário tornar activo a opção Logon Using Dial-Up Networking na

apostilando.com 83
janela de logon como também é necessário activar a opção Grant Dial Permission
to User no User Manager for Domains.

• RDIS ou ISDN - Rede Digital Integrada de Serviços é um standard na


comunicação digital (synchronous, full-duplex, ponto-a-ponto) que permite a
transmissão no mesmo canal de voz, dados e vídeo em canais de 64 kbps. Utiliza a
rede telefónica para comunicar com sinais digitais (comutação e transmissão).

• Rede segmentada - Capacidade de isolar troços ou segmentos de rede de modo a


evitar o menor número de colisões. Esta situação pode ser feita através de
switches, routers e bridges.

• Registry - Base de dados do sistema que contem informação do hardware,


software e utilizadores do sistema.

• Repetidor - Device utilizado para retransmitir o sinal para outros segmentos de


rede. Note que o tráfego existente num segmento é repercutido para os outros
(comportamento passivo).

• Replication - Processo de sincronização de guardar dados em dois ou mais


computadores.

• RFCs - Request For Comments são documentos onde são propostas os futuros
standards da Internet.

• Robot - Aplicação do WWW que localiza automaticamente e recolhe informações


sobre novos Web sites.

• Route - Comando que permite manipular a routing table de um computador


(routing estático). Por exemplo: route add -p 193.136.132.0 mask 255.255.255.0
190.189.12.1 adiciona uma entrada que indica ao sistema que todos os pacotes
destinados à rede de classe C 193.136.132.0 terão de ser enviados ao router cujo
endereço é 190.189.12.1. Note que este router terá que estar ligado, de alguma
forma, à rede a que pertence o computador acima mencionado. A opção -p, de
persistente, obriga a guardar a informação no registry da máquina.

• Router - Device que encaminha pacotes entre redes usando informação no nível
rede (construindo tabelas routing com endereços IP e que poderá ser visualizada
pelo comando route print) permitindo a redução do número de colisões e,
consequentemente, um aumento do desempenho da rede. Contem software próprio
como o RIP (Routing Information Protocol), o OSPF (Open Shortest Path First), o
EGP (Exterior Gateway Protocol) ou o IGRP (Interior Gateway Routing Protocol)
e apenas utiliza a porção Network ID do IP para encaminhamento. Caso o router
não saiba encaminha-los, o sistema recorre a uma default gateway (endereço IP de

apostilando.com 84
um outro router). As grandes empresas dedicadas à comercialização deste devices
são a CISCO e a 3COM.

• Routing Table – Tabela que indica o endereço IP do próximo equipamento (next


hop), na direcção do destino, que o pacote deve seguir.

• RS232C - Protocolo de baixo nível para pequenas distâncias, assíncrono, orientado


à ligação e que permite a ligação entre um DTE e um DCE.

• Rsh - Remote Shell permite executar comandos em hosts remotos.

• Scope - Num Index Server é conjunto de documentos procurados por uma query.

• Search Engines - Sites de procura de informação como os serviços Yahoo, Lycos,


Webcrawler, Altavista, Infoseek, Google, Hotbot ou o SAPO.

• Server - Serviço do Windows Server que permite ao computador responder a


solicitações feitas por workstations.

• Server Root - Directório do servidor da Internet que contem o programa do server


e ficheiros de configuração.

• Share - Nome referido em Windows Server que permite a partilha de recursos para
a rede.

• Sistema distribuído - Existência de múltiplos computadores autónomos


interligados entre si mas transparentes para o utilizador pois é o próprio Sistema
Operativo Distribuído (Network Operating System) que se encarrega de escolher a
máquina e os recursos mais adequados para a tarefa solicitada. Naturalmente, o
sistema operativo deve assentar numa rede de computadores.

• SLIP - Serial Line Internet Protocol é usado para correr o protocolo IP sobre
linhas telefónicas. Não suporta autenticação segura.

• SMTP (port 25) - Simple Mail Transfer Protocol é responsável pelo correio
electrónico na Web. Pode ser instalado pelo Exchange Server ou o MailSrv da
Microsoft. Uma configuração para mail requer três elementos que podem ser
combinados no mesmo sistema ou fornecidos por sistemas diferentes: Relay Host
(trata do mail cujo endereço é desconhecido), Mail Host (máquina principal de
mail) e Mail Server (local onde se encontra as mailboxes).

• SNA - System Network Architecture é um protocolo de comunicação entre


terminais e mainframes desenvolvido pela IBM.

apostilando.com 85
• SNA Server - Componente do Microsoft Back Office com o objectivo de ligar o
desktop Windows a mainframes IBM.

• Sniffer - Programas intrusos no sistema que permite monitorizar o tráfego na rede,


nomeadamente usernames/passwords.

• SNMP - Simple Network Management Protocol é um serviço que permite colectar


informação da rede (WinSocket, UDP, port 161) como routers, hubs, switches,
impressoras, servidores ou outros. Faz parte de um conjunto de protocolos
designado por Network Management Protocols, entre os quais se inclui o RMON.
A sua monitorização é feita através do Performance Monitor do Windows Server.
Este software pode ser subdividido em duas partes:
o Agent – Componente que fornece informação ao manager.
o Manager – Recebe e concentra a informação disponibilizada via SNMP.

• Socket - Combinação do endereço IP, port e tipo de protocolo (UDP/TCP) que


permite a comunicação de máquinas de um determinado processo.

• SSL - Secure Sockets Layer é uma interface desenvolvida pela Netscape que
permite a transferência encriptada de dados entre um cliente e um servidor.

• Switches - Podem funcionar como routers ou bridges, ou seja, fazer o


encaminhamento em termos de endereços IP ou endereços MAC (comportamento
activo).

• TCP/IP - Transmission Control Protocol/Internet Protocol, nascido juntamente


com o UNIX no final da década de 1960, é uma família de protocolos (TCP, UDP,
ICMP, IP, ARP e RARP) subdivididos em 4 layers, segundo o modelo OSI:
Physical, Network, Transport e Application. Algumas das suas características são:
o As suas principais interfaces de programação são os WinSockets API, NetBT
API e NetBIOS API.
o Assegura a chegada dos pacotes na respectiva ordem pois é routable (protocolo
IP)
o Permite a retransmissão de pacotes perdidos
o Protocolo standard sem proprietário
o Funciona entre sistemas heterogéneos
o O comprimento máximo dos pacotes é 64Kb

• Telnet (port 23) - Emulação de terminal num host remoto. Para se instalar o serviço
telnet no NT, poderá usar o Windows NT Resource Kit. O documento Standard é
designado RFC 854.

• Tempo de Transmissão - É a soma do tempo de input, propagação e output da


informação no canal de transmissão.

apostilando.com 86
• Tipos de canais - Consiste em dois grupos: Time Division Multiplexing (cada um
dos emissores transmite de x em x tempo para o canal sendo-lhe atribuído um slot
de tempo) e Frequency Division Multiplexing (cada um dos emissores transmite
em frequências diferentes de modo a não interferirem entre si). O device
responsável designa-se multiplexer.

• Tipos de comutação - Consiste em duas categorias: Circuitos (caminho físico


único) e Pacotes (retransmissão de nó em nó da rede até chegar ao destino).
Oposto à comutação, tem-se as linhas dedicadas ou alugadas.

• Tipos de ligação - Consiste em dois grupos: Orientado à ligação (telefone) e Não


Orientado à Ligação (carta).

• Tipos de sinal - Consiste em três grupos: Analógico, Amostrado (amostragem de x


em x tempo do sinal analógico) e Digital.

• Tipos de transmissão - Consiste em três grupos: Broadcast (multidão), Multicast


(grupo) e Ponto a Ponto (diálogo).

• TN3270 - Similar ao anterior mas para mainframes IBM.

• Token-Ring - Topologia criada pela IBM com velocidades iniciais a 16 Mbps mas
com uma característica única: A não existência de colisões de pacotes devido à
existência do token passing.

• Top-Level Domain - A mais alta categoria do nome de um host que poderá ser o
tipo de instituição ou o pais de origem.

• Topologia - Distribuição física dos computadores relativamente às cablagens e


devices que os unem (Bus, Star, Token-Ring, Malhada e Árvore). Actualmente, a
topologia Bus e Token-Ring ocupem 90% do mercado.

• Tracert - Utilitário (similar ao ping) que permite verificar o caminho que um


datagrama percorre de um host a outro host.

• TTL - Time To Live é um mecanismo usado nos pacotes para assegurar que estes
não circulem indefinitivamente na Internet. Este tempo é decrementado em cada
passagem por um nó de encaminhamento.

• UDP - User Datagram Protocol é o responsável por uma ligação não orientada
entre 2 hosts.

• Viewer - Aplicação lançada pelo browser quando este não pode executá-lo como
vídeo clips.

apostilando.com 87
• VRML - Virtual Reality Markup Language, a norma para construção de sites a 3D
(http://www.vrml.org). Actualmente, esta norma está a ser actualizada pelo X3D.

• WINS - Windows Internet Naming Service (dinâmico) é usado em conjunto com o


TCP/IP no mapeamento de NetBIOS names em IP addresses. Note-se que um
sistema WINS deve estar relacionado apenas com um determinado segmento da
rede. No entanto, diferentes WINS podem ser, entre si, replication partners. Em
termos de comandos, tem-se:
o net start wins
o net stop wins
o net pause wins

• WinSock - Interface standard, baseado na especificação Berkeley Unix socket, para


programas de comunicação em TCP/IP em ambiente Windows.

• Workstation - Serviço do NT que permite a um computador aceder a recursos do


outro.

• WWW (port 80) - Siglas de World Wide Web é um serviço Internet que torna
possível a transferência de informação de sítios remotos (URL) para máquinas
locais.

• X.25 - Orientado à ligação, Full-duplex, utiliza o protocolo X.21 a nível físico e


tramas HDLC, este protocolo permite a criação de circuitos virtuais permanentes
numa só ligação de dados sob a rede telefónica existente.

• Yellow Page Listings - Páginas amarelas da Web. Consulte, por exemplo,


http://bigyellow.com, http://www.yellow.com ou http://www. bizweb.com.

apostilando.com 88
Web Sites Consultados

• http://msdn.microsoft.com/library/tools/aspdoc/iiwaaspw.htm

• http://www.devguru.com

• http://www.microsoft.com/data/

• http://www.aspalliance.com/glennncook/

• http://www.aspsites.com/

• http://msdn.microsoft.com/library/tools/aspdoc/iiwaaspw.htm

• http://www.devguru.com

• http://www.microsoft.com/data/

• http://www.aspalliance.com/glennncook/

• http://www.aspsites.com/

apostilando.com 89
Índice

1 Internet Information Server...............................................................................................3


1.1. Conceitos Básicos.....................................................................................................3
1.2. Instalação do IIS.......................................................................................................3
1.3 TCP/IP em MS-Windows...........................................................................................6
1.4 DNS............................................................................................................................7
1.5 Criação de um Web Site...........................................................................................10
1.6 Administração de um Web Site................................................................................12
1.7 Directório Virtual.....................................................................................................15
1.8 Instalação de um FTP Site.......................................................................................17
1.9 Monitorização da Performance do Web Server.......................................................19
2 Active Server Pages (Part I)............................................................................................22
2.1 Introdução................................................................................................................22
2.2 Forms.......................................................................................................................27
2.3 Ficheiros de Texto....................................................................................................30
2.4 O Objecto Request...................................................................................................32
2.5 Introdução ao Acesso a Bases de Dados em Ambiente Web...................................35
2.6 Construção de uma Aplicação Web com ActiveX Data Object...............................37
2.7 Database Schemas....................................................................................................47
2.8 Envio de Correio Electrónico via ASPs...................................................................49
2.9 Acesso ao SQL Server..............................................................................................51
3 Active Server Pages (Part II)...........................................................................................58
3.1 Programas Clássicos................................................................................................60
A) FACTORIAL........................................................................................................60
B) LEITURA DE FICHEIROS DE TEXTO (Versão 1)............................................61
C) ESCRITA EM FICHEIROS DE TEXTO.............................................................61
D) LEITURA DE FICHEIROS DE TEXTO (Versão 2)............................................62
E) ACESSO AS VARIÁVEIS DA NORMA CGI .....................................................62
F) Envio de dados entre .ASPs utilizando o método POST (versão 1)......................63
G) Envio de dados entre .ASPs utilizando o método POST (versão 2).....................64
H) Exemplos da utilização de funções prédefinidas..................................................65
I) Detecção do Browser do Cliente............................................................................66
3.2 Acesso a Base de Dados (MS-Access).....................................................................66
A) ACESSO À PIZZA.MDB VIA ODBC (TABELA PIZZA)..................................67
B) ACESSO À PIZZA.MDB VIA ADO....................................................................68
C) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ODBC..............................68
D) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ADO.................................69
E) APAGAR UM REGISTO NA PIZZA.MDB VIA ODBC.....................................70
F) APAGAR UM REGISTO NA PIZZA.MDB VIA ADO........................................71
F) PESQUISA DE UM REGISTO POR NOME NA PIZZA.MDB VIA ADO.........72

apostilando.com 90
3.3 Acesso a Conteúdos de Multimédia com o MS-Access...........................................73
Glossário............................................................................................................................76
Web Sites Consultados.......................................................................................................89
Índice..................................................................................................................................90

apostilando.com 91

Você também pode gostar