ASP - Gerenciando as
informações e o ambiente
- O gerenciamento das
informações enviadas e recebidas entre as páginas ASP
é uma tarefa muito importante e precisa ser entendida
muito bem para ser usada de forma a não afetar o
desempenho da aplicação nem sobrecarregar o servidor.
-
- Vamos abordar as principais
formas de como enviar e receber informações e a melhor
forma de fazer este importante serviço. Comecemos com os
formulários.
-
- Formulários
-
- Os formulários são talvez
a mais importante forma de receber e enviar informações
quer entre as páginas ASP quer para o servidor ou o
cliente.
-
- Basicamente existem duas
maneiras de usarmos os formulário para receber/enviar
informações: os métodos GET e POST. .
-
- Usando o método GET
-
- Quando um usuário informa
os dados nos campos de um formulário e o submete, os
dados contidos em cada campo do formulário são
transferidos para o servidor. Se o formulário estiver
usando o método GET, os dados são anexados à URL como
uma string de argumento.
-
- Quanto maior a quantidade
de campos e quanto mais longas forem as strings de texto
informadas , maior será o tamanho da URL e mais complexo
será o seu processamento. Sem mencionar que existe um
limite mais ou menos 2500 caracteres - para
o número de caracteres que podemos anexar a uma URL.
Vamos mostrar o uso deste procedimento na listagem a
seguir:
- <%
Language="VBScript" %>
- <%
- Response.Expires=0
- Dim cnome, nidade
- if
Request.ServerVariables("QUERY_STRING")
<> "" then
- cnome =
Request.QueryString("nome")
- nidade =
Request.QueryString("idade")
- %>
- <html>
- <body
bgcolor="aqua">
- Os dados recebidos
foram :<BR><BR>
- Nome : <%= cnome
%> <BR>
- Idade : <%=
nidade %> <BR>
- <p>
- O caminho do script
atual é : <BR>
- <%=
Request.ServerVariables("SCRIPT_NAME")
%>
- <P>
- O método da
solicitação usado foi o método: <BR>
- <%=
Request.ServerVariables("REQUEST_METHOD")
%>
- <P>
- A URL recebida como
argumento foi: <BR>
- <%=
Request.ServerVariables("QUERY_STRING")
%>
- </body>
- </html>
- <%
- Else
- %>
- <html>
- <body
bgcolor="white">
- <form
action="<%=
Request.ServerVariables("SCRIPT_NAME")
%>" METHOD="GET">
- Informe o seu nome
: <br>
- <input
type="Text" Name="nome">
<BR>
- Informe a sua idade
: <BR>
- <input
type="Text" Name="idade">
<BR>
- <input
type="Submit" Name="submeter"
Value="Enviar">
- </form>
- </body>
- </html>
- <% End If %>
|
- O resultado do
processamento é o seguinte:
|
- Formulário obtido
quando se executa o script pela primeira vez
|
- Após preencher o
formulário e clicar no botão Enviar obtemos a seguinte
tela:
Analisando o script temos:
- 1-) Ao ser executado pela
primeira vez o script verifica se existe uma string de
consulta, isto é feito através da instrução - Request.ServerVariables("QUERY_STRING")
<> "" . Como no início a string de
consulta é vazia ( ="" ) o
processamento passa a exibir o formulário para coleta de
dados.
-
- 2-) O código que exibe o
formulário é o seguinte:
- <form
action="<%=
Request.ServerVariables("SCRIPT_NAME")
%>" METHOD="GET">
- Informe o seu nome
: <br>
- <input
type="Text" Name="nome">
<BR>
- Informe a sua idade
: <BR>
- <input
type="Text" Name="idade">
<BR>
- <input
type="Submit" Name="submeter"
Value="Enviar">
- </form>
|
- Onde em <form
action="<%=
Request.ServerVariables("SCRIPT_NAME")
%>" METHOD="GET">
- o atributo action
determina a URL ao qual o conteúdo dos campos do
formulário é submetido ( o caminho virtual do script
atual) e o atributo METHOD indica qual comando
HTTP foi usado no caso GET.
- 3-) Os campos para entrada
de dados são definidos em :
- Informe o seu nome
: <br>
- <input
type="Text" Name="nome">
<BR>
- Informe a sua idade
: <BR>
- <input
type="Text" Name="idade">
<BR>
|
- Onde : <input
type="Text" Name="nome"> e <input
type="Text" Name="idade">
- Definem o tipo (Type) de
caixa de texto e o nome de identificação do campo(Name)
.
-
- 4-) O elemento <input
type="Submit" Name="submeter"
Value="Enviar">
- define o botão de
submissão. Ao clicar no botão o formulário é enviado
e o script é executado novamente pois referenciamos o
seu URL no atributo action do formulário.
-
- 5-) Agora a sentença Request.ServerVariables("QUERY_STRING")
<> "" será verdadeira e o
processamento executara:
- cnome =
Request.QueryString("nome")
- nidade =
Request.QueryString("idade")
|
- Onde os valores dos campos nome
e idade definidos no formulário serão extraídos e
atribuidos ás variáveis cnome e nidade definidos
no inicio do script.
- Observe que usamos a
propriedade Querystring do objeto Request porque
os dados foram submetidos via método GET.
-
- 6-) No final os dados
recebidos são exibidos no scritp a seguir:
- Os dados recebidos
foram :<BR><BR>
- Nome : <%= cnome
%> <BR>
- Idade : <%=
nidade %> <BR>
- <p>
- O caminho do script
atual é : <BR>
- <%=
Request.ServerVariables("SCRIPT_NAME")
%>
- <P>
- O método da
solicitação usado foi o método: <BR>
- <%=
Request.ServerVariables("REQUEST_METHOD")
%>
- <P>
- A URL recebida como
argumento foi: <BR>
<%=
Request.ServerVariables("QUERY_STRING") %>
|
Utilizamos a notação <%=
%> para exibir o conteúdo das variáveis mas poderíamos
Ter usando response.write("") .
- Note que utilizamos os
elementos:SCRIPT_NAME ,REQUEST_METHOD E QUERY_STRING da coleção ServerVariables do objeto Request para obter informações do
servidor.
Usando o método Post
- Quando o formulário
utilizar o método POST os dados são enviados no
corpo da solicitação HTTP e não são adicionados á
URL tornando mais fácil o processamento da solicitação
e melhorando o desempenho do servidor.
- Em geral deve-se usar POST
quando os formulários forem alterar algo no ambiente da
aplicação e GET para realizar pesquisas.
-
- O mesmo código anterior
usando método POST ficaria assim:
- <%
Language="VBScript" %>
- <%
- Response.Expires=0
-
- Dim
cnome, nidade
-
- if
Request.ServerVariables("CONTENT_LENGTH")
<> 0 then
- cnome
= Request.form("nome")
- nidade
= Request.form("idade")
- %>
- <html>
- <body
bgcolor="aqua">
- Os
dados recebidos foram :<BR><BR>
- Nome
: <%= cnome %> <BR>
- Idade
: <%= nidade %> <BR>
- <p>
- O
caminho do script atual é : <BR>
- <%=
Request.ServerVariables("SCRIPT_NAME")
%>
- <P>
- O
método da solicitação usado foi o método:
<BR>
- <%=
Request.ServerVariables("REQUEST_METHOD")
%>
- <P>
- A
URL recebida como argumento foi: <BR>
- <%=
Request.ServerVariables("CONTENT_TYPE")
%>
- </body>
- </html>
- <%
- Else
- %>
- <html>
- <body
bgcolor="white">
- <form
action="<%=
Request.ServerVariables("SCRIPT_NAME")
%>" METHOD="POST">
- Informe
o seu nome : <br>
- <input
type="Text" Name="nome">
<BR>
- Informe
a sua idade : <BR>
- <input
type="Text" Name="idade">
<BR>
- <input
type="Submit" Name="submeter"
Value="Enviar">
- </form>
- </body>
- </html>
- <%
End If %>
|
O processamento do script
resultará na seguinte tela:
- As alterações básicas
foram as seguintes:
-
- 1-)
Request.ServerVariables("CONTENT_LENGTH")
<> 0 é usado para verificar se o conteúdo da
variável de ambiente CONTENT_LENGTH tem um valor
diferente de zero. Na primeira vez que o script for
executado o valor será igual a zero.
-
- 2-) <form
action="<%=
Request.ServerVariables("SCRIPT_NAME")
%>" METHOD="POST">
- define o método usado .
Agora o método POST
-
- 3-) Para extrair o
conteúdo dos campos definidos no formulário com o
método GET , usamos Request.QueryString , com o
método POST usamos Request.Form:
- Cnome
= Request.form("nome")
- nidade =
Request.form("idade")
|
- 4-) Para exibir a URL
recebida usamos a variável de ambiente CONTENT_TYPE
- A URL
recebida como argumento foi: <BR>
- <%=
Request.ServerVariables("CONTENT_TYPE") %>
- Valor exibido para o
método POST será sempre: applicaton/x-www-urlencoded
-
- Usando Cookies
para armazenar informações
-
- Os cookies podem ser usados para armazenar
informações do usuário ao preencher um formulário .
Como os cookies permanentes conservam o estado mesmo
após o fechamento do navegador temos com isso uma forma
de recuperar informações armazenadas anteriormente a
respeito do usuário. Vejamos um exemplo onde o usuário
preenche três formulários e no final todos os dados
serão recuperados e exibidos em uma página.
-
- A aplicação consiste em
quatro arquivos: cookie.asp , cookie1.asp ,
cookie2.asp e cookie3.asp.
- O código do script inicial
- cookie.asp é o seguinte:
- <%response.buffer=true%>
- <html>
- <head>
- <TITLE>cookie.asp</TITLE>
- </head>
- <body
bgcolor="#FFFFFF">
- <%
- nome=request.cookies("prefs")("nome")
- idade=request.cookies("prefs")("idade")
- %>
- <form
action="cookie1.asp"
method="post">
- Qual o seu nome:
<br>
- <input
type="text" name="nome"
size="20"
value="<%=nome%>"><br>
- Qual a sua
idade<br>
-
- <input
type="text" name="idade"
size="20"
value="<%=idade%>">
- <p>
- <input
type="submit" value="Continua
->"></p>
- </form>
- <%
- For Each cookie in
Response.Cookies
- Response.Cookies(cookie).Expires
= now()+30
- Next
- %>
- </body>
- </html>
|
- No script cookies.asp
temos:
-
- 1-) A primeira linha do
script é <%response.buffer=true%> , se
omitirmos esta linha teremos uma mensagem de erro durante
a execução do script abaixo quando formos gravar a data
de expiração para cada cookie da coleção :
- <%
- For Each cookie in
Response.Cookies
- Response.Cookies(cookie).Expires
= now()+30
- Next
- %>
|
Erro exibido sem usar
Response.Buffer=True : "Os cabeçalhos HTTP já estão
gravados no navegador cliente. Quaisquer modificações no
cabeçalho HTTP devem ser feitas antes de gravar o conteúdo da
página."
- 2-) As linhas de script a
seguir tentam recuperar os valores para os cookies("prefs")
- <%
- nome=request.cookies("prefs")("nome")
- idade=request.cookies("prefs")("idade")
- %>
|
- Como na primeira vez que o
script é executado os cookies não foram ainda criados e
os campos nome e idade não possuem valores ainda,
as variáveis nome e idade receberão valores
vazios.
-
- 3-) As linhas de scripts a
seguir definem as caixas de texto usadas e os nomes dos
campos utilizados; o valor inicial é definido como sendo
a variavel nome e a variável idade.
- <input
type="text" name="nome"
size="20"
value="<%=nome%>"><br>
- <input
type="text" name="idade"
size="20"
value="<%=idade%>">
-
- A tela exibida pela
execução do script pela primeira vez , é a seguinte:
4-) Quando o usuário preencher
o formulário e clicar em continuar , o arquivo de script cookie1.asp
será processado. Vejamos o seu código a seguir:
- <%response.buffer=true%>
- <html>
- <head>
- <TITLE>cookies1.asp</TITLE>
- </head>
- <body
bgcolor="#FFFFFF">
- <%
- nome=request("nome")
- idade=request("idade")
- telefone=request.cookies("prefs")("telefone")
- endereco=request.cookies("prefs")("endereco")
- %>
- <form
action="cookies2.asp"
method="post">
- Informe o seu
telefone<br>
- <input
type="text" name="telefone"
size="20"
value="<%=telefone%>"><br>
- Informe o seu
endereço<br>
- <input
type="text" name="endereco"
size="20"
value="<%=endereco%>"><br>
- <p>
- <%
- response.cookies("prefs")("nome")=nome
- response.cookies("prefs")("idade")=idade
- For Each cookie in
Response.Cookies
- Response.Cookies(cookie).Expires
= now()+30
- Next
- %>
- <input
type="submit" value="Continua
->"></p>
- </form>
- </body>
- </html>
|
Ao ser processado o arquivo de
script cookie1.asp , faz seguinte:
- 1-) Armazena nas variáveis
(Request) nome e idade o conteudo dos campos nome
e idade informados no arquivo formulário apresentado
pelo arquivo cookie.asp , e a seguir recupera os
valores para os cookies("prefs") referente ao telefone e
endereço; inicialmente esses valores serão vazios.
-
- nome=request("nome")
- idade=request("idade")
- telefone=request.cookies("prefs")("telefone")
- endereco=request.cookies("prefs")("endereco")
-
- 2-) Apresenta o formulário
definindo as caixas de texto e os campos telefone e
endereco. Os valores iniciais (Value) são definidos para
exibir o conteudo das variáveis telefone e endereço
. (Observe que usamos o método POST)
-
- %>
- <form
action="cookies2.asp"
method="post">
- Informe o seu
telefone<br>
- <input
type="text" name="telefone"
size="20"
value="<%=telefone%>"><br>
- Informe o seu
endereço<br>
- <input
type="text" name="endereco"
size="20"
value="<%=endereco%>"><br>
- <p>
- <%
-
- 3-) Por último atribuímos
uma data de expiração aos cookies como sendo de 30 dias
a partir de hoje (now).
-
- <%
- response.cookies("prefs")("nome")=nome
- response.cookies("prefs")("idade")=idade
- For Each cookie in
Response.Cookies
- Response.Cookies(cookie).Expires
= now()+30
- Next
- %>
-
- O processamento deste
script cookie1.asp - irá gerar a seguinte
tela:
- Após preencher o
formulário e clicar no botão Continua , o arquivo de
script cookies2.asp será processado , e, da mesma
forma irá armazenar o conteúdo dos campos em
cookies("prefs") , o código do script cookies2.asp
é o seguinte:
- <%response.buffer=true%>
- <html>
- <head>
- <TITLE>cookies2.asp</TITLE>
- </head>
- <body
bgcolor="aqua">
- <%
- telefone=request("telefone")
- endereco=request("endereco")
- Profissao=request.cookies("prefs")("Profissao")
- passatempo=request.cookies("prefs")("passatempo")
- salario=request.cookies("prefs")("salario")
- %>
- <form
action="cookies3.asp"
method="post">
- Profissao<br>
- <input
type="text" name="profissao"
size="20"
value="<%=profissao%>"><br>
- Passatempo<br>
- <input
type="text" name="passatempo"
size="20"
value="<%=passatempo%>"><br>
- Salário<br>
- <input
type="text" name="salario"
size="20"
value="<%=salario%>">
- <br>
- <%
- response.cookies("prefs")("telefone")=telefone
- response.cookies("prefs")("endereco")=endereco
- For Each cookie in
Response.Cookies
- Response.Cookies(cookie).Expires
= now()+30
- Next
- %>
- <input
type="submit" value=" Encerrar
-> ">
- </form>
- </body>
- </html>
|
- O seu processamento gerará
o seguinte formulário:
Quando o usuário preencher este
último formulário e clicar em encerrar o arquivo de script cookies3.asp
será processado e irá recuperar os valores armazenados nos
cookies exibindo-os na página. O código para cookies3.asp
é:
- <%response.buffer=true%>
- <html><head>
- <TITLE>cookies3.asp</TITLE>
- </head>
- <body
bgcolor="aqua">
- <%
- nome=request.cookies("prefs")("nome")
- idade=request.cookies("prefs")("idade")
- telefone=request.cookies("prefs")("telefone")
- endereco=request.cookies("prefs")("endereco")
- profissao=request("profissao")
- passatempo=request("passatempo")
- salario=request("salario")
- %>
- ------------------------------------------------<br>
- Ola
<%=nome%><p>
- Obrigado por
fornecer os seus dados pessoais<p>
- O seu endereco é:
<%=endereco%><br>
- ------------------------------------------------<br>
- Seu telefone para
contato é : <%=telefone%><br>
- Profissão :
<%=profissao%><br>
- Seu passatempo
predileto é : <%=passatempo%><br>
- ------------------------------------------------<br>
- Idade :
<%=idade%><br>
- Salario :
<%=salario%><br>
- ------------------------------------------------<br>
- <%
- response.cookies("prefs")("profissao")=profissao
- response.cookies("prefs")("passatempo")=passatempo
- response.cookies("prefs")("salario")=salario
- For Each cookie in
Response.Cookies
- Response.Cookies(cookie).Expires
= now()+30
- Next
- %>
- </body>
- </html>
|
Assim :
- 1-) Os valores dos cookies
são recuperados em:
-
- nome=request.cookies("prefs")("nome")
- idade=request.cookies("prefs")("idade")
- telefone=request.cookies("prefs")("telefone")
- endereco=request.cookies("prefs")("endereco")
2-) Para exibir os valores dos
campos usamos a notação <%= > , mas poderiamos Ter
usando response.write
- A tela final , exibindo os
valores informados é a seguinte:
- Usando o objeto
Session para passar informações
-
- As variáveis de sessão
são uma forma simples de passar informações entre as
páginas ASP . Elas são iguais a variáveis globais ,
enquanto você estiver navegando pelas páginas as
variáveis serão visíveis e você não vai precisar
passá-las de uma página para outra.
-
- Veremos um exemplo usando
variáveis de sessão para armazenar informações. O
exemplo aproveita o código do exemplo anterior com
algumas variações. No exemplo temos 3 arquivos : session1.asp
, session2.asp e session3.asp.
-
- O formulário gerado por session1.asp
ao ser executado pela primeira vez e após o seu
preenchimento é exibido como a seguir:
|
|
- Session1.asp
exibido pela primeira vez
|
- Formulário gerado
session1.asp preenchido
|
- O código de session1.asp
é o seguinte:
- <%response.buffer=true%>
- <html>
- <head>
- <TITLE>session1.asp</TITLE>
- </head>
- <body
bgcolor="aqua">
- <%
- session("nome")=request("nome")
- session("idade")=request("idade")
- %>
- <form
action="session2.asp"
method="post">
- Qual o seu nome:
<br>
- <input
type="text" name="nome"
size="20"
value="<%=session("nome")%>"><br>
- Qual a sua
idade<br>
-
- <input
type="text" name="idade"
size="20"
value="<%=session("idade")%>">
- <p>
- <input
type="submit" value="Continua
->"></p>
- </form>
- </body>
- </html>
|
- A única novidade é o uso
das variáveis de sessão para armazenar os valores
informados no formulário:
-
- session("nome")=request("nome")
- session("idade")=request("idade")
-
- Quando o botão Continua
é clicado , o arquivo session2.asp é chamado e o
formulário mostrado abaixo surge na tela:
|
- Formulário gerado
por session2.asp já preenchido
|
- Aqui esta o código de session2.asp:
- <%response.buffer=true%>
- <html>
- <head>
- <TITLE>session2.asp</TITLE>
- </head>
- <body
bgcolor="aqua">
- <%
- session("nome")=request("nome")
- session("idade")=request("idade")
- session("telefone")=request("telefone")
- session("endereco")=request("endereco")
- %>
- <form
action="session3.asp"
method="post">
- Informe o seu
telefone<br>
- <input
type="text" name="telefone"
size="20"
value="<%=session("telefone")%>"><br>
- Informe o seu
endereço<br>
- <input
type="text" name="endereco"
size="20"
value="<%=session("endereco")%>"><br>
- <p>
- <input
type="submit" value="Continua
->"></p>
- </form>
- </body>
- </html>
|
- Aqui, ainda , a única
novidade são as variáveis de sessão usadas para
armazenar os dados:
-
- session("nome")=request("nome")
- session("idade")=request("idade")
- session("telefone")=request("telefone")
- session("endereco")=request("endereco")
-
- Finalmente , o arquivo session3.asp
exibe todas as informações , como a seguir:
-
- Vejamos o seu código:
- <%response.buffer=true%>
- <html>
- <%response.buffer=true%>
- <html><head>
- <TITLE>session3.asp</TITLE>
- </head>
- <body
bgcolor="aqua">
- <%
- session("endereco")=request("endereco")
- session("telefone")=request("telefone")
- %>
- ------------------------------------------------<br>
- <b>
- Ola
<%=session("nome")%><p>
- Obrigado por
fornecer os seus dados pessoais<p>
- O seu endereco é:
<%=session("endereco")%><br>
- ------------------------------------------------<br>
- Seu telefone para
contato é :
<%=session("telefone")%><br>
- ------------------------------------------------<br>
- Idade :
<%=session("idade")%><br></b>
- ------------------------------------------------<br>
- </body>
- </html>
-
|
As informações contidas nas
variáveis de sessão são exibidas usando a forma:
<%=
session("nome_da_variavel")%>
Embora fáceis de usar e
permitirem uma personalização do ambiente para cada usuário , tanto
os cookies como as variáveis de sessão devem ser usadas com
muito equilíbrio e sem exageros pelos seguintes motivos:
- Se o usuário configurar o
seu navegador para não aceitar cookies ( seu cookies
e variáveis de sessão são sinônimos) o script
não vai funcionar para este usuário em particular.
- Um instância de cada
variável de sessão é criada quando um usuário visita
uma página e estas variáveis irão existir por pelo
menos 20 minutos ( o valor padrão) depois que o
usuário deixar a página. Então se você abusar das
variáveis de sessão , usando-as para armazenar variáveis
Recordsets, Conexões ADO , etc. a medida
que o número de visitantes aumentar a performance do
servidor irá diminuir.
- Como as variáveis de
sessão são fáceis de serem criadas se , você
sobrecarregar o seu script com muitas variáveis ele se
tornará pouco legível e de difícil manutenção.
Copyright
(c) 2004 - José Carlos Macoratti