Você está na página 1de 84

Captulo I Conceitos Introdutrios

CAPTULO I CONCEITOS I NTRODUTRIOS


Aplicaes cliente-servidor
Consiste na diviso de processos entre estaes clientes e servidores, com a finalidade de buscar
melhor performance, menor tempo de resposta e maior facilidade de manuteno.
Active Server Pages O que so?
Active Server Pages so pginas web que possuem contedo dinmico. Tais pginas consistem
em arquivos de extenso .asp que contm combinaes de Server-Side scripts e tags HTML.
Todo o cdigo de programao existente em pginas Asp executado no servidor, e este retorna
ao cliente somente respostas em HTML padro o que faz com que aplicaes Asp possam ser
acessadas por qualquer browser existente no mercado. Uma aplicao feita em Asp pode ainda
conter linhas de Client-Side script, que sero executados na estao cliente. Essas pginas devem
estar hospedadas num servidor Microsoft Information Server.
Client Side scripts
So cdigos de programa que so processados pela estao cliente. Geralmente em aplicaes
voltadas Internet, o cdigo que executado no cliente cuida apenas de pequenas consistncias
de telas e validaes de entrada de dados
Em se tratando de pginas web, os client-side scripts tero de ser processados por um browser. O
maior problema de se utilizar este tipo de artifcio em uma aplicao a incompatibilidade de
interpretao da linguagem entre os browsers. O Microsoft Internet Explorer, por exemplo, capaz
de interpretar o Visual Basic Script, porm o Netscape no o faz sem o auxlio de um plug in (que
foi desenvolvido por terceiros). H ainda o problema de verses muito antigas de navegadores,
que no conseguem interpretar nenhum script.
Em grande parte das situaes, no possvel exigir que o usurio final disponha de determinado
produto para acessar a aplicao. Portanto importante pesar todos estes fatores ao planejar
alguma aplicao com client-side scripts.
A linguagem script mais indicada para se construir client-side scripts o JavaScript, devido a sua
compatibilidade com os dois browsers (Netscape e Microsoft Internet Explorer, que devem ser de
verses iguais ou superiores a 3.0 e 4.0 respectivamente).
Server Side scripts
So cdigos de programa que so processados no servidor. Devido a este fato, no necessrio
preocupar-se com a linguagem que o cdigo foi criado: o servidor quem se encarrega de
interpret-lo e de devolver uma resposta para o cliente. Em pginas Asp, so esses cdigos os
maiores responsveis pelos resultados apresentados, e a linguagem default utilizada o Visual
Basic Script.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 1

Captulo I Conceitos Introdutrios

Como funciona uma pgina Asp? - Esquema

Ambiente de desenvolvimento de pginas Asp


Como os arquivos asp so arquivos do tipo texto (ASCII), eles podem ser escritos em um editor de
textos comum Edit ou Notepad, por exemplo. Existe tambm o MS-Visual Interdev, que
proporciona um ambiente mais agradvel de desenvolvimento, mas exige os mesmos
conhecimentos do programador.
Pr-Requisitos de funcionamento
Pginas asp necessitam ser hospedadas no servidor Web da Microsoft: o Internet Information
Server (IIS) na verso 3 ou superior. Este servidor deve ser instalado numa mquina NT Server 4.
Para o IIS 3, ainda preciso instalar um pacote adicional do Asp para que as aplicaes
funcionem. A partir da verso 4 este pacote j vem incorporado ao IIS.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 2

Captulo I Conceitos Introdutrios

Resumo
Neste captulo aprendemos que...
Active Server Pages: So pginas web dinmicas que combinam HTML, server-side scripts
e podem tambm conter client-side scripts.
Client-side scripts: So cdigos de programao que rodam na estao cliente.
Geralmente so responsveis por pequenas validaes e consistncias. Seu
funcionamento dependente do browser utilizado.
Server-side scripts: So cdigos de programao que rodam no servidor, sendo assim,
independentes do browser. Em programas Asp, so os grandes responsveis pela
atividade da aplicao.
Funcionamento: Ao atender um pedido por uma pgina, o servidor processa o cdigo script
da mesma e retorna ao cliente solicitante uma resposta HTML.
Requisitos: As pginas Asp devem ser hospedadas em um servidor Windows NT Server 4
com o Internet Information Server (verso 3 ou superior).
Dicas

Voc pode tornar suas aplicaes muito mais acessveis atravs da Internet. Seus clientes
ficaro muito mais satisfeitos ao encontrar uma aplicao disponvel em qualquer parte do
mundo, em qualquer hora, em qualquer microcomputador.

Pense bem antes de adicionar client-side scripts em suas pginas. Voc poder tornar
uma aplicao perfeita em algo inacessvel para alguns usurios.

?
Que browsers suportam ASP?
Se a aplicao no possuir client-side script, todos os browsers suportam ASP. Isto
acontece pelo fato das pginas ASP serem processadas pelo servidor. O que o
cliente recebe somente cdigo HTML padro.
Terei meu cdigo fonte protegido?
Sim. Como o servidor retorna somente o resultado HTML, o cdigo fonte (lgica) fica
preservado. Se, no browser, visualizarmos a fonte da pgina, veremos somente
cdigo HTML.
Meu NT Server j veio com o IIS 2. Posso utiliz-lo para Active Server Pages?
No. A tecnologia Asp foi incorporada somente a partir da verso 3.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 3

Captulo II O Internet Information Server

Captulo II - O Internet Information Server


O Microsoft Internet Information Server (IIS) o servidor web da Microsoft. nele que devemos
configurar os alicerces das nossas aplicaes ASP, criando diretrios virtuais, definindo
permisses de acesso e disponibilizando as aplicaes. atravs do Management Console do IIS
que faremos estas configuraes.
Instalao do IIS
Antes de detalharmos a instalao do IIS, preciso saber quais so seus pr-requisitos:

Windows NT Server 4.0


Internet Explorer 4.0 ou superior.
Option Pack 4.0

A partir destes softwares e pacotes, podemos iniciar a instalao do IIS que na verdade, faz parte
do pacote Option Pack 4.0 da Microsoft.
Ao iniciar a instalao, a primeira tela a ser apresentada a seguinte:
Se voc observar o
contedo desta tela,
ver que um dos itens
que ser instalado o
Internet
Information
Server (IIS).
Clique em Next.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 4

Captulo II O Internet Information Server

Especifique o tipo de
instalao a ser feita.
Como
exemplo,
estaremos utilizando a
instalao
customiza,
onde podemos escolher
os
componentes
a
serem instalados.

Nesta tela, selecione os


componentes a serem
instalados.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 5

Captulo II O Internet Information Server

Depois de selecionados
os componentes, ser
solicitado
ao
administrador, o local
onde os pacotes devem
ser instalados. Como
indica a figura ao lado.

Estes so os passos para a instalao do IIS. O prximo item a vermos ser como utilizar o
Management Console para administrar os sites criados.
O Management Console
O Management Console o painel de administrao geral do Microsoft Internet Information
Server. atravs dele que so feitas as configuraes de todos os sites e aplicaes hospedados
no servidor.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 6

Captulo II O Internet Information Server

Gerenciando Web Sites


Em verses anteriores do IIS, no era possvel criar vrios Web Sites com o mesmo IP. Nesta
verso j possvel criar vrios Web Sites com o mesmo IP e ainda administr-los de forma
diferente.
Criando novos Sites

Para criar um novo site, clique com o boto direito do mouse sobre o nome da mquina na qual
deve residir este site, selecione a opo New
New Site. A tela abaixo ser mostrada:
Nesta tela, indique uma descrio do
novo site a ser criado.

Voc deve indicar para o Setup, o


IP da mquina e o nmero da porta
do servidor Web.

Geralmente, as portas de FTP e


HTTP
so
21
e
80,
respectivamente.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 7

Captulo II O Internet Information Server

Nesta parte do Setup indique o


caminho do diretrio Home.

Para
finalizar,
configure
as
permisses de acesso, e selecione
as permisses de Script

Depois de criado o novo site, voc pode alterar as configuraes. A tela baixo mostrada quando
voc executa as propriedades de um Web Site, para isso, clique com o boto direito do mouse no
Web Site e selecione a opo Properties.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 8

Captulo II O Internet Information Server

Cada Web Site criado possui


suas prprias configuraes.
Estas
configuraes
so
independentes de outros site, ou
seja, as configuraes feitas para
um site, no sero as mesmas
para outro, a no ser que voc
faa as mesmas configuraes.
A tela de propriedades dos Web
Sites permite que voc configure
contas
de
segurana,
performance,
filtros
ISAPI,
diretrio Home, documentos,
cabealhos HTTP, mensagens
de erros customizadas.

Item
Web Site
Security Accounts
Performance
ISAPI Filters
Home Directory
Documents
Directory Security
Custom Erros

Descrio
Configurao do IP, portas de conexo e
capacidades de login.
Configurao das permisses de usurios.
Estabele performance, largura de banda e
configuraes de conexo.
Gerenciamento dos filtros ISAPI.
Configurao de permisso de acesso e
configuraes das aplicaes.
Configurao de documentos e rodaps
padres.
Configurao de autenticao da senha,
segurana de comunicao e restries TCP/IP.
Definio e configurao das mensagens de
erro do HTTP.

Alterando os valores padro do Site


Voc tambm pode alterar as propriedades padro (Default) para todos os Sites criados. Para isso,
selecione o nome da mquina onde voc deve criar os Web Sites. A tela a seguir ser mostrada:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 9

Captulo II O Internet Information Server

Para alterar os valores, clique em Edit ...

Diretrios Fsicos e Virtuais


Um diretrio fsico simplesmente o local onde est situada uma aplicao (conjunto de
arquivos ASP e pginas HTML) no servidor, como por exemplo c:\inetpub\apps\ . Um diretrio
virtual nada mais do que um atalho onde o IIS aponta para um diretrio fsico, o que no permite
desse modo que se visualize todo o path dos arquivos acessados. Um exemplo de diretrio virtual
seria www.servidor.unicamp.br/dirvirtual .
atravs do Management Console que podemos criar diretrios virtuais e ajustar as
propriedades de cada um deles.
Criando diretrios virtuais

Para criar um novo diretrio virtual, clique com o boto direito do mouse no Web Site onde est
Virtual Directory. A tela a seguir ser
localizado este diretrio e selecione a opo New
mostrada:
Especifique um
diretrio fsico.

alias

para

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 10

Captulo II O Internet Information Server

Nesta tela, voc deve especificar o


diretrio fsico onde esto suas
aplicaes e pginas.
Clique no boto Browse ..., para
facilitar.

Nesta prxima pgina, especifique


as permisses de acesso de seus
usurios.
Para que um usurio tenha
permisso de rodar um script,
preciso que seja dado a permisso
Allow Script Access.

Configurando as caractersticas das aplicaes


As propriedades de um diretrio virtual um pouco diferente das propriedades dos Sites, pois voc
no precisa configurar especificaes do servio HTTP. Para visualizar as propriedades dos
diretrios virtual, selecione-o e clique com o boto direito do mouse, escolha a opo Properties.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 11

Captulo II O Internet Information Server

Permisses de acesso
neste item esto definidas
as permisses de acesso
que os usurios possuem
para a aplicao localizada
no diretrio
e:\InetPub\DaniM\Outros

Clicando neste boto, voc


poder
configurar
as
propriedades da aplicao.
Permisses de Script
Neste item, voc deve
configurar as permisses
para execuo de scripts.
Para que um ASP possa
ser rodado preciso, pelo
menos,
permisso
de
Scritp.
Clicando no boto Configuration ..., a seguinte tela ser mostrada:
Utilize esta interface para configurar os
arquivos que a aplicao estar
utilizando, dependendo da sua extenso.
Por exemplo, se sua aplicao estiver
utilizando arquivos com extenso .ASP,
estes arquivos devem ser processados
pela DLL asp.dll, localizada em
c:\WINNT\system32\inetsrv\asp.dll.
Observe a figura ao lado onde cada
extenso tem sua DLL correspondente.

Requisitos de segurana sero abordados em outro captulo. Por enquanto, vimos apenas como
configurar o IIS para reconhecer Sites e aplicaes.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 12

Captulo II O Internet Information Server

Resumo
Neste captulo aprendemos que ...

Para instalar o IIS 4.0 preciso do Windows NT Server 4.0, Internet Explorer 4.0 ou
superior e Option Pack 4.0.
O Management Console a interface utilizada para a administrao do IIS.
possvel criar vrios Web Sites para o mesmo endereo de IP e administr-los de
forma diferente.
Com os diretrios virtuais possvel criar um atalho especfico para sua aplicao
dentro de um determinado Web Site.
Para que seja possvel executar scripts (CGIs, ASP) a partir de um endereo, preciso
configurar as permisses de acesso para, pelo menos, Allow Script Access.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 13

Captulo III Forms e ASP

CAPTULO III FORMS E ASP


A relao entre form HTML e ASP muito importante porque a partir de formulrio podemos
disparar aes, e nesta ao que iremos chamar uma pgina ASP. Com isso podemos consistir
os campos, passar parmetros de uma pgina para outra.
A sintaxe para utilizar um Form no HTML a seguinte:

Os parmetros da Tag Form:


ACTION: neste item, voc deve especificar o diretrio e nome do arquivo ASP a ser disparado.
NAME: especifique um nome para seu formulrio. Item no obrigatrio.
METHOD: define como seus dados sero enviados para o servidor. Existem vrios mtodos, mas
o que iremos utilizar com mais frequncia sero dois: GET e POST:
Get
Utilizando este mtodo de envio dos dados, os dados que esto sendo enviados sero mostrados
pelo browser.
<FORM ACTION = "nome_arq.asp" METHOD=GET>
<INPUT TYPE=SUBMIT>
</FORM>
Post
Utilizando este mtodo, os dados sero enviados para o ASP determinado no parmetro ACTION.
<FORM ACTION = "nome_arq.asp" METHOD=POST>
<INPUT TYPE=SUBMIT>
</FORM>
Uma mesma pgina HTML ou ASP pode conter vrios FORMS disparando diferentes pginas
ASP. Observao: a pgina que faz a chamada para uma outra pgina ASP no necessariamente
precisa ser uma pgina ASP, pode ser um HTML. Exemplo:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 14

Captulo III Forms e ASP

Esta primeira pgina pode ser HTML:


<html>
<head>
<title>Untitled Normal Page</title>
</head>
<body bgcolor="#FFFFFF">
<form ACTION = "horas.asp" method="POST">
Clique neste boto para saber as Horas:<P>
<p><input type="submit" name="Horas" value="Horas"></p>
</form>
<BR>
<BR>
<form ACTION = "data.asp" method="POST">
Clique neste boto para saber a Data:
<p><input type="submit" name="Data" value="Data"></p>
</form>
</body>
</html>

Observe que no exemplo acima estamos utilizando dois formulrios e cada um deles faz uma
chamada para um ASP diferente. Vamos detalhar o cdigo HTML:

<form ACTION = "horas.asp" method="POST">


Clique neste boto para saber as Horas:<P>
<p><input type="submit" name="Horas" value="Horas"></p>
</form>
Neste form, inclumos um boto do tipo Submit que deve disparar a ao do Form. A ao do Form
(ACTION) est definido para chamar um ASP chamado horas.asp que se encontra no mesmo
diretrio do HTML. Quando o arquivo estiver em um diretrio diferente do diretrio da pgina que
fez a chamada, necessrio que ele seja indicado.
O cdigo abaixo faz a chamada a outro ASP, para isso definimos um outro formulrio:

<form ACTION = "data.asp" method="POST">


Clique neste boto para saber a Data:
<p><input type="submit" name="Data" value="Data"></p>
</form>

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 15

Captulo III Forms e ASP

Vamos ao ASP das Horas:


