Active Server Pages FAQ
Inhoud
- Wat is ASP?
- Is ASP een programmeertaal?
- Hoe weet ik of mijn provider ASP ondersteunt?
- Kan ik mijn ASP-pagina's ook lokaal bekijken?
- Wat is beter? DSN of DSN-less?
- Hoe kan ik variabelen gebruiken in een SQL query?
- Hoe kan ik controleren of een waarde in de tabel voorkomt?
- Kan ik client-side JavaScript combineren met server-side ASP (VB) script?
- Hoe kan ik verbinding maken met een database?
- Hoe kan ik door een recordset heen 'wandelen'?
- Hoe kan ik een variabele in meerdere ASP pagina's gebruiken, zonder hem telkens mee te geven?
- Hoe kan ik een ASP pagina redirecten naar een andere pagina?
- Het ASP document had ik in 'schone source' geschreven. De HTML output is een rommeltje.
- Links naar verschillende tutorials en voorbeelden
1. Wat is ASP?
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.
2. Is ASP een programmeertaal?
Nee. ASP is geen programmeertaal op zich. ASP-pagina's kunnen wel code van verschillende soorten programmeertalen bevatten:
- VB Script
- JavaScript
- Perl Script
- PHP
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.
3. Hoe weet ik of mijn provider ASP ondersteunt?
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:
4. Kan ik mijn ASP-pagina's ook lokaal bekijken?
Ja, dat kan.
ASP wordt uitgevoerd door het webserver programma. Er zijn op dit moment
2 webserver programma's die ASP kunnen uitvoeren:
- Microsoft Internet Information Server (IIS) voor Windows NT ( meer info)
- Microsoft Personal Web Server (PWS) voor Windows 95 en Windows 98(meer info)
5. Wat is beter? DSN of DSN-less?
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:
-
Gebruik maken van een DSN. Gebruik maken van een DSN
komt er op neer dat u (of uw provider) de database op de server bekend
maakt onder een bepaalde naam. Vanuit alle ASP documenten is de database
onder die naam bereikbaar. Dit wordt gerealiseerd binnen het control
panel van windows onder ODBC Data Sources.
Groot voordeel van de methode is dat bij het wijzigen (type of bestandsnaam) van de database niet alle ASP documenten hoeven te worden aangepast. De database blijft immers gewoon onder zijn DSN naam op de server bekend! -
DSN-less. De DSN-less methode wordt vaak gebruikt
bij experimenten en tijdelijke pagina's.
Het is erg eenvoudig om de te gebruiken database te wisselen. Het verschil is dat met DSN-Less de connectionstring in de code gewijzigd moet worden als er van een andere database gebruik gaat worden gemaakt of als de database op een andere locatie (subfolder) komt te staan.
Zie ook: 9. Hoe kan ik verbinding maken met een database?
Voor zover bekend zijn er geen verschillen in performance tussen deze beide mogelijkheden.
6. Hoe kan ik variabelen gebruiken in een SQL query?
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 & "'"
7. Hoe kan ik controleren of een waarde in de tabel voorkomt?
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
8. Kan ik client-side JavaScript combineren met server-side ASP (VB) script?
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.
9. Hoe kan ik verbinding maken met een database?
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.
Verbinding maken met een database via een DSN:
' 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"
DSN-less verbinding maken:
conn.Open 'driver={Microsoft Access Driver (*.mdb)};
dbq=c:\inetpub\aspsamp\northwind.mdb'
10. Hoe kan ik door een recordset heen 'wandelen'?
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
11. Hoe kan ik een variabele in meerdere ASP pagina's gebruiken, zonder hem telkens mee te geven?
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."
12. Hoe kan ik een ASP pagina redirecten naar een andere pagina?
Gebruik response.redirect "bestandsnaam.asp".
13. Het ASP document had ik in 'schone source' geschreven. De HTML output is een rommeltje.
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
14. Links naar verschillende tutorials en voorbeelden
http://www.4GuysFromRolla.com
[ When you think ASP, think...]
http://www.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 ]
