Continuando a sequência de artigos sobre os objetos do ASP, veremos aqui como utilizar o objeto Server.
Olá. Agora que o ano começou o carnaval acabou, vou correr para atualizar o conteúdo das aulas – que estão quase todas atrasadas. Devido a este atraso, o conteúdo deste e dos próximos posts serão levemente resumidos (volto a lembrar que o objetivo é reforçar/relembrar o que foi visto em aula).
Continuando a falar dos objetos do ASP, chega a vez do Server. Este objeto serve basicamente para acessar funções gerais no servidor web. O Server possui uma propriedade e sete métodos, a saber:
- ScriptTimeout (propriedade)
- CreateObject* (método)
- Execute (método)
- GetLastError** (método)
- MapPath* (método)
- HTMLEncode (método)
- Transfer (método)
- URLEncode (método)
* Seu uso será exemplificado em aulas posteriores;
** Não será visto em aula.
ScriptTimeout
Propriedade que define o tempo máximo de espera para o processamento de um script no servidor. O valor padrão é 90 (segundos), o que quer dizer que uma página que contenha um código que leve a um looping infinito, por exemplo, será executada por no máximo 90 segundos, para então resultar em erro.
Setando um novo valor para ScriptTimeout:
Server.ScriptTimeout = 45 ' Exibição do valor Response.Write(Server.ScriptTimeout)
CreateObject
Instancia um objeto. Em outras palavras, cria um objeto do tipo especificado. Veremos mais detalhes ao trabalharmos com bancos de dados.
Execute
Executa um script contido em um arquivo ASP externo. Equivale ao include do PHP.
Exemplo:
arquivo1.asp
Response.Write("Comando 1 do arquivo1.asp<br>")
Server.Execute("arquivo2.asp")
Response.Write("Comando 2 do arquivo1.asp<br>")
arquivo2.asp
Response.Write("Comando 1 do arquivo2.asp<br>")
Response.Write("Comando 2 do arquivo2.asp<br>")
Response.Write("Comando 3 do arquivo2.asp<br>")
Resultado da execução do arquivo1.asp:
Comando 1 do arquivo1.asp
Comando 1 do arquivo2.asp
Comando 2 do arquivo2.asp
Comando 3 do arquivo2.asp
Comando 2 do arquivo1.asp
Percebam que após a execução dos comandos no arquivo2.asp, os comandos restantes do arquivo1.asp são executados.
GetLastError
Este método é usado na personalização de páginas que exibem mensagens de erro no servidor. Um exemplo no uso deste método pode ser encontrado aqui (em português).
MapPath
Obtém o caminho absoluto para um arquivo ou pasta no servidor a partir de seu caminho relativo. Utilizaremos este método quando trabalharmos com bancos de dados.
HTMLEncode
Este é um método bem util. Sua função é converter caracteres especiais contidos em uma string em seus respectivos “códigos” oriundos do HTML (HTMLEncode significa codificar em HTML).
Experimentem exibir o texto “<br>” numa página web. Se vocês digitarem no body, por exemplo, ao invés do texto “<br>” o que aparece é uma quebra de linha. Isso acontece porque o browser processa o texto “<br>” como um comando da linguagem HTML. Para simplesmente exibirmos como texto, precisamos substituir os “<” e “>” pelos seus respectivos códigos em HTML: “<” e “>”, respectivamente. Então teríamos que escrever: <br>
Como ninguém costuma decorar esses códigos, e mesmo que decore, não quer perder tempo digitando-os, vamos utilizar o método HTMLEncode. Analisem o código fonte gerado pela execução do código abaixo e tirem suas conclusões:
'Sem HTMLEncode
Response.Write("O elemento do HTML que quebra linhas é o <br>")
'Com HTMLEncode
Response.Write(Server.HTMLEncode("O elemento do HTML que quebra linhas é o <br>"))
Transfer
Faz quase o mesmo que o método Execute. A diferença é que o Transfer não inclui a página externa, mas sim redireciona a execução para ela. Ou seja, ao transferir a execução de uma página chamada arquivo1.asp para uma outra chamada arquivo2.asp, ao fim da execução desta última, o servidor não retorna para a primeira.
Observação: o objetivo deste método não é simplesmente redirecionar (como o Response.Redirect). O redirecionamento ocorre de forma transparente para o usuário – ele não sabe que está sendo redirecionado, pois o browser não irá recarregar – e, principalmente, este redirecionamento conserva o estado atual do servidor. Assim, as variáveis definidas continuam existindo ao chegar na página de destino.
Exemplo (baseado no exemplo do Execute – vejam as diferenças no resultado):
arquivo1.asp
Response.Write("Comando 1 do arquivo1.asp<br>")
Server.Transfer("arquivo2.asp")
Response.Write("Comando 2 do arquivo1.asp<br>")
arquivo2.asp
Response.Write("Comando 1 do arquivo2.asp<br>")
Response.Write("Comando 2 do arquivo2.asp<br>")
Response.Write("Comando 3 do arquivo2.asp<br>")
Resultado da execução do arquivo1.asp:
Comando 1 do arquivo1.asp
Comando 1 do arquivo2.asp
Comando 2 do arquivo2.asp
Comando 3 do arquivo2.asp
Qual a diferença? Ao terminar de executar os comandos do arquivo2.asp, ele não volta para o arquivo1.asp. A execução termina.
URLEncode
Mais uma função de codificação, como a HTMLEncode. A diferença é que o URLEncode codifica um texto para que ele possa ser inserido numa URL. Para ver um exemplo, acesse o Google, digite uma frase como: receita de suflê de abóbora (eu chutei essa receita, mas pelo jeito, ela existe de verdade). Ao pesquisar, não cliquem em nenhum resultado. Ao invés disso, observem a URL. Como o formulário de busca do Google é enviado via GET, as informações ficam expostas na URL. Fiz a pesquisa e a URL atual é: http://www.google.com.br/search?q=receita+de+sufl%C3%AA+de+ab%C3%B3bora&ie=utf-8&oe=utf-8&rls=org.mozilla:pt-BR:official&client=firefox-a
O texto que digitei fica depois do “?q=” e vai até antes do “&ie=”, ou seja:
receita+de+sufl%C3%AA+de+ab%C3%B3bora
Portanto, a frase “receita de suflê de abóbora”, codificada na URL vira “receita+de+sufl%C3%AA+de+ab%C3%B3bora”. É fácil perceber que o que muda são os espaços (trocados por “+”) e as letras acentuadas (na verdade, os caracteres especiais em geral), que são trocadas por dois caracteres entre porcentagens (exemplo: %C3%).
Qual a utilidade? Inserir informações diretamente na URL. Por exemplo, acessando este endereço…
http://www.google.com.br/search?q=dicion%C3%A1rio+bil%C3%ADng%C3%BCe+portugu%C3%AAs+ingl%C3%AAs
…vocês já caem automaticamente na página de resultados do Google para “dicionário bilíngüe português inglês”. Para gerar um link destes automaticamente é preciso usar este método.
Exemplo:
Response.Write("Pesquise por 'pôneis siamêses' clicando <a href='")
Response.Write("http://www.google.com.br/search?q=" & URLEncode("pôneis siamêses"))
Response.Write("'>aqui</a>")
Um outro exemplo de utilização é criar um formulário de busca que encaminhe para a página de resultados do Google para o termo pesquisado.
4.06.2008 às 09:07 |
[...] um novo valor para ScriptTimeout: view plaincopy to [...]