<html>
<head>
<title>Horas ... </title>
</head>
<body bgcolor="#FFFFFF">
So exatamente <%=Time %>.
</body>
</html>
Neste caso, a pgina obrigatoriamente deve ser nomeada com a extenso ASP pois contm
cdigo VBScript a ser interpretado pelo servidor. Dvida: qual o cdigo a ser interpretado pelo
servidor?
<%=Time %>
O ASP da Data:
<html>
<head>
<title>Data de Hoje ... </title>
</head>
<body bgcolor="#FFFFFF">
Hoje <% = Date %>.
</body>
</html>
o mesmo caso que o arquivo das Horas, tambm precisa ser nomeado com a extenso ASP,
pois a linha <% = Date %> necessariamente ser interpretada pelo servidor. O restante do cdigo
HTML.
Resumo
Neste captulo aprendemos que ...

Podemos definir vrios formulrio em um arquivo HTML para disparar vrios ASP.
Um arquivo comum HTML pode disparar um ASP, porm um arquivo com cdigos que
devem ser interpretados pelo servidor, deve ser nomeado com a extenso ASP.
Para disparar um ASP a partir de um formulrio preciso definir o parmetro ACTION.
Existem dois mtodos diferentes para disparar um ASP: GET (mostra os dados no
browser) e POST (no mostra os dados no browser).

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 16

Captulo IV O que VBScritp?

CAPTULO IV O QUE VBSCRIPT?


Script
Antes de falarmos sobre o VBScript, interessante esclarecermos o que um script. As
linguagens Scripts foram criadas para permitir a criao de aplicaes para a Internet rapidamente.
Se voc comparar estas linguagens com as linguagens que costumamos utilizar, ir perceber que
as primeiras so muitos mais fceis e simples de aprender e desenvolver.
Os scripts nos permitem criar aplicaes que desempenham funes como:
Alterar a linha de status do browser;
Definir um timeout para determinada procedure;
Rodar telas de alerta, confirmao e input;
"Forar" a navegao para outras pginas;
Alterar cor de fundo, barra de ttulos, etc.;
Criar uma nova pgina com textos;
Executar funes do browser como Back, Forward, Home, etc.;
Executar procedimentos quando funes do browser forem executadas.

Visual Basic Script Language (VBScript)


O Visual Basic Script Language uma das muitas possibilidades de linguagem Script que rodam
num servidor e, para o IIS, ela a linguagem default (padro). Desenvolver aplicaes utilizando
esta linguagem no um bicho de sete cabeas. Vejamos algumas caractersticas da linguagem:

similar ao VBA (Visual Basic Application) linguagem criada para fornecer aos
aplicativos outras funcionalidades e Visual Basic.
Permite a manipulao de strings, datas, numricos
Permite a utilizao de todos os comandos do Visual Basic, porm no permite a
manipulao de banco de dados e acesso aos perifricos.
A manipulao de banco de dados feita atravs do objeto ADO, o VBScript apenas
cria instncias deste objeto, a partir da, voc pode utilizar os mtodos deste objeto
para manipular os dados.
Tem um mecanismo de comunicao com servidores de objetos COM, como o
Microsoft Exchange Server, Microsoft Index Server, Database Servers.

Baseada nas funcionalidades de programao do Visual Basic, um linguagem leve que


nativamente executada pelo Internet Explorer (3.0 ou superor) e que pode ser executada por
outros browsers a partir de pug-in.
Mas, como criar uma pgina ASP utilizando o VBScript?
Antes de mais nada, temos que ter em mente que alguma coisa tem que interpretar os cdigos do
VBScript. O responsvel por esta interpretao o IIS (Internet Information Server), por isso
entendemos que o cdigo deve ser interpretado no Servidor e no no cliente que s ter o
browser.
Para que o cdigo seja interpretado pelo Servidor, preciso seguir algumas instrues:
1. Utilizando a tag <% %>
Esta Tag deve ser utilizada quando voc pretende executar qualquer cdigo VBScript
no servidor. Entre <% e %> possvel ser escrito qualquer cdigo em VBScript.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 17

Captulo IV O que VBScritp?

Quando seu script possuir HTML e cdigo VBScript o servidor saber qual informao
dever ser retornada para o cliente (browser). Por exemplo:
<% if Hour(Now) < 12 then %>
Bom dia!
<% else %>
Boa tarde!
<% end if %>
No exemplo acima, as linhas que estiverem
entre a tag <% %> sero interpretadas pelo Servidor IIS e dependendo da condio
satisfeita, se a hora for menor que 12 ser mostrado um HTML com Bom dia!, se no
o HTML retornado pelo Servidor conter Boa Tarde!.
Para retornar no HTML valores de variveis diretamente do script, utilize a seguinte
sintaxe:
A data de hoje <% = Date %>.
Com a linha acima, o HTML a ser retornado ser (imaginemos que o dia de hoje seja
20/08/1999):
A data de hoje 20/08/1999.
2. Utilizando a tag <SCRIPT>
Com esta tag tambm possvel criar scripts que rodam no servidor utilizando a
sintaxe:
<SCRIPT LANGUAGE = VBScript RUNAT=Server>
</SCRIPT>
preciso especificar a linguagem script a ser utilizada e onde esta ser interpretada. A
partir disto, s fazer a chamada de alguma parte do HTML. No caso acima, o script
que estiver entre a tag <SCRIPT> </SCRIPT> deve ser escrito na linguagem VBScript
e ser interpretada por um servidor IIS. Esta tag muito utilizada para criar funes e
subrotinas. Por exemplo:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Function RetornaData()
RetornaData = Date
End Function
</SCRIPT>

Esta funo retornar a data do sistema no Servidor. Para fazer a chamada desta
funo, ser necessrio utilizar as tags <% %>. Por exemplo:
A data de hoje <% = RetornaData() %>.
Outra alternativa disponvel no IIS para retornar valores direto para o HTML, sem
utilizar a chamada acima, usando o Response.Write (mais adiante iremos estud-lo
detalhamente):

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 18

Captulo IV O que VBScritp?

<SCRIPT LANGUAGE=VBScript RUNAT=Server>


Function RetornaData()
Response.Write A data de hoje & Date & .
End Function
</SCRIPT>
O HTML retornado (supondo que a data seja 20/08/1999):
A data de hoje 20/08/1999.
A pergunta imediata que voc faria: como possvel retornar um HTML sendo que em
momento algum foi feita a chamada para a funo? Bem, quando feito um pedido ao
servidor pela execuo de um ASP, o servidor executa todas as funes declaradas
no ASP, ento podemos concluir que esta funo tambm foi executada. Como o
Response.Write retorna diretamente para o HTML o contedo do texto, ser mostrado
para o usurio o texto definido.

O prximo passo para a criao de uma pgina ASP introduzir o cdigo HTML. Por
exemplo:
<HTML>
<BODY>
<% if Hour(Now) < 12 then %>
<CENTER> Bom dia! </CENTER><BR>
<% else %>
<CENTER> Ol! </CENTER> <BR>
<% end if %>
<CENTER> Sua primeira pgina utilizando VBScript e HTML! </CENTER>
</BODY>
</HTML>
Este cdigo inteiro constitui uma pgina ASP, na qual voc mesclou cdigo em HTML e
VBScript. O Servidor saber que o cdigo entre <% %> ser interpretado e no deve ser
mostrado para o cliente, apenas seu resultado. Neste caso, a pagina a ser retornada para
o browser ser:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 19

Captulo IV O que VBScritp?

Lembrando que os arquivos com cdigo VBScript devem ser nomeados com a extenso
ASP, por exemplo: primeiro_programa.asp. Desta forma, o IIS entender que o pedido foi
feito a partir de uma pgina ASP.
Se for utilizada a Tag <SCRITP> </SCRIPT>, o cdigo VBScript e HTML ficar:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Function RetornaData()
RetornaData = Date
End Function
</SCRIPT>
<HTML>
<BODY>
<CENTER><B>A data de hoje <% = RetornaData() %>.</B></CENTER>
</BODY>
</HTML>

O HTML retornado pelo servidor ser:

Ento, vimos como fazer para um script - utilizando o VBScript rodar no servidor. Mas, e
se voc quiser fazer consistncias de tela para o usurio e que estas estejam definidas na pgina
corrente, ou seja, no haver um pedido para o servidor, o cdigo dever ser executado no
browser.
Com o VBScript possvel criar rotinas que sejam executadas pelo cliente. Porm, dois
aspectos devem ser observados quando decidimos programar subrotinas e funes para rodar no
browser:

Em nosso caso, ser necessrio que o seu browser seja o Internet Explorer 4.0 ou
superior.
A programao deve ser baseada nos eventos dos objetos do formulrio e do prprio
formulrio. Por exemplo: ONCLICK, CHANGE, GOTFOCUS.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 20

Captulo IV O que VBScritp?

Exemplo de Cdigo:

<html>
<head>
<title>Cdigo que roda no Cliente.</title>
</head>
<script language="VBScript">
SUB BOTAO1_ONCLICK()
RodarCli.BOTAO1.Value = "Mudamos o Value!"
END SUB
</script>
<body bgcolor="#FFFFFF">
<form NAME=RodarCli method="POST">
<p><input type="button" name="BOTAO1" value="Vamos mudar o value!"></p>
</form>
</body>
</html>

O Resultado deste HTML:

Esta a pgina aberta antes de clicar o boto Depois de clicar o boto da pgina sua
Vamos mudar o value!
descrio alterada para Mudamos o Value
O HTML:

<form NAME=RodarCli method="POST">


<p><input type="button" name="BOTAO1" value="Vamos mudar o value!"></p>
</form>
Nesta parte, estamos montando o boto. Para que a subrotina seja executada, o boto
deve ser criado em um form (formulrios, mais adiante estaremos estudando de forma mais
detalhada), deve ser definido um nome para este objeto e seu tipo deve ser button. Depois de
definir o objeto que deve disparar a ao, voc deve programar a subrotina:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 21

Captulo IV O que VBScritp?

<script language="VBScript">
SUB BOTAO1_ONCLICK()
RodarCli.BOTAO1.Value = "Mudamos o Value!"
END SUB
</script>
Esta sub-rotina est sendo executada pelo browser, observe que no configuramos a Tag
<SCRIPT> com o parmetro RUNAT.
O evento que deve disparar a ao ser o evento ONCLICK, ou seja, quando clicarmos no
boto o cdigo escrito ser disparado.
Para fazer a referncia ao objeto do formulrio, voc deve seguir a sintaxe abaixo:

Por exemplo:
RodarCli.BOTAO1.Value

Resumo
Neste captulo aprendemos que ...

VBScript a linguagem script default (padro) do IIS (Internet Information Server).

Quando o cdigo deve rodar no servidor, necessrio que este esteja entre a
Tag <% %> ou <SCRIPT RUNAT = Server> </SCRIPT>.

Um script tambm pode rodar no cliente, basta apenas utilizar a tag <SCRIPT>
</SCRIPT> indicando a linguagem a ser utilizada para que o browser possa interpret-la.
Dicas

preciso prestar bastante ateno quando scripts so definidos para rodarem nos
browsers, pois alguns scripts apenas so interpretados por determinado browser e verso.
Por exemplo:
<script language="javascript1.1"> - apenas ser executado em Netscape 3.0+
<script language="jscript"> - apenas ser executado em Microsoft Internet Explorer
3.0+
<script language="VBScript> - apenas ser executado em Microsoft Internet
Explorer 4.0+

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 22

Captulo V Variveis

CAPTULO V VARIVEIS
As variveis so definidas quando precisamos armazenar temporariamente valores para que a
aplicao tenha acesso s informaes e consiga manipul-las.
Tipo Suportado pelo VBScript
Enquanto o Visual Basic suporta muitos tipos de dados (variveis), o VBScript apenas suporta o
tipo Variant. Este tipo nico porque suporta todos os tipos suportados pelo Visual Basic: integer,
double, string, date and currency. O tipo Variant assume o tipo de varivel dependendo da
atribuio feita a ele. Por exemplo, declaramos um varivel chamada teste:
Dim teste

Esta varivel do tipo Variant, pois no tem


a especificao do seu tipo:

Teste = Acabamos de declarar a varivel


Teste = 25

Teste nesta linha do tipo numrico.


E ser tipo numrico at que haja
outra atribuio de valores diferente
de numrico.

Teste = A varivel recebeu 25

Teste na linha ao lado do


tipo String. E ser tipo String
at que haja outra atribuio
de valores diferente de string.

Teste na linha acima volta a assumir o tipo


String, pois o valor da atribuio foi texto.

SubTipos (Subtypes)
O tipo Variant consiste em pequenas unidades chamadas Subtipos (Subtypes). Estes subtipos
identificam como um valor armazenado pela varivel definida como Variant. A tabela abaixo
descreve os subtipos utilizados no VBScript 2.0:
SubTipo
Empty
Null
Boolean
Byte
Integer
Currency
Long
Single

Double

Date (Time)
String
Object

Descrio
Valor 0 (zero) para variveis numricas e comprimento zero ( ) para
variveis string.
Variant possui um valor que no vlido.
Verdadeiro ou Falso.
Inteiro com valores entre 0 a 255.
Inteiro com valores entre 32,768 at 32,767.
Tipo
moeda.
Valores
entre
922,337,203,685,477.5808
at
922,337,203,685,477.5807.
Inteiro com valores entre 2,147,483,648 at 2,147,483,647.
Ponto Flutuante com preciso simples. Valores entre: -3.402823E38 at 1.401298E-45 para nmeros negativos; 1.401298E-45 at 3.402823E38
para nmeros positivos.
Ponto Flutuante com dupla preciso. Valores entre:
-1.79769313486232E308 at -4.94065645841247E-324 para valores
negativos; 4.94065645841247E-324 at 1.79769313486232E308 para
valores positivos.
Contem um nmero que representa uma data entre 01/01/100 at
31/12/9999.
Contem um comprimento varivel de texto que pode chegar at 2 bilhes de
caracteres.
Contem um objeto

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 23

Captulo V Variveis

Error

Contem um nmero de erro gerado por um objeto.

Exemplo do comportamento de uma varivel do tipo Variant:


<% Dim teste
Dim Mensagem

Declaramos duas variveis do


tipo Variant, onde Teste assume
um valor inteiro e Mensagem
assume o valor string.

teste = 25
if teste = 30 then
Mensagem = O valor de Teste igual a 30
Else
Mensagem = O valor de Teste igual a 25
End if
%>

Funes de Converso de Tipos de Dados


Antes de descrever as funes, precisamos saber para que serve uma funo de converso de
tipo. Estas funes so utilizadas para forar uma varivel Variant assumir um subtipo especfico.
A partir do momento que as pginas ASP comearam a ser distribudas pela Internet, ou seja,
pessoas do mundo inteiro acessando sua pgina, as configuraes de datas, moeda passaram a
ser um fator preocupante. Pois estas configuraes so recuperadas da opo Configuraes
Regionais do Painel de Controle da mquina onde o VBScript est sendo executado. Como o
VBScript, na maioria das vezes, executado em um servidor, as configuraes recuperadas so
as configuraes feitas no prprio servidor.
As funes de converso de dados foram criadas para evitar erros em tempo de execuo ou
mesmo de lgica por sua aplicao no reconhecer o tipo de dados pelas configuraes. Estas
funes conseguem reconhecer as configuraes regionais e interagir com vrios formatos
diferentes de dados sem mud-los, evitando que erros ocorram.
A tabela abaixo descreve as funes que permitem a converso de dados:
Funo
Cbool
Cbyte
Ccur

Valor Retornado
Boolean
Byte
Currency

Cdate
Cdbl

Date
Double

Cint
CLng

Integer
Long

CSng

Single

CStr

String

Descrio
Verdadeiro/Falso
Valor numrico de 0 at 255
Valores entre 922,337,203,685,477.5808 at
922,337,203,685,477.5807.
Qualquer data vlida
-1.79769313486232E308
at
4.94065645841247E-324
para
valores
negativos;
4.94065645841247E-324
at
1.79769313486232E308 para valores positivos.
32,768 at 32,767. Fraes so arredondadas.
2,147,483,648 at 2,147,483,647. Fraes so
arredondadas.
-3.402823E38 at -1.401298E-45 para nmeros
negativos; 1.401298E-45 at 3.402823E38 para
nmeros positivos
Retorna texto, exceto Null

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 24

