nl.internet.www.ontwerp

Active Server Pages FAQ

Inhoud

  1. Wat is ASP?
  2. Is ASP een programmeertaal?
  3. Hoe weet ik of mijn provider ASP ondersteunt?
  4. Kan ik mijn ASP-pagina's ook lokaal bekijken?
  5. Wat is beter? DSN of DSN-less?
  6. Hoe kan ik variabelen gebruiken in een SQL query?
  7. Hoe kan ik controleren of een waarde in de tabel voorkomt?
  8. Kan ik client-side JavaScript combineren met server-side ASP (VB) script?
  9. Hoe kan ik verbinding maken met een database?
  10. Hoe kan ik door een recordset heen 'wandelen'?
  11. Hoe kan ik een variabele in meerdere ASP pagina's gebruiken, zonder hem telkens mee te geven?
  12. Hoe kan ik een ASP pagina redirecten naar een andere pagina?
  13. Het ASP document had ik in 'schone source' geschreven. De HTML output is een rommeltje.
  14. 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.

top

2. Is ASP een programmeertaal?

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.

top

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:

top

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:

top

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:

  1. 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!
  2. 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.

top

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 & "'"

top

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

top

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.

top

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'

top

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

top

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."

top

12. Hoe kan ik een ASP pagina redirecten naar een andere pagina?

Gebruik response.redirect "bestandsnaam.asp".

top

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

top

14. Links naar verschillende tutorials en voorbeelden

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 ]

top

Bijdrage van Gertjan van Laar, aangepast door Melle Koning

Laatste wijziging: 14 juni 2002

© 2002 Het NIWO-FAQ Team