Esse artigo faz parte da revista Clube Delphi edição 22. Clique aqui para ler todos os artigos desta edição

 

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Páginas estáticas com o WebBroker


A idéia deste artigo surgiu de uma necessidade pessoal: tenho uma página sobre Delphi na Internet (www.revolution.com.br/delphistop/indexp.html) que contém diversos links. Estes links estão organizados por páginas (pessoais, comerciais, Borland, etc) e, por sua vez, ordenados em ordem alfabé­tica.

 

Cada página tem sua correspondente em inglês, com os mesmos links da página em português. Com a mobilidade da Internet é relativamente freqüente a inclusão, exclusão ou alteração de links. Para poder alterar ou inserir um link na página, deve-se localizar em que página o link irá ficar, encontrar sua posição alfabética e inseri-lo. Deve-se, então, fazer a mesma coisa com a página em inglês.

        Quando as páginas não contêm muitos links, essa é uma tarefa simples, mas quando o número de links começa a se avolumar, passa a ser um processo mais demorado. Assim, inserir 10 a 15 links e alterar mais um punhado, tornou-se uma tarefa que tomava uma a duas horas. Então pensei em criar uma tabela com os links e uma aplicação que extraía os dados desta tabela e gerava uma página HTML.

 

Alternativas

 

        A primeira idéia que apareceu foi usar os componentes do Delphi para gerar páginas dinâmicas, numa aplicação CGI ou DLL ISAPI, mas esta idéia logo foi descartada pelos seguintes motivos:

  Os dados não se alteram com freqüência – atualizações feitas uma vez por semana são suficientes.

  O programa geraria sempre os mesmos dados.

  O programa seria ativado cada vez que uma página fosse necessária (no caso de CGI).

  O provedor poderia estar usando Windows, mas não aceitar programas CGI ou ISAPI.

  O provedor poderia não aceitar a instalação da BDE.

  O banco de dados deveria ficar no servidor, exigindo manutenção remota.

 

        O uso de páginas estáticas evita esses problemas e, como não é necessária a atualização freqüente, poderíamos gerar as páginas localmente, enviando-as ao servidor via FTP. A segunda idéia é criar um programa que gere as páginas manualmente, gerando um arquivo HTML. A geração de páginas HTML via programação é uma tarefa relativamente simples, mas o programa poderia tornar-se um pouco difícil de ser mantido, especialmente com o aumento das páginas a serem geradas.

        A idéia seguinte foi o uso dos componentes WebBroker do Delphi para gerar as páginas estáticas. Dessa maneira, temos a facilidade e flexibilidade de criação de páginas possibilitada pelo Delphi, além de gerarmos as páginas localmente. Outra vantagem é que o WebBroker é compatível com o Kylix, viabilizando a obtenção das páginas também no Linux.

 

WebBroker

 

        Os componentes WebBroker localizam-se na guia Internet da paleta de componentes, mostrada na Figura 1.

 

Figura 1. Guia Internet da paleta de componentes

 

         Para se criar uma nova aplicação para a Internet, usa-se o componente TWebModule, um componente semelhante ao TDataModule, mas capaz de responder a requisições HTTP. Esta característica também pode ser obtida colocando-se um componente TWebDispatcher num DataModule. A partir daí, colocamos os outros componentes para a geração de páginas, como o TPageProducer, o TDatasetPageProducer ou o TDatasetTableProducer.

 

TPageProducer

 

        O TPageProducer é um componente que, a partir de um modelo que pode estar num arquivo ou ser digitado na sua propriedade HTMLDoc, substitui partes do conteúdo, gerando uma página HTML. Para que o texto seja substituído, o modelo deve conter rótulos especiais. Estes rótulos deverão estar cercados por < e > e o primeiro caractere deve ser a cerquilha (#), seguida pelo nome do rótulo. Um exemplo de rótulo válido é <#DATA>.

Quando o componente TPageProducer encontra um rótulo, ele ativa o evento OnHtmlTag. Criando um manipulador para este evento, você pode substituir os dados conforme sua necessidade. Por exemplo, se a propriedade HTMLDoc estiver preenchida com:

 

<HTML>

  <HEAD>

    <TITLE>Páginas estáticas com WebBroker</TITLE>

  </HEAD>

  <BODY>

   A data atual é : <#DATA>

  </BODY>

...

Quer ler esse conteúdo completo? Tenha acesso completo