Captulo V Variveis

Identificando o Tipo de Dados


Como o VBScript consegue identificar uma srie de subtipos de variveis, ser necessrio, s
vezes, que voc saiba qual o subtipo com o qual voc est trabalhando no seu script. Para isso,
usaremos a funo VarType que identifica o subtipo por um valor numrico. A tabela abaixo
descreve os valores retornados pela funo:
Subtipo
Empty
Null
Integer
Long
Single
Double
Currency
Date (Time)
String
Automation Object
Error
Boolean
Variant
Non-Automation Object
Byte
Array

Valor Retornado
0
1
2
3
4
5
6
7
8
9
10
11
12
13
17
8192

Exemplo
<%

Dim teste, Mensagem, ResultMedia

Function Media(Valor)
Dim Retorna, cont
Retorna = 1
For cont = 1 to Valor
Retorna = Retorna * Cont
Next
Media = Retorna
End Function
teste = 5
if teste = 5 then
Mensagem = "O valor da varivel Teste igual a 5"
End if
ResultMedia = Media(teste)
%>
<HTML><BODY><center><b>
<FONT COLOR="#008000">O tipo que varivel <i>Teste</i> assumiu foi: <% = VarType(teste) %></FONT><BR>
<FONT COLOR="#0000C0">O tipo que varivel <i>Mensagem</i> assumiu foi: <% = VarType(Mensagem)
%></FONT><BR>
<FONT COLOR="#400040">O tipo que varivel <i>ResultMedia</i> assumiu foi: <% = VarType(ResultMedia)
%></FONT><BR>
<FONT COLOR="#0000FF">As variveis Retorna e Cont no podem ser referenciadas, pois existem apenas
quando a Funo Media est sendo executada.</FONT>

</b></center></BODY></HTML>
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 25

Captulo V Variveis

Para verificar o subtipo de dados que a varivel teste assumiu, utilize o cdigo script:
<% = VarType(teste) %> que j retornar o valor numrico correspondente ao subtipo assumido.
No caso da varivel teste, o valor retornado 2, que indica o subtipo Integer.
No podemos referenciar as variveis cont e Retorna, pois estas variveis existem apenas para a
funo, para o restante do script so invlidas.
O resultado retornado pelo servidor:

Declarao de Variveis
Quando declaramos variveis, precisamos ter em mente a sua utilizao: se ser uma varivel que
dever ser utilizada por toda uma aplicao ou apenas por um mdulo, uma funo, subrotina.
Este perodo de vida da varivel flexvel, ou seja, voc pode definir onde, quando e por quanto
tempo esta varivel dever existir.
Escopo das variveis
As variveis no VBScript podem existir em dois nveis ou escopos: script ou procedimento. O termo
escopo est relacionado ao espao de tempo no qual uma memria pode ser referenciada na
memria.
O espao de tempo, que se refere ao tempo de vida da varivel, depende em qual nvel esta
varivel foi declarada:
Script
Quando uma varivel definida fora de qualquer funo e procedimento, caracterizada
uma varivel vlida para todo o script.
Procedimento
Quando voc verificar que uma varivel precisa ser apenas vlida para uma funo ou
procedimento, declare-a dentro deste procedimento ou funo. Desta maneira, assim que a
funo ou procedimento for executado, a varivel deixa de existir na memria.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 26

Captulo V Variveis

Exemplo (o que importante at este ponto que estudamos, est em negrito)


<%

Dim teste
Dim Mensagem
Dim ResultMedia

Function Media(Valor)
Dim Retorna
Dim cont
Retorna = 1
For cont = 1 to Valor
Retorna = Retorna + Cont
Next
Retorna = Retorna / cont
Media = Retorna
End Function
teste = 5
if teste = 30 then
Mensagem = "O valor da varivel Teste igual a 30"
Else
Mensagem = "O valor da varivel Teste igual a 5"
End if
ResultMedia = Media(teste)%>
<HTML><BODY>
<CENTER><B><% = mensagem %><BR><BR>
A mdia ponderada dos valores da varivel Teste igual a: <% = ResultMedia %>
</B></CENTER>
</BODY></HTML>
O resultado deste ASP ser a pgina:

Explicao do cdigo

<%

Dim teste
Dim Mensagem

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 27

Captulo V Variveis

Dim ResultMedia
No exemplo que criamos, as variveis acima foram declaradas fora de qualquer funo ou
subrotina, desta forma, podem ser utilizadas por todo o script escrito para esta pgina o que
significa que em qualquer ponto do script podem ser referenciadas.

Function Media(Valor)
Dim Retorna
Dim cont
Retorna = 1
Diferente das variveis teste, Mensagem e ResultMedia, as variveis Retorna e cont podem
apenas ser referenciadas dentro da funo. Para o restante do scritp, as variveis Retorna e cont
no so vlidas.
At este ponto, vimos os tipos de variveis, funes de converso e seu escopo (tempo de vida).
Mas, como declar-las em um script?
Para declarar variveis em seu script, voc deve utilizar as clusulas: Dim, Public, Static.
Dim
Variveis declaradas com o Dim em um script esto disponveis para todas os procedimentos
inclusos neste script, porm as variveis declaradas em um procedimento apenas podero ser
utilizadas neste procedimento.
Exemplo
Dim nomevar [([dimenso]))
Para declarar diversas variveis, utilize vrgulas para separ-las. Por exemplo:
Dim nomevar [([dimenso])), nomevar2

Onde nomevar e nomevar2 so nomes de variveis e dimenso representa o nmero da


dimenso do vetor.
Com a clusula Dim, tambm possvel declarar vetores. Um vetor tratado como uma varivel,
porm utilizado para armazenar uma coleo de informaes similares. Esta coleo acessada
por seu ndice, comeando pelo 0 (zero). Por exemplo, o prximo cdigo cria um vetor com 5
posies. Como os vetores comeam com a posio 0 (zero), 5 posies da varivel TipoProduto
so alocadas. A segunda e terceira linha do cdigo preenchem a primeira e segunda posies do
vetor com os valores Material de Construo e Material Escolar:
Como o vetor comea com 0 (zero), a primeira posio 0 e a quinta posio 4
Dim TipoProduto(4)
TipoProduto(0) = Material de Construo
TipoProduto(1) = Material Escolar

ReDim
A funo ReDim utilizada para manipular vetores dinmicos. Para o VBScript, os vetores podem
ser definidos em dois tipos: Estticos ou Dinmicos. Um vetor esttico tem seu nmero de ndices
definidos, como o vetor que definimos no exemplo acima que possui 5 posies. Um vetor
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 28

Captulo V Variveis

dinmico tem o nmero de ndices variado e este nmero definido quando a aplicao
executada. Voc pode criar um vetor dinmico, apenas declarando-o com os parnteses vazios.
Os vetores dinmicos so diferentes dos estticos. Os dinmicos so utilizados quando a alocao
de memria precisar ser dinmica, ou seja, o vetor pode assumir vrios tamanhos. Para que isso
seja possvel, utilize o comando ReDim. Este comando utilizado para redefinir o tamanho do
vetor. Este tamanho pode aumentar ou diminuir. Se voc precisar aumentar o tamanho de seu
vetor e precisa manter os elementos j inclusos nas posies existentes, utilize o comando
Preserve. Por exemplo, o cdigo a seguir cria um vetor dinmico chamado ProdutosSelecionados e
o redimenciona com 3 posies. A ltima linha expande o nmero de elementos do vetor para 6,
como estamos utilizando a clusula Preserve, o contedo j incluso no vetor permanecer.

Dim ProdutosSelecionados()
ReDim ProdutosSelecionados(3)
ProdutosSelecionados(0) = Caderno
Redim Preserve ProdutosSelecionados(6)

Public
Quando declaramos uma varivel como pblica, esta varivel pode ser referenciada por todo o
script da pgina. Voc tambm pode declarar vetores estticos ou dinmicos com a clusula
Public.
Sintaxe
Public nomevar[([dimenso])]
Onde nomevar o nome da varivel e dimenso o nmero de elementos do vetor.
Private
Variveis declaradas com a clusula Private so o oposto das variveis declaradas com a clusula
Public. So vlidas apenas dentro do script no qual foram declaradas. Podemos tambm declarar
vetores dinmicos e estticos com o Private.
Sintaxe
Private nomevar[([dimenso])]
Onde nomevar o nome da varivel e dimenso o nmero de elementos do vetor.
Declarao
Dim
ReDim
Public
Private

Escopo
Script todo ou Procedimento
Script todo ou Procedimento
Script todo
Script todo

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 29

Captulo V Variveis

Regras para nomear as variveis


Para nomear suas variveis, preciso seguir algumas regras:

Deve comear com um caracter alfabtico;


No pode exceder o tamanho de 255 caracteres;
Deve ser nico no escopo no qual a varivel declarada.

Option Explicit
Por default (padro), a declarao das variveis no obrigatria. Voc pode apenas fazer
referncias a elas, sem declar-las explicitamente. A declarao explicita se refere ao processo de
criao ou instanciao de uma varivel
Exemplo

<%
teste = 5
if teste = 30 then
Mensagem = "O valor da varivel Teste igual a 30"
Else
Mensagem = "O valor da varivel Teste igual a 5"
End if
%>
<HTML><BODY>
<CENTER><B><% = Mensagem %><BR><BR>
</B></CENTER>
</BODY></HTML>
Onde teste e Mensagem so variveis declaradas implicitamente, o VBScript se encarrega de
entend-las como variveis.
Esta declarao implcita no considerada uma
sujeitos a erros de digitao, e para uma este tipo
teste e outra tsete so consideradas variveis
declarao do Option Explicit est disponvel para
declaradas explicitamente.

boa prtica pelo programadores, pois estamos


de declarao, declarar uma varivel chamada
diferentes. Para evitar este tipo de erro, a
que obrigatoriamente todas as variveis sejam

Se voc optar por utiliz-lo, a sua declarao deve ser feita antes de qualquer outra declarao.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 30

Captulo V Variveis

Exemplo (utilizando o exemplo acima)


<% Option Explicit
teste = 5
if teste = 30 then
Mensagem = "O valor da varivel Teste igual a 30"
Else
Mensagem = "O valor da varivel Teste igual a 5"
End if
%>
<HTML><BODY>
<CENTER><B><% = Mensagem %><BR><BR>
</B></CENTER>
</BODY></HTML>
Observe neste exemplo que declaramos a clausula Option Explicit porm, no declaramos
explicitamente a varivel teste. Ao executarmos este ASP no servidor, ser retornado um erro
como mostra a tela a seguir:

A mensagem do erro retornado Variable is undefined: teste significa que a varivel no foi
declarada. Se voltarmos ao script, perceberemos que realmente a varivel no foi declarada.
Vamos estudar o script:

<% Option Explicit


teste = 5
.....................
%>
Como utilizamos a clusula Option Explicit, necessariamente precisamos declarar a varivel teste
explicitamente, para isso, devemos escrever o script da seguinte maneira:

<% Option Explicit


Dim teste
teste = 5
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 31

Captulo V Variveis

if teste = 30 then
Mensagem = "O valor da varivel Teste igual a 30"
Else
Mensagem = "O valor da varivel Teste igual a 5"
End if
%>
Se o ASP for executado novamente, no ocasionar o erro, pois a varivel foi declarada.
Resumo
Neste captulo aprendemos que ...

Existe apenas um tipo de dados suportado pelo VBScritp: Variant.


Embora haja apenas um tipo de dados, existem subtipos que identificaram o valor que
armazenado na varivel, atribuindo-lhe o subtipo especfico de acordo com o valor.
Se o valor for numrico, o subtipo ser integer, por exemplo.
Com a funo VarType, possvel identificar o subtipo assumido pela varivel.
Para o ASP, as varivel possuem dois escopos: Script e Procedimento. Quando
declaramos uma varivel em nvel Script, possvel referenci-la em todo o script.
Quando declaramos em um Procedimento, a varivel apenas vlida para o
procedimento em questo.
Utilizando a clusula Option Explicit, fica obrigatria a declarao explicita da varivel.

Dicas

Utilize a declarao Option Explicit para evitar erros de digitao do nome de uma
varivel existente ou para evitar confuso no cdigo script onde o escopo das variveis
no bem definido.
Quando voc utiliza a clusula Dim em um procedimento, geralmente a declarao
feita no comeo do procedimento.
Antes de atribuir valores a um vetor dinmico, preciso redimenciona-lo usando o
comando ReDim
Quando uma varivel declarada, seu valor padro depende do subtipo de dados que
assumir. Por exemplo, uma varivel numrica inicializada com 0 (zero), uma varivel
string inicializada com comprimento igual a zero ( ).

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 32

Captulo VI Operadores

CAPTULO VI OPERADORES
Operadores
O VBScript possui vrios operadores de programao que ajudam a manipular as variveis em
suas pginas ASP. Muitas linguagens dividem os modelos de objetos em grupos lgicos
agrupados de acordo com suas funcionalidades. Isto d maior flexibilidade para manipular objetos
e variveis dos formulrios e fundamental para o controle do processo de uma aplicao.
Operadores Aritmticos
Os operadores aritmticos nos permite fazer uma srie de clculos matemticos. Geralmente,
possuem a seguinte sintaxe:
Resultado = valor1 operador valor2
Onde Resultado a varivel que receber o valor do clculo, valor1 e valor2 so expresses
numricas e o operador representa a operao matemtica a ser realizada.
A tabela a seguir lista todos os operadores reconhecidos pelo VBScript:
Operador
Adio
Subtrao

Smbolo
+
-

Multiplicao
Diviso
Diviso Inteira

*
/
\

Exponenciao

Descrio
Efetua a soma entre os valores.
Efetua a subtrao entre dois nmeros ou atribui um valor
negativo a nmero.
Efetua a multiplicao entre os valores.
Efetua a diviso entre dois nmeros.
Efetua a diviso entre dois nmeros e retorna um valor
inteiro como resultado.
Efetua a operao de potenciao.

Adio
O operador de adio (+) utilizado para efetuar somas entre valores numricos, mas tambm
pode ser utilizado para concatenar strings.
Sintaxe
Resultado = valor1 + valor2
Onde resultado recebe o valor da soma das expresses numricas valor1 e valor2. Lembre-se,
existe apenas um tipo de varivel no VBScript: Variant. Somar dois valores pode resultar em um
resultado no esperado, por causa da capacidade do tipo Variant mudar automaticamente o
subtipo baseado no valor atribudo varivel.
A tabela abaixo, nos mostra o compotamento do operador +, dependendo do tipo de dados:
Se os valores a serem somados forem:
Numricos
Strings
String e Numrico

O comportamento do operador ser:


Adio.
Concatenao
Adio

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 33

Captulo VI Operadores

Vamos considerar uma situao onde a adio entre dois nmeros pedida. Siga o exemplo:
<% Dim valor1, valor2
Dim resultado
valor1 = 1
valor2 = 3
Resultado = valor1 + valor2
Resultado = valor2 + valor2
Resultado = valor2 + valor1
Resultado = valor1 + valor1

Retorna o resultado igual a 4


Retorna o resultado igual a 33
Retorna o resultado igual a 4
Retorna o resultado igual a 2

