ASP - Usando Server-Side Includes

Vamos falar sobre Server-Side Includes ou Inclusão do lado do servidor (argh !!) ou melhor : arquivos de inclusão. O que são os arquivos de inclusão ?

Os arquivos de inclusão são arquivos de scripts ASP que são incluídos em páginas de um site com o objetivo de facilitar a manutenção , modularizar o código e facilitar a compreensão do mesmo.

Para você entender melhor , suponha que você esta desenvolvendo o seu site e que o mesmo já conta com umas 100 páginas . Existem elementos comuns a várias páginas como : barra de navegação , logotipos , endereço de e-mail , banners , etc.... Agora imagine que o seu site utilize um script para realizar um cálculo com um taxa fixa e que pode variar com o decorrer do tempo.

E se você precisar alterar alguns desses elementos ? Vai ter que fazer essas alterações em todas as páginas onde eles estiverem contidos... Imagine o trabalho que vai dar !!!

No entanto se você usar os arquivos de inclusão vai ter que alterar apenas o arquivo original e pronto !!!! As alterações são automaticamente incorporadas em todas as páginas durante a inclusão do arquivo. Isto vale para bibliotecas de código , funções , etc...

Convencido. Pois bem como fazer a inclusão destes arquivos ?

Existem duas maneiras de você fazer a inclusão de um arquivo em sua página:

1- A instrução geral e recomendada é :

<!--#include virtual="nome_do_arquivo"-->

isto é chamada de inclusão virtual e você deve informar o nome do arquivo e sua localização absoluta relativa a raiz do site da Web do arquivo atual. A instrução para incluir o arquivo config.asp que esta no diretório arquivos é a seguinte:

<!--#include virtual="/arquivos/config.asp"-->

Os arquivos que podem ser incluidos não se restringem a arquivos com extensão .asp . Você pode incluir arquivos textos com qualquer extensão. Mas lembre-se que os arquivos com extensão .asp possuem uma proteção: quando alguém tenta visualizar o conteúdo de um arquivo com extensão .asp irá ver somente o resultado do processamento do arquivo.

2- Voce pode usar também a seguinte instrução :

<!--#include file="nome_do_arquivo"-->

aqui a palavra chave file inclui arquivos relativos ao diretório onde reside o arquivo que esta sendo incluído. Você não tem que fornecer o caminho especificado para a raiz do servidor ; pode usar um caminho relativo.

Os arquivos de inclusão podem conter código HTML e/ou código ASP mas são processados antes de qualquer código ASP. Vejamos a seguir um exemplo :

Para os exemplos funcionarem em sua máquina você tem que ter o Personal Web Server instalado. Para mais informações leia : Como configurar o Personal Web Server ?

Eu vou criar um diretório teste subordinado ao diretório raiz do meu servidor. Assim se você instalou o PWS no diretório padrão , o local físico da pasta será : C:\Inetpub\wwwroot\teste

Vamos criar dois arquivos de scripts asp : pagina1.asp e pagina2.asp e salvá-los no diretório teste . O arquivo pagina2.asp será incluido no arquivo pagina1.asp quando este for chamado no seu servidor.

Arquivo pagina1.asp

<html>
<head>
<title>Pagina1.asp</title>
</head>
<%
response.write "Pagina1.asp </p>"
response.write "Exemplo de inclusão de arquivos <p>"
response.write " Atenção vou incluir o arquivo pagina2.asp </p>"
%>
<!--#include file="pagina2.asp"-->
</body>
</html>

Observe que temos codigo HTML e codigo ASP delimitado pelas tags <% %>. A instrução usada para incluir o arquivo pagina2.asp é : <!--#include file="pagina2.asp"-->

Arquivo pagina2.asp

<%
Response.Write "<font color='#0000FF'"
response.write "----------------------------------------</br>"
response.write "Olá , eu sou o arquivo pagina2.asp <br>"
response.write "----------------------------------------</br>"
%>

O arquivo pagina2.asp contém somente script ASP (o código HTML usado esta inserido na instrução Response.write). Abaixo temos o resultado do processamento do arquivo pagina1.asp.

Note que o conteúdo do arquivo pagina2.asp está em azul para destacar e comprovar a inclusão.

Já vou avisar que você não pode faze uma inclusão cíclica . Se no exemplo anterior a pagina2.asp ao ser chamada fizesse uma chamada a página1.asp , ou seja , a pagina1.asp inclui a pagina2.asp que inclui a página1.asp , ocorreria o um erro. Quer tentar ? então altere o código de pagina2.asp para:

<%
Response.Write "<font color='#0000FF'"
response.write "Pagina2.asp</p>"
response.write "----------------------------------------</br>"
response.write "Olá , eu sou o arquivo pagina2.asp <br>"
response.write "----------------------------------------</br>"
%>
<!--#include file="pagina1.asp"-->

Agora rode o arquivo pagina1.asp e você terá a seguinte mensagem de erro:

Inclusões Dinâmicas

Como os arquivos de inclusão são executados antes de qualquer código asp não podemos usar inclusões dinâmicas. Se você tentar rodar o script asp abaixo :

<%
Dim UrlPagina
UrlPagina = "/teste/teste.asp"
%>
<!--#include virtual="<%=UrlPagina%>"-->

Não vai funcionar , pois como os arquivos de inclusão são processados antes de qualquer código da página , a variavel UrlPagina não será encontrada . Podemos contornar este problema da seguinte forma :

1-) usar instruções Select/Case como no exemplo a seguir:

<%Select Case UrlPagina
   Case "Pagina1.asp" %>
      <!--#include virtual="/pagina1.asp"-->
<% Case "Pagina2.asp" %>
      <!--#include virtual="/pagina2.asp"-->
<% Case "Pagina3.asp" %>
      <!--#include virtual="/pagina3.asp"-->
<% Case "Pagina4.asp" %>
      <!--#include virtual="/pagina4.asp"-->
<%End Select%>

2-) usar o objeto FileSystemObject para ler o conteúdo de um arquivo e inserí-lo na página ASP. Abaixo um exemplo , onde o arquivo teste.htm é lido e incluído na página asp:

<% Option Explcit %>
<%
Dim StrArquivo , objFSO , objArquivo

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'define o caminho e nome do arquivo 
strArquivo = "C:\Inetpub\wwwroot\teste\teste.htm"

'lê o arquivo teste.htm
set objArquivo = objFSO.OpenTextFile(strArquivo)

'inclui o conteúdo do arquivo
Response.Write objArquivo.ReadALL

'fecha o objeto e libera memória
objArquivo.close
set objArquivo = Nothing
set ObjFSO = Nothing %>

Obs: note que você deve fornecer o caminho físico de localização do arquivo.

Ao usar o código acima você deve ficar atento ao seguinte detalhe : O arquivo que você vai ler usando o objeto FileSystemObject somente vai poder ser aberto e lido quando o script ASP já estiver sendo executado, logo , se houver no seu arquivo algum código ASP ele não será executado , apenas será incluído na forma como estiver como um arquivo HTML. Por isso este método deve ser usado para incluir apenas arquivos textos e HTML sem código ASP.

Acabei , Feliz 2002...


José Carlos Macoratti