 ASP - Gerenciando as
        informações e o ambiente 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=0Dim cnome, nidadeif
                Request.ServerVariables("QUERY_STRING")
                <> "" thencnome =
                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 thencnome
                = 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.CookiesResponse.Cookies(cookie).Expires
                = now()+30Next%></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.CookiesResponse.Cookies(cookie).Expires
                = now()+30Next%> | 
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")=nomeresponse.cookies("prefs")("idade")=idadeFor Each cookie in
                Response.CookiesResponse.Cookies(cookie).Expires
                = now()+30Next%><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")=telefoneresponse.cookies("prefs")("endereco")=enderecoFor Each cookie in
                Response.CookiesResponse.Cookies(cookie).Expires
                = now()+30Next%><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")=profissaoresponse.cookies("prefs")("passatempo")=passatemporesponse.cookies("prefs")("salario")=salarioFor Each cookie in
                Response.CookiesResponse.Cookies(cookie).Expires
                = now()+30Next%></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