%>
Voc pode perceber por este exemplo que sem um entendimento apropriado sobre o tipo de dados
Variant e o comportamento do operador de adio, o resultado pode no ser o esperado. No
exemplo acima, as variveis so explicitamente declaradas e valor1 recebe o 1 (numrico),
assumindo o subtipo Integer, e a varivel valor2 recebe 3 (string), assumindo o subtipo String.
Todas as variveis declaradas so do tipo Variant. Entretanto, o VBScript atribui um subtipo
dependendo do valor atribudo a varivel.
Nas linhas abaixo, a varivel resultado receber o valor 4. Pois, pela regra, quando somamos um
valor numrico e uma string, a soma numrica entre eles efetuada.
Resultado = valor1 + valor2
Resultado = valor2 + valor1
J nesta linha, o resultado diferente. Pois os valores participantes da adio so valores
numricos, ento ser efetuada a concatenao das strings. A varivel resultado conter o valor
(string) 33.
Resultado = valor2 + valor2
Na prxima linha, estamos somando dois valores numricos, pois o subtipo da varivel valor1
Integer. O valor retornado para a varivel resultado ser 2.
Resultado = valor1 + valor1
Mas, e se voc precisasse que o resultado da linha Resultado = valor2 + valor2 fosse numrico?
Para isso, utilize as funes de converso de tipo. Esta linha poderia ser reescrita da seguinte
maneira:

Resultado = CInt(valor2) + CInt(valor2)


A funo CInt utilizada para converter uma varivel para Inteiro. E a varivel resultado receberia
o valor numrico 6.
O mesmo vale para a linha Resultado = valor1 + valor1. Se o resultado a ser retornado
precisasse ser uma concatenao de strings e no uma soma numrica, a linha seria reescrita da
seguinte maneira:

Resultado = CStr(valor1) + CStr(valor1)


A funo CStr utilizada para converter uma varivel para String. E a varivel resultado receberia
a string 22.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 34

Captulo VI Operadores

Subtrao
O operador de subtrao (-) utilizado para efetuar a diferena entre valores numricos ou para
converter um valor numrico positivo em um valor numrico negativo. Para cada uma destas
funcionalidades, preciso uma sintaxe diferente, vejamos quais so:
Resultado = valor1 valor2
Onde resultado recebe o valor da operao entre as variveis numricas valor1 e valor2.
Resultado = -(valor1)
Onde valor1 uma valor numrico.

Multiplicao
O operador de multiplicao (*) utilizado para retornar o resultado da multiplicao entre valores
numricos.
Sintaxe
Resultado = valor1 * valor2
Onde resultado recebe o valor da operao entre as variveis numricas valor1 e valor2. Se
ambas as variveis estiverem com o valor igual a NULL, o valor retornado da operao tambm
ser NULL. Se estiverem vazias, o resultado ser convertido para 0 (zero).
Diviso
O operador de diviso (/) utilizado para dividir uma expresso numrica em outra expresso
numrica.
Sintaxe
Resultado = valor1 / valor2
Onde Resultado recebe o valor da operao entre as variveis numricas valor1 e valor2. As
mesmas regras da multiplicao valem para a diviso. Se ambas as variveis estiverem com o
valor igual a NULL, o valor retornado da operao tambm ser NULL. Se estiverem vazias, o
resultado ser convertido para 0 (zero).
Fique atento para a diviso por 0 (zero). Ser o retornado o seguinte erro:

Microsoft VBScript runtime error 800a000b


Division by zero
Diviso Inteira
O operador da diviso inteira (\) similar ao da diviso, mas foi especificamente, criado para
retornar resultados inteiros apenas.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 35

Captulo VI Operadores

Sintaxe
Resultado = valor1 \ valor2
Onde Resultado recebe o valor da operao entre as variveis numricas valor1 e valor2. Estas
variveis so arredondadas e seu subtipo configurados para Byte, Integer ou Long antes da
operao. Se ambas as variveis estiverem com o valor igual a NULL, o valor retornado da
operao tambm ser NULL. Se estiverem vazias, o resultado ser convertido para 0 (zero).
Exponenciao
O operador de exponenciao (^) utilizado para "elevar" um nmero a outro.
Sintaxe
resultado = nmero1^nmero2
Onde resultado recebe o valor retornado da operao efetuada pelas expresses numricas
nmero1 e nmero2.
Operadores de Comparao
Os operadores de Comparao analisam o relacionamento entre expresses. Lembre-se que uma
expresso pode ser uma combinao de palavras-chaves, operadores, variveis ou constantes
que formam uma string, nmero ou objeto.
Sintaxe geral
Resultado = Expresso1 (operador) Expresso2
Onde Expresso1 e Expresso2 contem uma expresso qualquer e o operador representa o
smbolo de relacionamento entre as expresses (o tipo de comparao).
A tabela abaixo nos mostra os Operadores de comparao utilizados no VBScript:
Operador
Igualdade
Desigualdade
Maior que
Menor que
Maior que ou Igual a
Menor que ou Igual a
Equivalncia de Objetos

Smbolo
=
<>
>
<
>=
<=
IS

Operadores de Comparao d a voc a habilidade para determinar a relao entre expresses.


Tradicionalmente, os desenvolvedores esperam que as comparaes sejam avaliadas como True
(verdadeiro) ou False (falso). Porm, importante considerar uma terceira possibilidade: NULL. Se
a expresso na comparao for NULL, a comparao retornar NULL. importante manter isto em
mente, quando desenvolvemos aplicaes lgicas. Os desenvolvedores devem desenvolver uma
aplicao que possa responder as trs possibilidades de comparao: true, false, NULL.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 36

Captulo VI Operadores

A tabela abaixo nos mostra uma srie de exemplos de comparaes:


Operador

Retorna True se ...

Retorna False se ...

Retorna NULL se ...

<
<=
>
>=
=
<>

Expr1 < Expr2


Expr1 <= Expr2
Expr1 > Expr2
Expr1 >= Expr2
Expr1 = Expr2
Expr1 <> Expr2

Expr1 >= Expr2


Expr1 > Expr2
Expr1 <= Expr2
Expr1 < Expr2
Expr1 <> Expr2
Expr1 = Expr2

Expr1 ou Expr2 = Null


Expr1 ou Expr2 = Null
Expr1 ou Expr2 = Null
Expr1 ou Expr2 = Null
Expr1 ou Expr2 = Null
Expr1 ou Expr2 = Null

Os operadores de comparao atuam como os operadores aritmticos, pois alteram seu


comportamento dependendo do tipo de dados das variveis envolvidas. Na tabela baixo temos
uma descrio do comportamento dos operadores de comparao:
Expresses ...
Numricas
String
Uma numrica e outra String
Uma vazia e outra numrica
Uma vazia e outra string
Ambas as expresses so vazias

Comportamento
Comparao Numrica
Comparao String
A expresso numrica menor que a expresso string.
Comparao numrica sendo que a expresso vazia
tratada como zero.
Comparao string, sendo que a expresso vazia
tratada com comprimento zero ( ).
As expresses so iguais.

Outro tipo de comparao a comparao entre objetos. O operador IS utilizado para fazer esta
comparao. A sintaxe a ser utilizao est descrita abaixo:
Resultado = objeto1 IS objeto2
Onde Objeto1 e Objeto2 representam objetos e o uso da palavra-chave IS determina um
relacionamento entre os objetos.
Quando comparamos objetos, no existe a possibilidade de NULL. O resultado sempre ser True
ou False. Se os objetos forem iguais, o resultado ser igual a True. Se forem diferentes, o
resultado retornado ser False.
Exemplo
<%
Dim Tobjeto, TSObjeto, Resultado
Set Pobjeto = Tobjeto
Set Sobjeto = Tobjeto
Set TerObjeto = TSObjeto

Cria o objeto
Cria o objeto
Cria o Objeto

Resultado = Pobjeto is Sobjeto


Resultado = Pobjeto is TerObjeto

Compara
os Objetos

%>
Na primeira linha de comparao (Resultado = Pobjeto is Sobjeto), o valor retornado True, pois
os dois objeto (Pobjeto e Sobjeto) foram criados a partir de um mesmo objeto.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 37

Captulo VI Operadores

J na segunda linha de comparao (Resultado = Pobjeto is TerObjeto), o valor retornado


False, pois os objetos tm origens diferentes, cada um deles foi criado a partir de objetos
diferentes.
Operadores Lgicos
Os operadores lgicos ajudam a expandir as funcionalidades dos operadores de comparao. O
operador lgico foca o mtodo booleano para determinar se um processo retorna True ou False.
Os operadores lgicos mais utilizados esto listados na tabela abaixo:
Operador
Conjuno
Negao
Desconjuno

Smbolo
AND
NOT
OR

Operador NOT
Este operador utilizado para realizar negao lgica em uma expresso, ou seja, para negar ou
inverter um resultado.
Sintaxe
Resultado = NOT (Expresso)
Onde Expresso qualquer expresso. Por exemplo:
Expresso
<% Dim teste
teste = NOT (10 > 30)
Response.Write teste
%>
Resultados retornado pelo operador NOT:
Expresso
True
False
NULL

Resultado
False
True
NULL

Lembre-se que uma varivel que contm o valor NULL, representa uma varivel com valor invlido.
Consequentemente, qualquer operador reproduzir um resultado NULL. Tenha em mente que um
varivel com uma string vazia ( ), no igual a NULL. Por exemplo:
<%
Variavel = NULL
Resultado = IsNull(Variavel)

Retornar True, pois o contedo de


variavel igual a NULL.

%>
<%
Variavel =
Resultado = IsNull(Variavel)

Retornar False, pois o contedo de


varivel uma string vazia.

%>
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 38

Captulo VI Operadores

* A funo IsNull verifica se o contedo de uma varivel igual a NULL.


Operador AND
utilizado para avaliar um conjunto de expresses como se fosse apenas uma comparao. O
operador AND apenas retornar True, se e somente se todas as comparaes forem verdadeiras.
Sintaxe
Resultado = Expresso1 AND Expresso2
Onde Expresso1 e Expresso2 so quaisquer expresso. Por exemplo:
Expresso
<% Dim teste
teste = (10 > 30) AND (20 < 30)
Response.Write teste
%>
Neste caso, teste receber o valor False. Pois embora 20 seja menor que 30, 10 no maior que
30. Ento, como o AND apenas retorna True se todas as expresses forem verdadeiras, a varivel
teste receber false.
A tabela abaixo nos lista o comportamento do operador AND:
Expresso1
True
True
True
False
False
False
NULL
NULL
NULL

Expresso2
True
False
NULL
True
False
NULL
True
False
NULL

Resultado
True
False
NULL
False
False
False
NULL
False
NULL

Operador OR
Avalia se alguma expresso de uma srie de expresses verdadeira.
Sintaxe
Resultado = Expresso1 OR Expresso2
Onde Expresso1 e Expresso2 so quaisquer expresso. Por exemplo:
<% Dim teste

Expresso

teste = (10 > 30) OR (20 < 30)


Response.Write teste
%>
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 39

Captulo VI Operadores

Neste caso, a varivel teste receber True. Pois uma das expresses acima verdadeira: 20 < 30.
A tabela abaixo descreve o comportamento do operador OR, dependendo do resultado da
expresso:
Expresso1
True
True
True
False
False
False
NULL
NULL
NULL

Expresso2
True
False
NULL
True
False
NULL
True
False
NULL

Resultados
True
True
True
True
False
NULL
True
NULL
NULL

Operadores de Concatenao
Existem dois operadores no VBScript utilizados para somar (concatenar) strings. Veja a tabela
abaixo:
Operador
Concatenao de String
Operador de Adio e String

Smbolo
&
+

Descrio
Usado para concatenar Strings.
Usado para concatenar Strings e
Adio Numrica.

Operador &
Utilizado para somar duas cadeias de caracteres (strings).
Sintaxe
resultado = string1 & string2
Onde string1 e string2 so expresses strings vlidas para o VBScript.
<%
texto = "Treinamento ASP " & "CCUEC UNICAMP"
Response.Write texto
%>
O resultado retornado:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 40

Captulo VI Operadores

Operador +
O operador de Adio tambm pode ser utilizado para concatenar strings. Porm, no
recomendado que voc utilize este operador para este tipo de funo, pois sua funo principal
seria a soma de valores numricos. A ambiguidade ocorre quando o operador + utilizado em
diferentes subtipos, no caso, string e valores numricos.
Sintaxe
Resultado = string1 + string2
Onde string1 e string2 so expresses do subtipo string vlidas para o Vbscript. Por exemplo:
<%
texto = "Treinamento ASP " + "CCUEC UNICAMP"
Response.Write texto
%>
O resultado retornado o mesmo que foi retornado quando utilizamos o operador &.
Ordem de Avaliao das Expresses
A avaliao das expresses baseada nas categorias dos operadores. Operadores aritmticos
so os primeiros a serem processados, seguidos pelos operadores de comparao e por fim, pelos
operadores lgicos.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 41

Captulo VI Operadores

Resumo
Neste captulo aprendemos que ...

Os operadores aritmticos aceitos pelo VBScript so: + (Adio), - (Subtrao), *


(Multiplicao), / (diviso), \ (diviso inteira) e ^ (Exponenciao).
Os operadores de comparao so: = (igualdade), <> (desigualdade), > (maior que),
< (menor que), >= (maior ou igual a), <= (menor ou igual a) e IS para comparao de
objetos.
Os operadores lgicos utilizam o mtodo booleano para determinar se um processo
retorna True ou False. Os smbolos dos operadores lgicos so: AND, OR, NOT.

Dicas

Para prevenir uma concatenao de strings indesejvel quando estiver utilizando o


operador de adio, utilize as funes de converso para certificar o tipo correto de
dados.
As concatenaes so avaliadas depois dos operadores aritmticos e antes dos
operadores de comparao.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 42

Captulo VII Comandos Bsicos do VBScript

CAPTULO VII COMANDOS BSICOS DO VBSCRIPT

Neste captulo, estaremos estudando os comandos para controle do fluxo de uma aplicao.
Veremos as estruturas lgicas existentes no VBScript que devem permitir este controle: estruturas
lgicas de deciso e repetio. Estruturas lgicas de deciso executam uma determinada condio
e, dependendo do teste, retornam o HTML apropriado como resultado. A estrutura de repetio por
sua vez, um processo cclico, ou seja, repete um determinado conjunto de instrues at que
uma condio seja satisfeita.
Estruturas de Deciso
Utilizadas para tomar decises em sua aplicao. Por exemplo, se a hora for menor que 12:00,
retorne um HTML com Bom dia, se no, retorne um HTML com Ola!. Neste exemplo, voc
apenas mandou retornar um HTML com um texto para seu usurio porm, voc poderia determinar
que dependendo do horrio, deve ser retornado determinada pgina, desviar para outra URL, etc.
Estruturas como esta so utilizadas para determinar o fluxo da sua aplicao, com elas voc pode
definir qual pgina deve ser aberta, determinar o texto a ser escrito para o cliente, estados dos
objetos na tela: selecionados, preenchidos, etc.
O primeiro comando que veremos ser o IF. Este comando utilizado para testar uma condio
como verdadeira ou falsa. E dependendo dos resultados, determinado bloco de instrues ser
executado.
Sintaxe
If <condio> Then
Bloco de Instruo (que pode ser apenas uma ou vrias)
[Else
Bloco de Instruo ]
End If
Onde <condio> a expresso a ser testada. Se for verdadeira, o bloco de instruo que estiver
definido depois do Then ser executado. O Else representa o se no, ou seja, se a <condio>
no for satisfeita (no for verdadeira), o bloco de instrues definido depois do Else ser
executado. End if termina o bloco IF.
Observe que a <condio> deve ser uma expresso que pode ser avaliada como true/false
(verdadeiro/falso). Por exemplo:
<% Dim teste
Dim Mensagem
teste = 25
if teste = 30 then
Mensagem = O valor de Teste igual a 30
Else
Mensagem = O valor de Teste igual a 25
End if
%>
At este ponto, vimos como testar apenas um condio. Porm, podemos utilizar o comando IF
quando existem vrias condies a ser testadas. Veja a sintaxe:
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 43

Captulo VII Comandos Bsicos do VBScript

