ASP oftewel Active Server Pages is een server-side techniek afkomstig
van Microsoft. Onder 'Server Pages' wordt verstaan dat ASP-pagina's op de
server worden verwerkt. Met Internet Information Server (IIS) is
standaard VBScript geinstalleerd, maar er kunnen ook andere
programmeertalen worden gebruikt met ASP. Een ASP-pagina wordt door het
webserver programma (zie ook: 4. Kan ik mijn ASP-pagina's
ook lokaal bekijken?) op de server uitgevoerd. Het webserverprogramma
produceert vervolgens pure HTML. ASP is dus client-onafhankelijk. ASP
wordt vaak gebruikt om een ODBC-database te benaderen om op die manier
dynamische webpagina's aan de gebruiker te presenteren. Het benaderen van
de ODBC-database gebeurt vaak door middel van SQL-queries, maar het is
ook mogelijk om de database te benaderen via (eventueel zelf geschreven)
ActiveX middle-tier.
Onderstaande afbeelding toont een korte, inleidende samenvatting.
Deze FAQ is opgebouwd aan de hand van een aantal veel gevraagde vragen
in nl.internet.www.ontwerp.
De voorbeelden in deze FAQ zijn allemaal gebaseerd op VB Script.
Nee. ASP is geen programmeertaal op zich. ASP-pagina's kunnen wel code van verschillende soorten programmeertalen bevatten:
Standaard wordt door de webserver programma's (zie ook: 4. Kan ik mijn ASP-pagina's ook lokaal bekijken?) VB Script en JavaScript ondersteunt. Perl Script werkt alleen indien Perl (bv. Active Perl) is geinstalleerd.
Voorspelbaar antwoord: vraag het hem.
De meeste providers die voor hun webservers Windows NT gebruiken
ondersteunen ASP. Gewoonlijk kunnen tegen een gering bedrag 1 of meerdere
ODBC datasources (zie ook: 5. Wat is beter? DSN of
DSN-less?) door de provider worden gedefiniëerd.
Er zijn een aantal gratis ASP-providers zoals:
Ja, dat kan.
ASP wordt uitgevoerd door het webserver programma. Er zijn op dit moment
2 webserver programma's die ASP kunnen uitvoeren:
Als u gebruik wilt maken van een database, moet er een koppeling gemaakt worden tussen de database en de ASP-pagina.
Deze koppeling is op meerdere manieren mogelijk, de meest gebruikelijke is om de database direct te benaderen via een DSN of DSN-less connectie:
Zie ook: 9. Hoe kan ik verbinding maken met een database?
Voor zover bekend zijn er geen verschillen in performance tussen deze beide mogelijkheden.
Stel: var_naam = "Janssen"
Uit de tabel Werknemers wilt u alle werknemers met die naam zien.
De SQL query wordt dan:
sql_query = "SELECT * FROM werknemers WHERE naam='" & var_naam & "'"
Stel: naam="Janssen"
U wilt weten of deze naam in de tabel werknemers voorkomt.
De SQL query wordt dan:
sql_query = "SELECT * FROM werknemers WHERE naam='" & naam & "'"
set recordset = server.createobject("ADODB.recordset")
recordset.open sql_query, verbinding
if recordset.eof then
' naam komt niet voor
else
' naam komt wel voor end if
Nee. Dat wil zeggen: het client-side script en het server-side script
kunnen elkaar nooit direkt beinvloeden.
De eenvoudige reden daarvoor is dat server-side script eerst wordt
uitgevoerd en client-side script pas in de browser van de bezoeker.
Toch is het een beetje mogelijk om deze 2 scripts te combineren, kijk maar eens naar onderstaand voorbeeld:
naam = request("naam")
sql = "SELECT * FROM werknemers WHERE naam='" & naam & "'"
recordset.open sql, conn
if recordset.eof then
%>
<script language="javascript" type="text/javascript">
<!--
window.alert('Werknemer %>response.write naam<% komt niet voor in het bestand.');
//-->
</script>
<%
else
%>
<script language="javascript" type="text/javascript">
<!--
window.alert('Werknemer %>response.write naam<% komt voor in het bestand.');
//-->
</script>
<%
end if
Dit snippertje code geeft dus een JavaScript alert schermpje met daarin de melding of de betreffende werknemer wel of niet in het bestand voorkomt.
Verbinding maken met een ODBC database kan op verschillende manieren:
verbinding maken via een DSN of DNS-less.
Zie ook: 5. Wat is beter? DSN of DSN-less?
Het is ook mogelijk om zelf ActiveX objecten te schrijven die de verbinding met de database regelen. Deze objecten (vaak DLL-bestanden) moeten dan wel op de web-server geinstalleerd worden zodat er binnen de ASP-pagina's van gebruik kan worden gemaakt.
We behandelen hier een voorbeeld met een DSN connectie.
Het maken van een verbinding is het makkelijkst uit te leggen aan de
hand van een voorbeeld.
De tekst achter de ' geeft commentaar op de code op de volgende
regel.
' nieuw object creëren
Set conn = Server.CreateObject("ADODB.Connection")
' verbinden met DSN de_dsn als gast met wachtwoord zeergeheim
conn.open "de_dsn","gast","zeergeheim"
conn.Open 'driver={Microsoft Access Driver (*.mdb)};
dbq=c:\inetpub\aspsamp\northwind.mdb'
De resultaten van een SQL query die is uitgevoerd komen in een
zogenaamd recordset terecht.
Deze recordset is niets meer dan een array met daarin de gegevens uit de
tabel.
Zoals uit het onderstaande voorbeeld blijkt kunnen we gemakkelijk door deze recordset heen navigeren.
Uiteraard moeten we eerst een verbinding met de database opbouwen, zie ook 9. Hoe kan ik verbinding maken met een database?. In dit voorbeeld gaan we er van uit dat er al een verbinding is met de database via de variabele 'conn'.
sql = "SELECT * FROM tabelnaam"
set recordset = server.createobject("ADODB.recordset")
recordset.open sql, conn
recordset.movefirst ' ga naar eerste record
var_aantal_records = recordset.recordCount
while not recordset.eof
response.write recordset.fields("veldnaam")
recordset.movenext ' ga naar volgende record
wend
recordset.movelast ' ga naar laatste record
recordset.move(-2) ' ga 2 records terug in de recordset
Gebruik een ASP session. Een variabele in een ASP session invoegen:
var_loginnaam = "pietje"
session.timeout = 30
session("loginnaam") = var_loginnaam
Een variabele uit een ASP session halen:
var_loginnaam = cstr(session("loginnaam"))
response.write "U bent als " & var_loginnaam & " ingelogd."
Gebruik response.redirect "bestandsnaam.asp"
.
Een berucht probleem. Rommelige HTML code maakt het moeilijk om fouten
op te sporen.
De code die wordt gegenereerd bevat geen returns. Bekijk eens de
volgende code:
response.write "Welkom op onze site<br>"
response.write "Het is vandaag 8 juni 2002"
In de browser van de bezoeker levert dit geen problemen op, want de bezoeker ziet:
Welkom op onze site
Het is vandaag 8 juni 2002
Als we echter in de source gaan kijken zien we:
Welkom op onze site<br>Het is vandaag 8 juni 2002
Omdat het maar om 2 regels gaat is slordige code hier geen probleem, maar als we te maken hebben met een groot document waar bijvoorbeeld tabellen in zijn verwerkt dan is het goed om te zorgen dat de source er schoon uit ziet.
Met de functie vblf
(VB LineFeed) creëren we een
return:
response.write "Welkom op onze site<br>" & vblf
response.write "Het is vandaag 8 juni 2002" & vblf
http://www.4GuysFromRolla.com
[ When you think ASP, think...]
http://asp.superexpert.com
[ Nieuws, voorbeelden, tutorials ]
http://www.powerasp.com
[ ASP PowerASP Active Server Pages articles links tutorials ]
http://www.asptoday.com
[ Programmer to Programmer ]
http://www.learnasp.com
[ Learn ASP The Best Way! ]
http://www.devshed.com
[ The Open Source Web Development Site ]
http://aspwire.com/
[ ASP News & Information source ]
www.haneng.com
[ A different ASP developers site! ]
http://msdn.microsoft.com/workshop/server/asp/aspfeat.asp
[ Web Workshop - ASP feature overview ]
www.aspfree.com
[ Your 1st source for free ASP live demo's, forums, downloads and
more!!! ]
http://www.leren.nl/rubriek/computers_en_internet/software_ontwikkelen/web_applicaties/asp/
[ ASP, cursus, e-learning, e-leren, handleiding, leren, online leren,
teleleren, tutorial ]
Bijdrage van Gertjan van Laar, aangepast door Melle Koning
Laatste wijziging: 14 juni 2002