Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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 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.
• 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.
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.
apostilando.com 9
A actualização da janela é feita pela tecla F5 (refresh) conforme a imagem anterior prova.
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.
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.
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.
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
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).
apostilando.com 18
1.9 Monitorização da Performance do Web Server
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.
• Measured Async I/O Bandwidth Usage - Média do número total de bytes enviados
e recebidos pelo Web Server por minuto.
• 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.
apostilando.com 20
• Logical Disk - Percentagem de espaço livre no disco.
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.
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.
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.
apostilando.com 24
o <% Dim NumeroLinhas %>
• Os testes de ficheiros .ASP devem ser realizados num servidor com o Internet
Information Server.
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>
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
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.
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>
<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>
apostilando.com 29
Caso o utilizador digite um conjunto de caracteres, a validação dos dados é feita
respondendo o sistema com o seguinte output:
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.
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.
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).
Como seria de esperar, o output desta ASP é o seguinte e que representa a visualização do
conteúdo do ficheiro noticias.txt.
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:
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>
<%= Request.ServerVariables(variavel) %><BR>
<% Next %>
<P><HR>
</BODY>
</HTML>
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.
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:
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>
<%
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.
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:
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: </b><input type="text" name="T1"
size="41"></p>
<p align="left"><b>Email: </b>
<input type="text" name="T2" size="41"></p>
<p align="left"><b>Comentário:</b></p>
<p align="left">
<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>
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.
• 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.
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: </b><input type="text" name="T1"
size="41"></p>
<p align="left"><b>Email: </b><input type="text" name="T2"
size="41"></p>
<p align="left"><b>Comentários: </b></p>
<p align="left"> <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: </b><input type="text" name="T1"
size="20"></p>
<p align="left"><b>Password: </b><input type="password" name="T2"
size="20"></p>
<p align="left"><b>Livro ID: </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>
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...
apostilando.com 46
<option>MUSICA</option>
<option>GEOLOGIA</option>
</select></p>
<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'"
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
<BODY>
<HR>
<% If Request.Form("FROM")="" OR Request.Form("TO")="" OR
Request.Form("MESSAGE")="" OR Request.Form("SUBJECT")="" Then %>
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>
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).
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.
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.
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)
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>
A) FACTORIAL
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>
<%
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 %>
<%
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
%>
<%
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
%>
apostilando.com 62
<P><HR><P>
<% For each variavel In Request.ServerVariables %>
<P><H3><%= variavel %></H3>
<%= Request.ServerVariables(variavel) %><BR>
<% Next %>
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>
<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>
<%
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.
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"
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!!
<%
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!!
</form>
apostilando.com 70
<P>Registo apagado!!
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = MM_pizza_STRING
rs.Source = "SELECT * FROM pizza"
rs.Open() %>
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"
<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
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:
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"
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
• 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.
• 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.
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.
• Datagrama - Pacote de dados transmitidos pela rede e que incluem, entre outros
campos, o endereço do remetente e do destinatário.
• Dial-up Line - Canal de comunicação não dedicada cuja conexão é quebrada após
a chamada se completar.
• 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).
• Dual-Homed Host - Servidor configurado com duas placas de rede, cada uma
ligada a uma rede diferente (Multihomed Computer).
• 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)
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).
• 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.
• 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
apostilando.com 79
• HOSTS - Ficheiro localizado em \winnt\System32\drivers\etc e que traduz FQDN
em endereços IPs.
• ISP - Internet Service Provider é uma empresa que permite a conexão de um Web
Server, por exemplo, à Internet.
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).
• 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.
• MPEG - Motion Picture Expert Group, standard de compressão para vídeo (ratio
200:1).
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.
• 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.
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).
• 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.
• 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.
• RFCs - Request For Comments são documentos onde são propostas os futuros
standards da Internet.
• 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.
• Scope - Num Index Server é conjunto de documentos procurados por uma query.
• Share - Nome referido em Windows Server que permite a partilha de recursos para
a rede.
• 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).
apostilando.com 85
• SNA Server - Componente do Microsoft Back Office com o objectivo de ligar o
desktop Windows a mainframes IBM.
• SSL - Secure Sockets Layer é uma interface desenvolvida pela Netscape que
permite a transferência encriptada de dados entre um cliente e um servidor.
• 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.
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.
• 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.
• 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.
• 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.
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
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