If <condio> Then
Bloco de Instruo (que pode ser apenas uma ou vrias)
[ElseIf <condio>Then
[Bloco de Instruo]]
[Else
[Bloco de Instruo]]
End If
* O que estiver entre [] opcional e entre <> obrigatrio.
Se voc observar, a estrutura basicamente a mesma utilizada para um IF simples. A diferena
est no Elseif. Quando voc utiliza este tipo de sintaxe preciso especificar um outra condio a
ser testada. Por exemplo:
<% Dim teste
Dim Mensagem
teste = 25
If teste = 30 then
Mensagem = O valor de Teste igual a 30
Elseif teste = 26 then
Mensagem = O valor de Teste igual a 26
Else
Mensagem = O valor de Teste igual a 25
End if
%>

E como inserir este cdigo em uma pgina ASP?


Lembre-se que voc deve escrever os cdigos que devem ser interpretados pelo servidor entre <%
%>, partindo deste ponto, vamos a um exemplo:
<html>
<head>
<title>Horas ... </title>
</head>
<body bgcolor="#FFFFFF">
<% if Time < #12:00# then %>
Bom Dia!!! <BR>
So exatamente <%=Time %>.
<% else %>
So exatamente <%=Time %>.
<% end if %>
</body>
</html>

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 44

Captulo VII Comandos Bsicos do VBScript

O cdigo criado:

<% if Time < #12:00# then %>


Bom Dia!!! <BR>
So exatamente <%=Time %>.
<% else %>
So exatamente <%=Time %>.
<% end if %>
O teste que o IF faz da condio se esta verdadeira. Ento, se a hora do servidor for menor
que 12:00, ou seja, ainda manh, ser mostrado para o usurio o texto (supondo que seja 10:05
da manh):
Bom dia!
So exatamente 10:05.
Caso contrrio, ser mostrado (supondo que seja 13:00):
So exatamente 13:00.
O prximo comando o SELECT. Este comando foi desenvolvido para melhorar a eficincia do IF
... Then ... ElseIf ... Sua funo selecionar um bloco de instruo a partir do teste de uma
condio e compar-lo com uma srie de valores.
Sintaxe
Select Case <expresso a ser testada - critrio>
[Case ValorX-Condio
[Bloco de Instrues]]
[Case Else ValoresN-CondioN
[Bloco de Instrues]]
End Select
Onde <Critrio> uma varivel do tipo numrica ou texto (string), Condio e CondioN so as
possibilidades de valores que esta varivel pode assumir.
A lgica do SELECT similar a do IF ... Then ... Else. Ambas as estruturas permitem o caso de
todas as condies falharem e o fluxo do bloco ser desviado para um caso de se no. A clusula
Else do SELECT utilizada quando nenhuma condio satisfeita pelo critrio. Podemos
reescrever o exemplo utilizado com o IF ... Then ... ElseIf, utilizando o o SELECT:
* O que estiver entre [] opcional e entre <> obrigatrio.

<% Dim teste


Dim Mensagem
teste = 25
Select Case teste
Case 30
Mensagem = "O valor de Teste igual a 30"
Case 26
Mensagem = "O valor de Teste igual a 26"
Case Else
Mensagem = "O valor de Teste igual a " & teste
End Select%>
<HTML>
<BODY>
<center><% = Mensagem %></center>
</BODY>
Desenvolvimento
</HTML> de Aplicaes para Internet Plataforma Microsoft
Pgina 45

Captulo VII Comandos Bsicos do VBScript

O resultado do exemplo:

O cdigo VBScript (ASP)


Este arquivo deve ser nomeado com a extenso ASP, pois contem cdigos que apenas um
servidor IIS pode interpretar.

<% Dim teste


Dim Mensagem
Depois da declarao das variveis teste e Mensagem, atribumos um valor qualquer para a
varivel teste que servir como critrio do SELECT. Como estamos atribuindo um valor numrico
para teste, no preciso utilizar caracteres especiais para indicar o valor a ser atribudo.

