O ASP (de Active Server Pages), também conhecido como ASP Clássico hoje em dia, é uma estrutura de bibliotecas básicas (e não uma linguagem) para processamento de linguagens de script no lado servidor para geração de conteúdo dinâmico na Web. Exemplos de linguagens aceitas são: VBScript, JScript, PerlScript, Tcl ou Python sendo que apenas as duas primeiras são suportadas por padrão.[1]
A mais comumente difundida foi VBScript, sendo encontrada várias referências a ASP VBScript em artigos.
ASP foi substituído pelo ASP.NET, mas até hoje é suportada por versões atuais do IIS.
O script é interpretado no lado do servidor e o que é enviado ao lado do usuário/utilizador (navegador, por exemplo) é apenas a saída que normalmente é uma linguagem de marcação como HTML, XHTML ou XML.
Por se tratar de uma linguagem que roda do lado do servidor, é possível estabelecer o que vai ser enviado para o usuário (é o caso de sites que possuem diferentes perfis de acesso) e também fazer consultas a bancos de dados.
Exemplos de código ASP
Um exemplo de uma página ASP conforme os padrões web pode ser representado pelo seguinte código:
O exemplo 1 mostra uma tabela com links que aparecerão nas colunas iniciais. Clicando em um dos links o exemplo 2 será chamado e receberá um ID como parâmetro. No exemplo 2 será permitido alterar as informações e após clicar no botão Submit, o exemplo 3 será chamado para processar as informações e atualizá-las no banco de dados em SQL.
Exemplo 1 (1a parte):
1<html>
2<head>
3<title>dbfullteste1.asp</title>
4</head>
5<bodybgcolor="#FFFFFF">
6<%7' Conexão com o banco8setconntemp=server.createobject("adodb.connection")9conntemp.open"Estudante","Estudante","magic"1011setrstemp=conntemp.execute("select * from autores where AU_ID<100")12qtde_campos=rstemp.fields.count-113%>
14<tableborder="1">
15<tr>
16<tdvalign="top">---</td>
17<%'Preenche a primeira linha com o nome dos campos18fori=0toqtde_campos%>
19<td><b><%=rstemp(i).name%></b></td>
20<%next%>
21</tr>
22<%' Preenche a tabela com os registros do banco23dowhilenotrstemp.eof%>
24<tr>
25<tdvalign="top"><aHREF="dbfullteste2.asp?str_ID=<%=rstemp("AU_ID")%>">Editar</a></td>
26<%fori=0toqtde_campos%>
27<tdvalign="top"><%=rstemp.fields(i).value%></td>
28<%next%>
29</tr>
30<%rstemp.movenext31loop32conntemp.close%>
33</table>
34</body>
35</html>
Exemplo 2 (2a. parte):
1<html>
2<head>
3<title>dbfullteste2.asp</title>
4</head>
5
6<bodybgcolor="#FFFFFF">
7
8<%9' Conecta com o banco e pega o valor do str_ID permitindo a edicao do registro10setconntemp=server.createobject("adodb.connection")11conntemp.open"Estudante","Estudante","magic"1213ID=request.querystring("str_ID")14sqltemp="select * from autores where AU_ID="&ID15setrstemp=conntemp.execute(sqltemp)16atual_ID=rstemp("AU_ID")17atual_nome=rstemp("autor")18atual_ano_nasc=rstemp("ano_nasc")19%>
20
21<formname="meu_autor"action="dbfullteste3.asp"method="GET">
22<p>ID:<inputtype="TEXT"name="id"value="<%=atual_id%>"></p>
23<p>Nomedoautor:<inputtype="TEXT"name="nome"value="<%=atual_nome%>"></p>
24<p>AnodeNascimento:<inputtype="TEXT"name="ano"value="<%=atual_ano_nasc%>"></p>
25<p><inputtype="SUBMIT"></p>
26</form>
27</body>
Exemplo 3 (parte):
1<html>
2<head><title>dbfullteste3.asp</title></head>
3<bodybgcolor="#FFFFFF">
4<%5onerrorresumenext6au_nome=request.querystring("nome")7' Corrige os apóstrofos8au_nome=Replace(au_nome,"'","''")910au_ano=request.querystring("ano")11au_ID=request.querystring("ID")12SetConn=Server.CreateObject("ADODB.Connection")13conn.open"Estudante","Estudante","magic"1415SQLstmt="UPDATE autores "16SQLStmt=SQLstmt&"SET autor='"&au_nome&"',"17SQLstmt=SQLstmt&"ano_nasc="&au_ano18SQLStmt=SQLStmt&" WHERE AU_ID="&au_ID19SetRS=Conn.Execute(SQLStmt)20Iferr.number>0then21response.write"Ocorreram erros no script:"&"<P>"22response.write"Número="&err.number&"<P>"23response.write"Descrição="&err.description&"<P>"24response.write"Help Context="&err.helpcontext&"<P>"25response.write"Help Path="&err.helppath&"<P>"26response.write"Native Error="&err.nativeerror&"<P>"27response.write"Source="&err.source&"<P>"28response.write"SQLState="&err.sqlstate&"<P>"29else30response.write"Nenhum problema aconteceu!"&"<P>"31endif32IFconn.errors.count>0then33response.write"Ocorreram erros com o banco de dados"&"<P>"34response.writeSQLstmt&"<P>"35forcounter=0toconn.errors.count36response.write"Número do erro:"&conn.errors(counter).number&"<P>"37response.write"Descrição --> "&conn.errors(counter).description&"<P>"38next39else40response.write"Parece que tudo está ok. O Autor foi atualizado!"&"<P>"41endif42Conn.Close43%>
44</body>
45</html>
Exemplo 4: Exemplo em ASP.Net de uma rotina de falha no ISS.