teste = 25
O prximo bloco de instrues o bloco do SELECT. Definimos que o critrio a varivel teste, ou
seja, a varivel teste ser testada nas condies que definimos nas clusulas CASE. Em nosso
caso, a pergunta que o SELECT far ser a seguinte:
Teste igual a 30?
Se sim: Mensagem recebe o texto: O valor de Teste igual a 30
Teste igual a 26?
Se sim: Mensagem recebe o texto: O valor de Teste igual a 26
Se no (teste no assumiu nenhum dos valores acima (30 ou 26) ...
Mensagem recebe o texto: O valor de Teste igual a 25
Por que no CASE Else a varivel mensagem recebe o texto: O valor de Teste igual a 25?
Antes da comparao da varivel Teste, atribumos para esta o valor 25. Como no cdigo
concatenamos com o texto: "O valor de Teste igual a " o valor da varivel teste, como resultado
mostrado seu contedo. Ento:

Cdigo VBScript
"O valor de Teste igual a " & teste

Resultado
O valor de Teste igual a 25

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 46

Captulo VII Comandos Bsicos do VBScript

Select Case teste


Case 30
Mensagem = "O valor de Teste igual a 30"
Case 26
Mensagem = "O valor de Teste igual a 26"
Case Else
Mensagem = "O valor de Teste igual a " & teste
End Select%>
Neste ponto da aplicao, fechamos o bloco do SELECT e terminamos a parte dos cdigos que
so interpretados pelo servidor. Colocamos algum cdigo HTML e para mostrar a mensagem,
novamente temos que mandar o cdigo para o servidor: <% = Mensagem %>.

<HTML>
<BODY>
<center><% = Mensagem %></center>
</BODY>
</HTML>
Estruturas de Repetio
So estruturas que repetiro um bloco de instrues at que a condio especificada seja satisfeita
ou por um nmero de vezes especificado. No VBScript, trabalharemos com 3 destas estruturas:
Do ... Loop
For ... Next
While ... Wend
A primeira que veremos ser a Do ... Loop. utilizado para executar um conjunto de instrues
at que a condio determinada seja verdadeira. O Do ... Loop oferece dois operadores
condicionais para avaliar uma condio: While e Until.
Sintaxe:
Do {Until | While } <condio>
<bloco de instrues>
Exit Do
<bloco de instrues>
Loop
Ou
Do
<bloco de instrues>
Exit Do
<bloco de instrues>
Loop {Until | While } <condio>
Onde <condio> deve ser uma expresso que pode ser avaliada como true/false
(verdadeiro/falso), <bloco de instrues> so os comandos que devem ser executados enquanto
a condio no for satisfeita.
A diferena entre as sintaxes acima o local da condio. Na primeira sintaxe, a condio est
localizada na mesma linha de execuo do Do. Na segunda, a condio est localizada no final do
lao ao lado do Loop. Esta mudana de localizao d aos programadores flexibilidade para testar
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 47

Captulo VII Comandos Bsicos do VBScript

a validade da condio primeiro e ento processar o bloco de instrues, ou processar o bloco de


instrues pelo menos uma vez, e depois avaliar a condio.
Exemplo
<html><body>
<%
Dim Mensagem
Dim Cont
Mensagem =
cont = 0
Do Until cont=5
Mensagem = Contei & cont %>
<center><% = Mensagem %></center>
<% cont = cont + 1
Loop
%>
</body></html>
O resultado retornado pelo servidor:

O cdigo escrito (ASP)


Lembre-se que todo o cdigo ASP deve ser escrito entre <% %>, pois ser interpretado pelo
servidor que retornar como resultado o HTML correspondente.

<%
Dim Mensagem
Dim Cont
Como vimos no captulo anterior, a clusula DIM utilizada para declarar variveis locais, ou seja,
as variveis Mensagem e Cont existiro apenas para este cdigo script.

Mensagem =
cont = 0

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 48

Captulo VII Comandos Bsicos do VBScript

Nas linhas acima, estamos limpando as variveis, ou seja, atribuindo-lhes valores nulos para tirar
qualquer contedo que no nos seja til. No caso de cont atribumos o valor 0 (zero), e para
Mensagem, atribumos que caracteriza o comprimento zero de string.
O prximo bloco de instrues o bloco definido pelo Do ... Loop. Este bloco ser executado 5
vezes isto definido pela condio: cont = 5. E mostrar uma mensagem todas as vezes que as
instrues dentro do comando de repetio forem executadas.

Do Until cont=5
A linha a seguir define a mensagem a ser mostrada para o usurio. uma atribuio de
um texto para uma varivel, desta forma, o que for atribudo deve estar entre (aspas). Ainda
nesta linha, voc deve observar que existe uma concatenao de strings (Contei & cont), para
isso, deve-se utilizar o operador &.

Mensagem = Contei & cont %>


Neste ponto do programa, encerramos o trecho que deve ser interpretado pelo Servidor
(%>).
A linha a seguir contem cdigo HTML (<center></center>) e cdigo VBScript a ser
interpretado pelo servidor (<% = Mensagem %>) que mostrar o contedo da mensagem.

<center><% = Mensagem %></center>


As prximas linhas de instruo fazem parte do Do ... Loop. Onde o cont incrementado
para que a repetio tenha um limite (cont = 5) e Loop encerra todo o bloco do Do ... Loop.

<% cont = cont + 1


Loop
%>
While ... Wend
Outra estrutura similar ao Do ... Loop o While ... Wend. Esta estrutura repete um bloco de
instrues at que um condio seja satisfeita (true).
Sintaxe
While <condio>
<bloco de instrues>
Wend
Onde <condio> uma expresso que pode ser avaliada como verdadeira ou falsa (true/false) e
<bloco de instrues> representa o conjunto de comandos que devem ser executados at que a
condio seja falsa.
Quando a condio descrita no While for verdadeira todos os comandos sero processados at
chegar no Wend. Neste ponto, o fluxo do programa passa para o While que testa a condio
novamente e este ciclo repetido at que a condio seja falsa.
Exemplo
O exemplo a seguir incrementa a varivel contador at que seu valor chegue a 10.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 49

Captulo VII Comandos Bsicos do VBScript

<% Dim contador


contador = 0
While contador < 10
contador = contador + 1
Wend
%>
<HTML><BODY>
<CENTER><B>Contei at <% = contador %></B></CENTER>
</BODY></HTML>
Resultado retornado:

Cdigo

While contador < 10


contador = contador + 1
Wend

Avalia a condio
Incrementa a varivel contador
Finaliza o lao quando a varivel contador for igual a 9.

For ... Next


Repete um conjunto de instrues por um nmero especificado de vezes. Este comando usado
quando sabemos o nmero de ciclos ou iteraes que so necessrias.
Sintaxe
For contador = inicio To fim [Step passo]
[bloco de instrues]
[Exit For]
[bloco de instrues]
Next
Onde contador uma varivel numrica usada no lao como o contador. Esta varivel no pode
ser um elemento de um vetor, nem um elemento de um Tipo definido pelo usurio. Inicio o valor
inicial do contador e fim o valor final que o contador assumir. Passo define o valor do
incremento ou decremento do FOR, se no for definido, o default (padro) 1 (um).
O valor do parmetro passo pode ser tanto positivo (incremento) ou negativo (decremento). O
valor deste parmetro determina o processo da seguinte maneira:
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 50

Captulo VII Comandos Bsicos do VBScript

Permanece no lao se ...


Positivo ou 0 (zero)
Negativo

contador <= fim


contador >= fim

Exemplo
Se o parmetro passo for positivo:
<% Dim contador
For contador = 65 to 122 step 2
Response.Write chr(contador)
Next
%>
O resultado ser igual a: ACEGIKMOQSUWY[]_acegikmoqsuwy

For contador = 65 to 122 step 2


No exemplo, a varivel contador inicializada com o valor 65, sendo incrementada at 122. O
incremento feito de 2 em 2, ou seja, a primeira vez, a varivel contador est com 65, a segunda
vez, o contador passa a ter 67, pois o incremento de 2.
Se o parmetro passo for negativo:
<% For contador = 122 to 65 step -1
Response.Write chr(contador)
Next
%>
O resultado ser igual a: zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA

For contador = 122 to 65 step -1


Neste exemplo, o parmetro passo foi determinado com 1, ou seja, o contador comea com 122 e
a cada clico, decrementado deste valor 1 at chegar ao valor 65.
Observe que o operador Next no VBScript defere do operador Next do VB. No VBScript, no
preciso especificar o contador na declarao do Next, como acontece no VB. O operador Next
automaticamente incrementa o contador designado na declarao do FOR. Se voc adicionar o
nome da varivel contador na clusula Next, um erro ser gerado pelo VBScript:

Expected end of Statement


Em FOR encadeados, no permitido a utilizao do mesmo nome de varivel. Um erro de
runtime ser gerado. Por exemplo, o cdigo abaixo utiliza dois FOR encadeados, com o mesmo
nome de varivel, o VBScript ir gerar o seguinte
<% For contador = 0 to 5
erro:
For contador = 1 to 7
Soma = Soma + contador
Invalid For loop control variable.
Next
Next %>
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 51

Captulo VII Comandos Bsicos do VBScript

Resumo
Neste captulo aprendemos que ...

As estruturas de deciso so utilizadas para determinar o fluxo da aplicao. As


estruturas mais utilizadas so:
If <condio> then
<bloco de instrues>
else
<bloco de instruo>
end if
Select <expresso a ser testada expresso>
[Case ValorX-Condio
[bloco de instruo]]
[Case Else ValoresN-CondioN
[Bloco de instruo]]
End Select
As estruturas de repetio que so utilizadas para executar um bloco de instruo at
que uma condio seja satisfeita. As estruturas mais utilizadas so:
Do Until <condio>
<bloco de instrues>
Loop
While <condio>
<bloco de instrues>
Wend
For contador = inicio To fim [Step passo]
[bloco de instrues]
[Exit For]
[bloco de instrues]
Next

Dicas

A declarao do Else sempre interessante. Porque, s vezes, nos esquecemos de


algum teste da condio. Desta forma, evitamos erros de lgica,
No caso do FOR, modificar o valor do contador dentro do lao, pode dificultar a leitura
e a interpretao do cdigo por outro programador.
Se a condio a ser avaliada for igual a Null, o VBScript retornar a condio como
false.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 52

Captulo VIII Os Objetos do ASP

CAPTULO VIII - OS OBJETOS DO ASP

O ASP possui alguns objetos bsicos que operam as funcionalidades de uma aplicao.
Cada objeto possui seus prprios mtodos e eventos, por isso estudaremos cada um deles
separadamente, observando suas funes mais importantes e teis.

O objeto Application
Podemos entender como sendo aplicao todo o conjunto de pginas ASP e HTML que
formam o programa como um todo. Uma aplicao comea quando uma pgina ASP requisitada
pela primeira vez ao servidor e termina quando o servidor desligado ou quando desativada
(tirada do uso, sendo apagada, por exemplo).
Desta forma, o objeto Application ir referir-se e estar disponvel para toda a aplicao, ou
seja, ser "enxergado" por toda pgina ASP e por qualquer usurio da aplicao.
Qual a utilidade de um objeto Application?
Devido a mltiplos acessos a uma aplicao, possvel, atravs do objeto Application,
controlar possveis erros causados por tentativas de alteraes simultneas de variveis, como
tambm disponibilizar determinadas informaes que sero acessveis em qualquer parte do
programa, e/ou por qualquer usurio.
Declarando variveis Application
Variveis Application podero ser acessadas por qualquer parte do programa, por qualquer
usurio.
Sintaxe: Application("nomevar") = contedo
Para visualizarmos melhor o efeito de uma varivel deste tipo, vejamos o exemplo:
<%
Application("DicaDeHoje") = "Que tal estudar ASP?"
%>

Suponha a existncia da linha de cdigo acima em algum arquivo ASP de uma aplicao.
Com ela, armazenamos a string "Que tal estudar ASP?" numa varivel Application que chamamos
de DicaDeHoje. Se nesta mesma aplicao possuirmos outra pgina ASP com o cdigo:
<HTML>
<BODY>
<CENTER>
A nossa dica do dia hoje <br>
<b> <%= Application("DicaDeHoje") %> <b>
</CENTER>
</BODY>
</HTML>
Qualquer usurio que acessar a pgina acima obter o seguinte resultado:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 55

Captulo VIII Os Objetos do ASP

Importante tambm lembrar que possvel acessar a varivel DicaDeHoje em qualquer


outra parte da aplicao.
Controle de acesso a variveis Application
Para prevenir-se de eventuais problemas com alteraes simultneas de valores de
variveis do tipo Application, mantendo deste modo os dados sempre consistentes, necessrio
lanar mo de dois mtodos deste objeto: lock e unlock.
Mtodo Lock
O objetivo deste mtodo "trancar" o acesso s variveis Application, deixando-as
disponveis para somente um nico usurio.
Mtodo UnLock
O mtodo UnLock "destranca" as variveis Application que foram trancadas por um mtodo
Lock. Quando este mtodo for executado, todas as variveis Application estaro novamente
disponveis.
Observe o exemplo:
<HTML>
<BODY>
<%
Application.Lock
Application("visitantes") = Application("visitantes") + 1
Application.UnLock
%>
<CENTER> Esta pgina j foi acessada
<%=Application("visitantes")%> vezes </CENTER>
</HTML>
</BODY>
No caso acima, o mtodo Lock foi utilizado para que o nmero de visitantes seja sempre
exibido de forma correta, no ocorrendo nenhum problema no caso de haverem duas tentativas
simultneas de modificao no valor desta varivel. Depois de alterar o valor de visitantes, a
aplicao destrancada. Veja o resultado deste cdigo:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 56

Captulo VIII Os Objetos do ASP

O objeto Server
Este objeto capaz de interagir com servio HTTP, criando uma interface programvel de
seus mtodos e propriedades. Outra funo do objeto Server instanciar componentes ASP no
servidor, o que torna a tecnologia muito mais poderosa e ampla.
O que um componente?
Componentes so bibliotecas de objetos que possuem finalidades diversas. Podemos
encontrar inmeros tipos de componentes. H, por exemplo, componentes que operam servios de
e-mail (como enviar mensagens e arquivos atachados), que criam interface para upload de
arquivos, que manipulam bancos de dados, etc. Existem componentes que j vm incorporados ao
pacote ASP e existem tambm diversos componentes disponveis na Internet para download.
Para instalar um novo componente (que geralmente uma dll), basta registr-lo no Registry do
servidor. Depois, para utiliz-lo, basta instanci-lo em qualquer programa ASP.
Mtodo CreateObject
Este mtodo cria uma instncia de um componente no servidor. A capacidade de utilizar
componentes amplia muito as potencialidades de uma aplicao ASP.
Sintaxe: Server.CreateObject ("nomecomp.nomeclasse")
Onde nomecomp o nome da biblioteca do componente e nomeclasse a classe desta
biblioteca da qual se deseja criar o objeto.
Como exemplo, criaremos uma instncia da classe BrowserType, da bibliioteca MSWC
(Microsoft Web Components):

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 57

Captulo VIII Os Objetos do ASP

<HTML>
<BODY>
<%
Set brtp = Server.CreateObject("MSWC.BrowserType")
If brtp.ActiveXControls then %>
Este browser suporta controles ActiveX
<% Else %>
Este browser no suporta controles ActiveX
<% End if %>
</BODY>
</HTML>

Um possvel resultado obtido ser:

No exemplo acima, criamos o objeto brtp, pertencente classe BrowserType da biblioteca


MSWC e testamos sua propriedade ActiveXControls. Observe que o comando Set foi utilizado.
Desta forma, o mtodo CreateObject retornar varivel brtp um ponteiro que aponta para o
objeto instanciado. Este apenas um exemplo de um objeto de inmeros outros existentes. Ao
longo deste curso abordaremos outros componentes, e certamente ao pesquisar na Web, voc
encontrar cada vez mais novos componentes sendo criados.
Mtodos Encode
A tecnologia Web basicamente baseada na transferncia de textos simples (ASCII) pelo
protocolo TCP/IP e na interpretao destes textos pelos browsers. Devido a este fato, possvel
ocorrerem erros de interpretaes de caracteres peculiares (como letras acentuadas ou espaos
em branco, por exemplo). Para resolver estes problemas, a tecnologia ASP dispes de dois
mtodos: HTMLEncode e URLEncode.
Mtodo HTMLEncode
Este mtodo faz com que os caracteres sejam exibidos em tela exatamente como foram
especificados. Para isso o ASP cria, para a string fornecida, cdigos especiais para caracteres
no-ANSI. Este mtodo importante para se assegurar de que a informao ser exibida numa
pgina HTML exatamente como se deseja.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 58

Captulo VIII Os Objetos do ASP

Sintaxe: Server.HTMLEncode ("string")


Onde string a cadeia de caracteres que se deseja formatar.
Mtodo URLEncode
Semelhante ao mtodo HTMLEncode, este mtodo formata a string especificada para que
no ocorram erros de interpretao de caracteres. Porm, utilizamos o mtodo URLEncode
quando a string especificada trata-se de uma URL.
Sintaxe: Server.URLEncode ("string")

O objeto Session
Entende-se por sesso o tempo que um usurio utiliza uma aplicao. Cada vez que uma
aplicao acessada por um usurio, uma sesso no servidor aberta para ele. Quando a
aplicao termina, a sesso finalizada. Dessa forma, informaes disponibilizadas no escopo da
sesso estaro disponveis durante toda a aplicao para um determinado usurio.
Este objeto baseado em cookies, portanto ser somente acessvel aos browsers que os
suportam e que estejam habilitados a os aceitarem.
Declarando variveis do tipo Session
A declarao de variveis do tipo Session possibilita que as mesmas estejam disponveis
durante toda a sesso de um usurio. So teis, por exemplo, quando desejamos identificar
caractersticas de usurio em qualquer parte de um programa.
Sintaxe: Session("nomevar") = contedo
Observe o exemplo:
<HTML>
<BODY>
<% Set brtp = Server.CreateObject("MSWC.BrowserType")
Session ("vbsc") = brtp.vbscript %>
</HTML>
</BODY>
Com o cdigo acima, teremos armazenado na varivel vbsc um valor booleano (true ou
false) que indica se o browser suporta ou no a tecnologia VBScript sendo executada no cliente.
Como esta varivel foi definida como tipo Session, poderemos utiliz-la em outra parte da
aplicao, como no exemplo abaixo:
<%
If Session("vbsc") then
Call VersaoVbSc ()
Else
Call VersaoNoVbSc ()
End if
%>

O Objeto Response
O objeto Response controla os dados que sero enviados para o cliente. Estes dados
podem ser simplesmente HTML, cookies, valores de variveis, etc.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 59

Captulo VIII Os Objetos do ASP

Coleo Cookies
atravs desta coleo que podemos enviar cookies para um cliente. Com cookies,
podemos armazenar temporariamente valores em arquivos-texto no browser cliente.
Sintaxe: Response.Cookies ("nomecookie")("nomedachave").atributo = contedo
Devemos entender como nomecookie como sendo o nome do arquivo texto a ser
armazenado no cliente e nomedachave como sendo o nome do campo a ser armazenado. Existem
ainda atributos de cookies que estudaremos posteriormente.
Veja o exemplo:
<%
Response.Cookies ("MeuTeste")("Valor1") = "Este o primeiro valor"
Response.Cookies ("MeuTeste")("Valor2") = "Segundo valor"
Response.Cookies ("MeuTeste")("Valor3") = "Valor 3"
%>
<HTML>
<BODY>
Voc acabou de receber um Cookie!
</BODY>
</HTML>
Neste exemplo, gravamos no cliente um cookie com o nome MeuTeste que contm trs
valores separados em trs campos que se chamam: Valor1, Valor2 e Valor3. Quando desejarmos
recuperar as informaes deste cookie, utilizaremos estes nomes. Veremos como recuperar
valores de um cookie ao estudar o objeto Request.
Note tambm que as linhas de cdigo que gravam o cookie vm antes de qualquer tag
HTML. Isto ocorre porque no h como gravar informaes em um cookie depois de qualquer
cdigo HTML ser enviado ao cliente. Se houvesse qualquer tag antes da gravao do cookie, seria
emitida uma mensagem de erro. Portanto, lembre-se: no possvel gravar um cookie depois
que alguma diretiva HTML j foi enviada ao cliente.

Atributo Expires
Podemos especificar qual a "data de validade" de um cookie atravs do atributo Expires.
Desta forma, um cookie existir no cliente at a data estipulada neste atributo. Se no estipularmos
nenhuma data para o atributo Expires, o cookie perder sua validade assim que a sesso do
usurio se encerrar. Observe, no cdigo abaixo, a utilizao deste atributo no cookie MeuTeste,
onde o mesmo ir expirar em 11 de setembro de 1999
<%
Response.Cookies ("MeuTeste")("Valor1") = "Este o primeiro valor"
Response.Cookies ("MeuTeste")("Valor2") = "Segundo valor"
Response.Cookies ("MeuTeste")("Valor3") = "Valor 3"
Response.Cookies ("MeuTeste").Expires = "11/09/99"
%>
Mtodo Write
Este mtodo utilizado para enviar texto pgina HTML.
Sintaxe: Response.Write contedo
Podemos utilizar como contedo valores de variveis, funes ou mesmo textos simples.
Veja no exemplo abaixo diferentes possibilidades de se utilizar este mtodo:
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 60

Captulo VIII Os Objetos do ASP

<HTML>
<BODY>
<% Session("curso") = "Desenvolvendo aplicaes Web" %>
<CENTER>
<% Response.Write "Al mundo!" %> <BR>
<% Response.Write Session("curso") %> <BR>
<% Response.Write now %> <BR>
</CENTER>
</BODY>
</HTML>
Observe no resultado obtido que podemos ento escrever textos (Al mundo!), variveis
(Session("curso")) ou funes (now) com o mtodo Write:

Mtodo Redirect
Este mtodo utilizado para redirecionar o browser para outra URL.
Sintaxe: Response.Redirect URL
importante ressaltar que o mtodo Redirect deve ser colocado antes de qualquer tag
HTML ser enviada ao cliente. Caso contrrio, ocorrer um erro.
Veja um exemplo deste mtodo:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 61

Captulo VIII Os Objetos do ASP

<%
If Session("idioma") = "ingles" then
Response.Redirect "http://www.empresa.com.br/ingles"
Else if Session("idioma") = "alemao"
Response.Redirect " http://www.empresa.com.br/alemao"
End if
End if
%>
<HTML>
<BODY>
Ol! Obrigado pela visita!
<% var = "teste" %>
</BODY>
</HTML>
No exemplo acima, suponha que a varivel Session("idioma") tivesse o valor "ingles".
Desta forma, o browser seria redirecionado para o endereo http://www.empresa.com.br/ingles .
importante notar que neste caso nenhum cdigo seguinte ser executado (no exemplo, no seria
atribudo nenhum valor varivel var, pois esta linha de cdigo no seria executada) e nenhuma
tag HTML deste arquivo ser enviada ao browser. O contrrio ocorrer somente se a varivel
Session("idioma") tiver valor diferente de "ingles" ou "alemao".

O Objeto Request
Este objeto capaz de receber informaes do cliente, como, por exemplo, ler cookies e
receber dados digitados em formulrios HTML A seguir, estudaremos suas colees e mtodos
mais importantes.
Coleo Cookies
Esta coleo responsvel por ler as informaes armazenadas previamente nos cookies
existentes nos clientes.
Sintaxe: Resquest.Cookies ("nomecookie")("nomedachave")
Onde nomecookie o nome do cookie armazenado e nomedachave o nome do campo
do cookie que se deseja obter. Observe o exemplo:
<%
Request.Write (Request.Cookies("MeuTeste")("Valor1"))
%>

Com o cdigo acima, obtemos, do cookie MeuTeste o valor do campo Valor1 e o


escrevemos na tela atravs do Response.Write.
Coleo Form
A coleo Form permite que se obtenha dados digitados em formulrios HTML enviados
pelo mtodo HTTPPost.
Sintaxe: Request.Form ("nomecampo")
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 62

Captulo VIII Os Objetos do ASP

Onde nomecampo o nome dado propriedade NAME do campo do formulrio HTML.


Considere o seguinte formulrio HTML:
<HTML>
<BODY>
<FORM ACTION="Request.asp" METHOD = Post>
Nome:<INPUT TYPE = Text NAME = "txtNome">
<BR>
Idioma:<BR>
<INPUT TYPE=Radio NAME="opIdioma" VALUE="Ingles">Ingls<BR>
<INPUT TYPE=Radio NAME="opIdioma" VALUE="Alemao">Alemo<BR>
<INPUT TYPE=Radio NAME="opIdioma" VALUE="Portugues">Portugus <BR>
<INPUT TYPE=Submit VALUE="Enviar">
</FORM>
</BODY>
</HTML>
Quando o boto Submit for clicado, o arquivo Request.asp ser chamado e executado.
Este arquivo poderia ser o seguinte:

<%
nome = Request.Form("txtNome")
idioma = Request.Form("opIdioma")
If idioma = "Ingles" then
Response.Write "Hello " & nome
Else if idioma = "Alemao" then
Response.Write "Hallo " & nome
Else
Response.Write "Ol " & nome
End if
End if
%>
No cdigo acima, armazenamos nas variveis nome e idioma os valores colocados nos
campos txtNome e opIdioma do formulrio HTML. Com isto, podemos utilizar estes valores no
programa normalmente. Um possvel resultado obtido depois de se digitar no formulrio o nome
Lus e se escolher o idioma Portugus seria:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 63

Captulo VIII Os Objetos do ASP

Coleo QueryString
Esta coleo utilizada para se obter informaes vindas da string de pesquisa HTTP.
Esta string encontra-se depois do ponto de interrogao (?) na linha da URL. (Por exemplo,
http://www.empresa.com.br?cliente=especial).
Sintaxe: Request.QueryString("nomevar")

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 64

Captulo IX ODBC

CAPTULO IX ODBC
ODBC 3.0
O ODBC (Open DataBase Connectivity) 3.0 o meio mais conhecido para acessar um banco de
dados em ambiente Windows. Utilizando o ODBC, desenvolvedores no precisam se preocupar
com as particularidades dos bancos de dados que iro acessar e trabalhar.
O ODBC uma API para acessar, manipular e criar bancos de dados. Como um desenvolvedor de
aplicaes Web, voc no precisa saber exatamente qual a API para o ODBC. Entretanto, ter um
conhecimento sobre ele ser bastante til.
Quando voc acessa um banco de dados atravs do ODBC, este banco necessariamente tem que
estar registrado como uma origem de dados ODBC. Registrando o banco como uma origem de
dados, a aplicao apenas precisa saber o nome desta origem de dados. A localizao do banco
no faz diferena, nem mesmo o tipo de banco de dados.
A arquitetura de aplicativo/driver no Windows NT 3.51 ou posterior, a seguinte:

Abrindo o ODBC Desktop


Para execut-lo, siga os passos:
1. A partir do menu Start (Iniciar) do Windows, selecione Settings (Configuraes)
2. Escolha a opo Control Panel, na janela que ser aberta d um duplo clique no cone
do ODBC:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 65

Captulo IX ODBC

A tela abaixo nos mostra o painel de controle do ODBC.

Existem trs tipos de origem de dados que voc pode criar: System, User e File. Quando voc
define uma origem de dados na opo System DSN o banco de dados ser aberto para qualquer
usurio do sistema, quando definido em User DSN o banco ser aberto para um usurio especfico
e File DSN uma descrio do banco.
Geralmente, para aplicaes Web criado uma origem de dados na opo System DSN.
Como criar um System DSN

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 66

Captulo IX ODBC

Selecione a pasta System DSN


Para criar um novo
System DSN, clique
no boto Add

Depois de pressionado o boto Add, ser mostrada a tela abaixo, onde voc deve especificar o
drive ODBC a ser utilizado para acessar seus dados:

Lista dos drives instalados.

Depois de selecionar o
drive, clique em Finish

Depois de escolher o drive, preciso selecionar o arquivo que contm os dados. A prxima tela
pedir para voc indicar o local fsico (diretrio e nome) do arquivo e um nome para a origem de
dados que est sendo criada:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 67

Captulo IX ODBC

Nome da origem de dados


(no precisa ser o nome do
banco de dados).

Descrio da origem de
dados.
Na parte sublinhada esto
disponveis as opes para
seleo, criao, reparo e
compactao do arquivo
de banco de dados. Para
selecionar um arquivo
clique no boto Select.
Seguindo estes passos voc cria uma origem de dados para seu banco de dados. Quando
precisarmos abrir um banco de dados, ser preciso apenas fazer a referncia a origem de dados.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 68

Captulo IX ODBC

Resumo
Neste captulo aprendemos que ...

O ODBC uma API utilizada para criar, manipular e acessar bancos de dados.
Utilizando esses drives, no necessrio ter conhecimento das particularidades de
cada banco de dados.
Existem trs tipos de origem de dados: System DSN, User DSN e File DSN. O
System DSN utilizado quando vrios usurios de um sistema podem acessar a
base. O User DSN utilizado quando um usurio especfico pode ter acesso, e o
File DSN uma descrio do banco.
Geralmente, a opo escolhida para criar uma origem de dados o System DSN,
pois uma aplicao na maioria das vezes, acessada por vrios usurios.

Dicas

Os drivers ODBC so fornecidos com ODBC 3.0, mas funcionam com ODBC 2.5.
Eles foram desenvolvidos para ser usados no Microsoft Windows 95 ou posterior
ou Windows NT 3.51 ou posterior. O Windows 95 ou posterior, aceita somente
aplicativos de 32 bits. O Windows NT 3.51 ou posterior, aceita aplicativos de 16 e
de 32 bits.
Voc pode obter mais informaes sobre a verso do ODBC a ser usada com os
drivers ODBC, consultando o ODBC 2.0 Programmers Reference e o SDK Guide e
notas de verso do ODBC at verso 2.5. O ODBC 3.0 Programmers Reference
no deve ser usado como material de referncia para problemas com esses
drivers.
Voc pode utilizar um componente ASP que implementado em seu script faz
mudanas no Registry do servidor e criar o DSN necessrio. Esses componentes
so de terceiros e podem ser encontrados em sites especializados em ASP.

O que acontece se voc no tiver um DSN?


Se voc deve conhecer o nome do arquivo (baseado em banco de dados como
Access, Paradox, FoxPro, etc.) ou o nome do Data Source (no caso do SQLserver,
por exemplo). Abaixo est uma maneira de abrir um Data Source sem um DSN.
Note que voc deve conhecer o caminho completo do arquivo no servidor, isto ,
apenas o nome do banco no suficiente. preciso ter todo o caminho, por
exemplo: "e:\Inetpub\banco\inscricoes.mdb".
Existe uma funo no ASP chamada Server.MapPath que com o nome de arquivo
como parmetro, retorna o diretrio completo do arquivo no servidor, mas fique
atento pois no muito seguro utilizar este recurso.
<%
Set conn = Server.CreateObject("ADODB.Connection")
Caminho = "DBQ=" & Server.MapPath("nome_banco.mdb")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & Caminho
Set rs = conn.Execute("Select * from Cliente")
%>
Abaixo, esto os tipos mais comuns de nomes para drives ODBC:
Para Access --> driver = {Microsoft Access Driver (*.mdb)};
Para SQL -----> driver = SQL Server;
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 69

Captulo X Acessando Banco de Dados

CAPTULO X ACESSANDO BANCO DE DADOS


Desenvolvendo Aplicaes Web
Em uma aplicao cliente/servidor, a aplicao cliente mantm uma conexo com a
aplicao servidor, consultando-o periodicamente para verificar se a conexo est aberta. Se o
servidor estiver fora do ar, a aplicao cliente no conseguir a conexo e ento tomar as
medidas apropriadas (se esta aplicao estiver preparada para isso) como, por exemplo, enviar
uma mensagem de erro para o usurio.
Porm, desenvolver aplicaes baseadas na Web pode ser muito diferente de outros tipos
de programao. Diferente de tpicas aplicaes cliente/servidor, essas aplicaes compreendem
pginas Web como resposta ao cliente. Estas so estticas, ou seja, depois do cliente (browser)
solicitar a pgina, a mesma processada no servidor e ento, o documento solicitado retornado.
O processo da pgina termina quando o servidor Web envia a pgina. Como um desenvolvedor de
aplicaes Web, voc precisa tambm se preocupar com a conexo de seu cliente e a Internet.
Neste captulo aprenderemos como recuperar e alterar informaes em um banco de
dados atravs de aplicaes Web, utilizando para isto a tecnologia ADO (ActiveX Data Objects).

ADO (ActiveX Data Objects)


uma coleo de objetos utilizados para recuperao, alterao, incluso e excluso de registros
em bancos de dados ODBC e OLE DB. O ADO instalado com Microsoft Internet Information
Server (IIS), verso 3.0.
O ADO escrito em pginas ASP e executado no servidor Web, e retorna as informaes dos
bancos de dados em formato HTML. A pgina retornada pode ser visualizada por qualquer browser
em qualquer plataforma, pois o cdigo todo executado pelo Servidor.
Esta coleo de objetos constitui uma camada entre a sua pgina na Web e o seu banco de dados.
Para acessar o banco de dados, voc escrever cdigos que configuraro propriedades e mtodos
dos objetos do ADO.
A comunicao do ADO com o banco de dados feita atravs de OLE-DB (baseado na tecnologia
COM) ou banco de dados que possuem drives ODBC (nesta opo a comunicao feita atravs
ODBC.
da biblioteca MSDASQL.dll). Neste curso abordaremos a comunicao ADO

O esquema a seguir ilustra a comunicao do ADO com um banco de dados ODBC.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 69

Captulo X Acessando Banco de Dados

Instalando o ADO
Como o ADO faz parte do Microsoft Data Access Components, este pacote automaticamente
instalado e registrado pelo IIS.
Objetos do ADO
Com o ADO, voc pode criar os objetos independentemente, o que permite a escrita de um cdigo
mais simples e a criao apenas dos objetos que voc precisa.

Primeiramente, voc ir trabalhar com os objetos Connection, Command e Recordset. Os


objetos Connection e Command possuem o mtodo Execute que executa um comando e retorna
um recordset. Voc tambm pode utilizar a funo CreateObject para instanciar objetos Recordset
explicitamente, e ento utilizar o mtodo Open do objeto instanciado para criar um recordset.

Connection
O objeto Connection representa uma conexo aberta com a origem de dados. Voc utiliza o
Connection para manter aberta em memria uma conexo com o banco de dados para que outros
objetos possam acess-lo, como por exemplo, o objeto Recordset.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 70

Captulo X Acessando Banco de Dados

Este objeto possui uma coleo que armazena qualquer erro que ocorra quando o acesso feito
chamada Errors.
Abrindo uma conexo atravs do objeto Connection
Para estabelecer uma conexo com a fonte de dados, primeiramente devemos criar um objeto
Connection. Para isto, utilizamos o mtodo CreateObject (objeto Server). Para conectar com a
origem de dados, voc utiliza o mtodo Open.
Sintaxe do mtodo Open
Connection.Open DataSourceName, User, Senha
Onde DataSourceName o nome do DSN criado no ODBC, User o nome do usurio que tem
permisso de acesso e sua Senha.
Exemplo
O exemplo abaixo cria um objeto Connection chamado MinhaConexao e, atravs dele, abre uma
conexo com a origem de dados chamada Externo (DSN definido no ODBC).
<%
Set MinhaConexao = Server.CreateObject (ADODB.Connection)
MinhaConexao.Open Externo, ,
%>
Fechando uma conexo
Quando voc termina de trabalhar com seu banco de dados, voc deve utilizar o mtodo Close do
objeto Connection para liberar qualquer associao com o recurso do sistema. Usando o mtodo
Close, voc no libera memria. Voc pode modificar as propriedades do objeto, e ento utilizar o
Open para abri-lo novamente. Para remover o objeto da memria, voc deve atribuir ao objeto o
valor Nothing.
Exemplo:
<%
MinhaConexao.close
Set MinhaConexao = Nothing
%>

Se voc no fechar o objeto Connection, ele ser fechado automaticamente quando o arquivo
.asp terminar de ser executado pelo Servidor. Se houver a necessidade da conexo ficar aberta
durante toda uma sesso ou aplicao, voc pode armazenar o objeto Connection como uma
varivel dos objetos Session ou Application.
Quando devo abrir ou fechar um objeto Connection?
muito importante pensar quando deve-se abrir uma conexo com o banco de dados, pois a
origem de dados possui um limite de conexes. Quanto mais conexes existirem simultaneamente,
mais provvel que outra aplicao que tente abrir a mesma origem de dados tenha o acesso
negado, justamente pelo limite de conexes. Por isso, sempre importante verificar a necessidade
de uma conexo permanecer durante toda a aplicao ou sesso.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 71

Captulo X Acessando Banco de Dados

Alm do mais, o pedido de abertura de uma conexo com a origem de dados um servio que
exige mltiplos ciclos da CPU. Abrir e fechar conexes repetidamente pode causar grande
demanda no servidor. Se uma conexo ser utilizada novamente em um espao de tempo
relativamente curto, uma boa idia no fech-la.

Recordset
O objeto Recordset representa um conjunto de registros recuperados de uma consulta a um banco
de dados. Utilizaremos este objeto para realizar todas as aes num banco, como recuperar,
gravar, alterar ou excluir registros.
Criando um RecordSet
Para criar um novo RecordSet, utilizaremos o mtodo CreateObject (objeto Server). Observe o
exemplo:
<%
Set MeuRecordSet = Server.CreateObject ("ADODB.RecordSet")
%>

No exemplo acima, criamos um objeto RecordSet chamado MeuRecordSet. Agora, necessrio


"preench-lo" com dados e "abr-lo". Para isso, utilizaremos seu mtodo Open. Veja a sintaxe:
NomeRecordSet.Open Origem, Conexo, TipoCursor, TipoTrava
Onde:
NomeRecordSet: Nome dado ao objeto RecordSet criado com o mtodo CreateObject.
Origem: O comando SQL o qual se vai "carregar" o RecordSet.
Conexo: O nome da conexo que ser utilizada (objeto Connection criado)
TipoCursor: Um RecordSet contm um cursor que aponta para o registro atual. Quando se chama
um MoveNext ou qualquer outro mtodo de navegao entre registros, o cursor movido. Existem
quatro tipos de cursores. So eles:
Forward Only (0): o cursor mais rpido. usado somente para mover o cursor para
frente e somente leitura. til quando se deseja ler o registro uma nica vez e exibir os dados.
Keyset (1): Relativamente rpido. Associa um valor-chave a cada um dos registros para
uma navegao rpida. Move-se para frente e para trs e atualiza os dados. O usurio no
conseguir ver os registros adicionados por outros usurios. til quando se quer atualizar dados.
Dynamic (2): o mais flexvel dos cursores e o mais lento. Quando utilizado, possvel
modificar registros e ver quaisquer modificaes e inseres realizadas por outros usurios. til
quando se deseja uma viso atual dos dados.
Static (3): Permite que se mova para frente e para trs e que se realize escrita e leitura de
registros, mas no visualiza alteraes, adies ou excluses feitas por outros usurios. til
quando necessrio manipular registros.
TipoTrava: Ao selecionar um registro (ou um conjunto deles) num banco de dados, o mesmo tem
que ser travado para evitar inconsistncias geradas a partir de tentativas de modificaes
simultneas. Deste modo, devemos especificar qual tipo de trava utilizada para isso:
Read-Only (0): Os dados no podem ser alterados.
Pessimistic (1): O provedor faz o que necessrio para assegurar a edio com sucesso
de um registro., trancando os registros no banco imediatamente antes da edio dos mesmos
Otimistic (2):O provedor s tranca os registros quando o mtodo Update chamado.
Batch Otimistic (3): Requerido para edio de blocos de registros.
Agora veja um exemplo:
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 72

Captulo X Acessando Banco de Dados

<%
Set Conex = Server.CreateObject (ADODB.Connection)
Conex.Open BancoDados, ,
Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open "SELECT * FROM TabClientes", Conex, 3, 3
%>
Com o cdigo acima, criamos a conexo Conex com o DSN BancoDados. Instanciamos um
RecordSet RS e nele colocamos todos os registros da tabela TabClientes atravs de uma instruo
SQL. O RecordSet criado utiliza como tipo de cursor o Static e como tipo de trava de registros o
Batch Optimistic.
Propriedades BOF e EOF
As propriedades BOF (Beginning Of File) e EOF (End Of File) permitem que seja testada se a
posio do registro atual encontra-se no comeo do RecordSet (BOF) ou no fim do mesmo (EOF).
Veja um exemplo:
(...)
sql = "SELECT * FROM Produtos WHERE CodProd = " & CodDigitado & " "
RS.Open sql, conexao, 3, 3
If RS.EOF then
Response.Write "Cdigo inexistente no cadastro!"
End if
%>
No exemplo acima, a instruo SQL cria um RecordSet RS com registros da tabela Produtos cujo
campo CodProd seja igual varivel CodDigitado. Caso esta pesquisa no retorne resultado
algum (ou seja, caso a clusula WHERE no for satisfeita ou a tabela estiver vazia) o registro atual
estar posicionado no fim do RecordSet. Desta forma, foi utilizada a propriedade EOF para emitir
uma mensagem de parmetro no encontrado.
Propriedade RecordCount
Esta propriedade contm o nmero de registros que um RecordSet possui. Observe um exemplo:
(...)
sql = "SELECT * FROM Produtos WHERE CodProd = ' " & CodDigitado & " ' "
RS.Open sql, conexao, 3, 3
Response.Write "Foram encontrados " & RS.RecordCount & " registros"
%>
Um possvel resultado obtido para este exemplo seria:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 73

Captulo X Acessando Banco de Dados

Navegao entre registros de um RecordSet


MoveFirst
Este mtodo move o ponteiro do registro atual para o primeiro registro do RecordSet. Lembre-se
que nesta posio, a propriedade BOF do RecordSet valer True. O seguinte exemplo move o
ponteiro para o primeiro registro do RecordSet RS:
RS.MoveFirst
MoveLast
Este mtodo move o ponteiro do registro atual para o fim do RecordSet. Nesta posio, a
propriedade EOF do RecordSet valer True. O exemplo abaixo move o ponteiro para o final do
RecordSet RS:
RS.MoveLast
MoveNext
O mtodo MoveNext move o ponteiro do registro atual para o prximo registro do RecordSet.
Lembre-se: se o ponteiro estiver no fim do RecordSet (EOF), ao utilizar este mtodo um erro
ocorrer. Veja o seguinte exemplo, que desloca de uma posio o ponteiro do RecordSet RS
RS.MoveNext
MovePrevious
MovePrevious move o ponteiro para o registro anterior ao atual. Ateno: se o ponteiro localizar-se
no primeiro registro (BOF) o uso deste mtodo acarretar num erro. O seguinte exemplo move o
ponteiro para o primeiro registro do RecordSet RS:
RS.MoveFirst

Manipulando Registros
Para manipular (adicionar, excluir, editar) registros em uma tabela, devemos fazer uso de
RecordSets. Para isso, podemos utilizar dois modos: atravs de mtodos do RecordSet ou atravs
de Instrues SQL.
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 74

Captulo X Acessando Banco de Dados

Mtodos do objeto RecordSet para manipulao de registros


Update
atravs do mtodoUpdate que concretizamos todas as alteraes realizadas com os mtodos de
manipulao de RecordSets.
Sintaxe: NomedoRecordSet.Update
Onde NomedoRecordSet o nome dado ao objeto do tipo RecordSet que est sendo manipulado.
AddNew
Este mtodo permite que se adicione um novo registro ao RecordSet.
Sintaxe: NomedoRecordSet.AddNew
NomedoRecordSet("campo1tabela") = valor1
NomedoRecordSet("campo2tabela") = valor2
NomedoRecordSet.Update
Onde NomedoRecordSet o nome dado ao objeto do tipo RecordSet que est sendo manipulado,
campo1tabela e campo2tabela so os nomes dos campos da tabela do banco de dados e valor1 e
valor2 so os valores a que se deseja atribuir a estes campos. Para visualizarmos melhor estes
conceitos, vejamos um exemplo:
(...)
varnome = Request.Form("txtNome")
vartelefone = Request.Form("txtTelefone")
RS.MoveLast
RS.AddNew
RS("nome") = varnome
RS("telefone") = vartelefone
RS.Update
%>
Com o cdigo acima, gravamos no banco de dados (que est associado conexo do RecordSet
RS) um novo registro (de campos so nome e telefone) com os valores armazenados nas variveis
varnome e vartelefone (que vieram de um formulrio HTML).
Delete
O mtodo Delete exclui o registro atual.
Sintaxe: NomedoRecordSet.Delete
Onde NomedoRecordSet o nome dado ao objeto do tipo RecordSet que est sendo manipulado.
Observe o exemplo:
(...)
RGDigitado = Request.Form("txtRG")
sql = "SELECT * FROM Clientes WHERE RG = ' " & RGDigitado & " ' "
RS.Open sql, conexao, 3, 3
If Not RS.EOF then
RS.Delete
Response.Write "Registro excludo!"
Else
Response.Write "RG inexistente!"
End if
Desenvolvimento%>
de Aplicaes para Internet Plataforma Microsoft
Pgina 75

Captulo X Acessando Banco de Dados

No exemplo citado, o registro que contm o campo RG procurado excludo. Caso no exista o
registro, exibida uma mensagem de RG inexistente.
Manipulando registros atravs de instrues SQL
Para manipular registros atravs de instrues SQL, devemos utilizar o mtodo Execute do objeto
Connection.
Sintaxe: Set NomeRecordSet = NomeConexao.Execute (sql)
Onde NomedoRecordSet o nome dado ao objeto do tipo RecordSet que ser manipulado,
NomeConexao o nome dado ao objeto do tipo Connection existente na aplicao e sql a
instruo SQL a ser executada no RecordSet.
Veja um cdigo exemplo de insero de registro utilizando uma instruo SQL:
<%
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.Open "BancoDados", "", ""
varcliente = Request.Form("txtCliente")
varmail = Request.Form("txtMail")
sql = "INSERT INTO Clientes (Cliente, EMail) VALUES (' "& varcliente &" ' , ' "& varmail &" ') "
set RS = Conexao.execute(sql)
%>
No exemplo acima adicionamos na tabela Clientes um registro (com campos Cliente e EMail) com
os valores das variveis varcliente e valmail, utilizando para isso o mtodo Execute do objeto
Connection criado, passando como parmetro para este mtodo a instruo SQL.
Veja agora um exemplo de excluso de registros utilizando instrues SQL:
<%
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.Open "BancoDados", "", ""
varcod = Request.Form("txtcod")
sql = "DELETE Clientes.* FROM Clientes WHERE ((Clientes.codigo)= ' " & varcod &" ') "
set RS = Conexao.execute(sql)
%>
No exemplo citado, so excludos da tabela Clientes os registros cujo campo codigo seja igual ao
valor da varivel varcod.
A atualizao de registros tambm feita a partir do mesmo procedimento, alterando somente a
instruo SQL. Veja:
<%
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.Open "BancoDados", "", ""
varcod = Request.Form("txtcod")
sql = "UPDATE Clientes SET Clientes.fone = ' " varfone & " ' WHERE Clientes.cod = ' " & varcod & " ' "
set RS = Conexao.execute(sql)
%>

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 76

Captulo X Acessando Banco de Dados

Com o cdigo acima, atualizamos o campo fone do registro cujo campo cod possui valor igual
varivel varcod.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 77

Captulo XI Segurana

CAPTULO XI SEGUNRANA
O Microsoft Internet Information Server (IIS) est integrado ao sistema operacional Microsoft
Windows NT Server o que significa que o IIS possui as mesma caractersticas de segurana do
NT.
Segurana Integrada
A arquitetura de segurana do Windows NT utilizada por muitos componentes de sistemas com
uma camada de autenticao para controlar o acesso a todos os recursos do sistema. O IIS est
integrado ao modelo de segurana do NT e aos servios do sistema operacional como file system
e diretrios. Como o IIS utiliza o banco de contas de usurios do NT, os administradores no
precisam criar contas separadas em cada servidor Web, e em uma Intranet, os usurios apenas
logam em suas contas apenas uma vez. O IIS automaticamente utiliza as mesmas permisses de
arquivos e grupos.
Gerenciando
As permisses para controle de acesso aos arquivos e diretrios podem ser configuradas
graficamente pelo Windows NT, pois o IIS utiliza o Server Access Control Lists (ACLs): uma lista
contendo todas as permisses de cada usurio.
As permisses configuradas para um servidor Web no so diferentes das permisses criadas
para outros arquivos no servidor (permisses NTFS). Desta forma, estes arquivos podem ser
acessados atravs de outros protocolos, como o FTP, NFS sem duplicar suas permisses.
Administradores no precisam manter bancos de contas de usurios duplicados. Todos os servios
de um servidor Intranet podem ser gerenciados a partir de uma ferramenta grfica. O IIS e o
Windows NT Server 4.0 formam uma plataforma que permite aos administradores criar novos
usurios para acessar recursos do sistema, como pginas em HTML, arquivos compartilhados,
impressoras, bancos de dados corporativos e outras aplicaes atravs de ferramentas grficas.
A integrao Windows NT e IIS tambm permite a auditoria de sistema para maior monitoramento
da segurana dos recursos utilizados. Por exemplo, tentativas de acesso de um usurio a um
recurso no autorizado pode ser armazenado pelo Windows NT Event Log e visualizado pelas
ferramentas administrativas do NT.
Controle de Acesso
Um dos itens mais importantes de segurana do IIS o controle de acesso aos arquivos e
aplicaes no servidor. O IIS possui os seguintes itens para controle de acesso e segurana:

Suporte para autenticao Windows NT Challenge/Response


Acesso por IP das mquinas
Habilidade para implementar restries de acesso ao servidor e diretrio virtual.
Suporte para Windows NT File System (NTFS).
Certificados digitais para clientes e servidores
Filtros de Segurana

Autenticao e Autorizao de Usurios


Como vimos, a segurana do IIS integrada ao Windows NT File System. Tenha sempre em
mente que para acessar qualquer recurso do NT preciso uma senha e um usurio. Este recurso
permite aos administradores gerenciar as contas, incluindo a sua auditoria e o armazenamento de
Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 78

Captulo XI Segurana

toda a atividade desempenhada em arquivos de logs, configurao de restries e data de


expirao das senhas.
Acesso Annimo
No setup, o IIS cria uma conta annima para conexes Web no autenticadas. Quando a
segurana no requisitada, o pedido processado pelo servidor no contexto de segurana de
uma conexo annima. Esta conta pode ter acesso apenas a arquivos e aplicaes que possui
permisso para acessar.
Senha e User Name
As aplicaes e arquivos que possuem o acesso restrito, necessitam que os usurios se
identifiquem atravs de uma conta e senha para permitir a visualizao dos dados. O IIS pode ser
configurado para pedir a autenticao HTTP bsica. Um prompt mostrado para que o usurio
possa digitar o nome de sua conta e sua senha, depois disso uma comparao feita com o banco
de contas existentes no Windows NT. Entretanto, estes dados so passados pela rede sem
encriptao, podendo ser interceptados por um sniffer facilmente.
Segurana Windows Chanllege/Response
O IIS tambm suporta este tipo de autenticao do NT, que utilizao a tcnica de encriptao
para autenticar os usurios. Na verdade, a senha nunca passada pela rede. Uma vez que toda
conexo mapeada diretamente para a conta do usurio no Windows NT, os usurios da Internet
apenas precisam efetuar o logon uma vez que ser vlido para todos os servidores e servios no
domnio do Windows NT.
Certificados Digitais
Um certificado verifica a identificao de um usurio do mesmo modo como fazemos a
identificao de uma licena para um drive ou cartes de corporao. A rigorosidade desta
identificao depende do nvel de segurana requerido para a informao ou aplicao a ser
acessada. O usurio digita a senha quando assina o certificado, e esta senha requisitada toda
vez que o usurio ativa a certificao. Porm, apenas a certificao no garante que o usurio que
est tentando realizar o acesso realmente a pessoa que tem o acesso aplicao ou s
informaes. Importante lembrar que a senha deve ser secreta, ou seja, somente a pessoa que
tem a permisso de acesso aplicao deve sab-la e ter a conscincia de no revela-la mais
ningum.
Uma autenticao baseada em certificados digitais requer um protocolo que esteja habilitado a
entender este certificao tanto no cliente como no servidor. O certificado do servidor aparece
para o cliente, desta maneira o cliente pode validar a identidade do servidor.
Quando o SSL executado, necessrio que um servidor tenha este certificado. Opcionalmente,
um servidor pode solicitar ao cliente este certificado. Um certificado para o servidor, contem o
nome do Website, e o browser verificar se o endereo URL o nome especificado no certificado.
Controle de Acesso utilizando filtros
O IIS possui um conjunto de APIs que podem ser utilizadas pelo programadores para criar filtros
que autenticam usurios baseados em regras customizadas. Este recurso oferece aos
administradores maior flexibilidade para o controle de acesso utilizando qualquer esquema de
autenticao ou diretrios externos.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 79

Captulo XI Segurana

Recursos para o Controle de Acesso


Uma vez que os usurios esto autenticados, o IIS verifica se estes tm permisso para acesso
aos arquivos e aplicaes requisitadas.
Endereos IP
Para a Internet, cada servidor e cliente tem uma endereo Internet especfico chamado IP
address. O IIS pode ser configurado para garantir ou negar o acesso a uma aplicao para um
especfico endereo IP. Configurando o IIS desta forma, os administradores podem permitir apenas
que um determinado domnio acesse determinada aplicao.
Permisso Windows NT File System (NTFS)
O objeto do NTFS oferecer segurana para os servidores Web nos contextos Internet e Intranet.
Permite que os administradores configurem permisses de usurios a arquivos individuais, no
apenas para pastas ou diretrios. Utilizando este recurso nos arquivos e diretrio disponibilizados
pelo IIS, os administradores ajudam a verificao do usurio
Uma vez que a restrio do endereo IP do usurio satisfeita, a conta do usurio ou a senha so
validadas, e a permisso do diretrio virtual contemplada, o IIS tentar acessar o recurso
solicitado pelo cliente (baseado na URL) utilizando o contexto de segurana da autenticao do
usurio. Todos estes itens de validao garantem a verificao do acesso baseado nas
permisses do NTFS, oferecendo aos administradores um controle maior dos recursos e
informaes disponibilizadas.
O Windows NT identifica cada usurio por uma identificao nica de segurana global (SID) e no
pelo nome da conta. este SID que o NT utiliza para verificar as permisses dos usurios. Os
nomes das contas foram criados para a interface com o usurio ficar mais amigvel.
Quando uma conta excluda, todas as entradas no ACL e associaes de grupos tambm so
excludas. Os SIDs e a sincronizao garantem que uma conta criada com o mesmo nome de uma
que j tenha sido excluda, no receba as configuraes de permisso da conta excluda.
Permisses no IIS
O IIS permite que o administrador configure permisses de apenas leitura e execuo nos
diretrios virtuais. Para cada pedido, o IIS examina a URL e o tipo de pedido feito e ento, verifica
se as permisses configuradas no diretrio virtual so contempladas. Esta verificao assegura
que os pedidos para leitura de arquivos configurados com apenas execuo no sejam lidos e
arquivos apenas de leitura, no sejam executados.
Auditoria
Uma das maneiras de determinar se um usurio est tentando acessar
O IIS suporta duas maneiras de logs. A primeira o log padro onde todos os pedidos de arquivos
e objetos e erros gerados so armazenados. A segunda maneira, seria a utilizao da ferramenta
de administrao do NT Event Viewer.
Com isso, um administrador pode obter as seguintes informaes:
Acesso a todos os arquivos do servidor.
Tentativas de logon invlidas.
Todos os logons efetuados.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 80

Captulo XI Segurana

Configurando os requisitos de segurana no IIS


Os requisitos de segurana no IIS devem ser configurados para cada diretrio virtual. Este item
est localizado dentro de suas propriedades. Para habilitar as propriedades de um diretrio virtual,
clique-o com o boto direito do mouse e selecione o item Properties.
Ser ento aberta a janela de propriedades. Para visualizar os itens de segurana selecione a
pasta Directory Security:

A tela acima ser mostrada. Vamos descrever cada item desta pgina:
Anonymous Access and Authentication Control
Ao configurar este item, voc poder permitir o acesso annimo, o acesso solicitando ao usurio
sua identificao no Windows NT por encriptao ou sem encriptao.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 81

Captulo XI Segurana

Primeiro item: Allow Anonymous Access. Pressionando o boto Edit ..., voc pode
especificar a conta que deve fazer o acesso annimo:

Se voc quiser modificar a


conta, clique em Browse ... e
selecione a nova conta.

Segundo item: Basic Authentication. Neste item ser solicitado ao usurio sua identificao.
importante lembrar que a senha passada pela rede sem encriptao.

Ao
escolher
o
item
Basic
Authentication, uma mensagem de
aviso mostrada, alertando que um
tanto inseguro a utilizao deste tipo de
autenticao.
Para continuar, pressione Yes.

Nesta prxima tela, voc deve especificar o domnio onde esto cadastrados os usurios que tero
permisso de acesso:

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 82

Captulo XI Segurana

Para
selecionar
domnio,
clique
Browse ...

um
em

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 83

Captulo XI Segurana

Terceiro item: IP Address and Domain Name Restrictions. Neste item, voc estar configurando
os IPs e domnios que tero acesso ao diretrio.

Granted Access:
Garante permisso para todas as
mquinas e domnios, menos para
as listadas no item Except those
listed below.

Denied Access:
Desabilita o acesso a todos,
menos para as mquinas e domnios
listados no item Except those listed
below.

Lista dos IPs das mquinas e


domnios

Para adicionar IPs de mquinas e domnios, clique em Add ... A tela a seguir ser mostrada:

Single Computer
Se este item for especificado, lhe ser
pedido o IP da mquina.

Se voc escolher o item Group of Computers, ser


preciso especificar a identificao da rede a Ter o
acesso e a mscara.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 84

Captulo XI Segurana

Se voc escolher conceder permisso de acesso um domnio, a mensagem de aviso abaixo ser
mostrada:
O aviso diz que
restringindo o acesso
pelo
Domnio,

necessrio utilizar o
DNS reverso para
cada
conexo
realizada. E este tipo
de operao exige
recursos da mquina.
Depois da mensagem acima, ser
mostrada a tela onde voc deve
especificar o nome do domnio a ter o
acesso negado ou concedido.

Resumo
Neste captulo aprendemos que ...

A segurana do IIS integrada do Windows NT.


Os itens mais importantes de segurana so:

Suporte para autenticao Windows NT Challenge/Response

Acesso por IP das mquinas

Habilidade para implementar restries de acesso ao servidor e diretrio virtual.

Suporte para Windows NT File System (NTFS).

Certificados digitais para clientes e servidores

Filtros de Segurana
Os requisitos de segurana esto localizados nas propriedades do Diretrio Virtual e
do Web Site, na pasta Directory Security.
Existem vrios tipos de identificao do usurio: annimo, com senha sem encriptao
e com senha e encriptao.
Podemos restringir que apenas um domnio ou IPs de mquinas possam acessar
determinada aplicao.

Desenvolvimento de Aplicaes para Internet Plataforma Microsoft

Pgina 85

Você também pode gostar