WebDelphi: IntroductieGeplaatst door Marcel op 04-04-03Marcel van Beuzekom
Met Delphi Enterprise is het mogelijk om web applicaties te maken. Zo'n
web applicatie (CGI applicatie) maakt HTML bestanden aan en stuurt deze, via een
web server, naar de browser. Omdat alle acties via een applicatie gaan is alle
data echt actief. Dit artikel legt uit hoe je je eigen web applicatie
kunt maken.
Het begin: de webserver
Als eerste heb je een webserver nodig om je web applicatie op te testen. Al
zal je web applicatie straks misschien op het intra- of internet gebruikt
worden, je kunt het beste eerst zorgen dat je alles lokaal hebt getest. Hiervoor
heb je een personal webserver nodig: een server die je lokaal op je eigen PC
draait. Een goede en kleine webserver is OmniHTTPd, in de voorbeelden zal ik
deze server gebruiken, maar als je al een server hebt geïnstalleerd kun je deze
uiteraard ook gebruiken.
In je server moet je instellen dat je een bepaalde directory als CGI directory
gaat gebruiken. Doe je dit niet, dan zal de browser straks gaan proberen om je
web applicatie te downloaden in plaats van hem uit te voeren. In Omni doe je dit
als volgt:
- Start OmniHTTPd Administration vanuit het startmenu.

- Ga naar Default virtual settings / Standard CGI
- Als het goed is staat hier al een alias in de vorm: /CGI-BIN E:\PROGRAM FILES\HTTPD\CGI-BIN.
Als dat niet het geval is kun je deze toevoegen.
Je webserver is gereed, zorg nu dat deze is opgestart.
De web applicatie
Start nu Delphi op en maak een nieuwe web applicatie door te kiezen voor File
/ New / Web server application. Vervolgens vraagt Delphi welk type
applicatie je wilt maken. De verschillen kom ik later op terug, voorlopig kiezen
we voor een CGI standalone executable. Er wordt een nieuw project aangemaakt met
een WebModule. De WebModule is een DataModule, maar dan één met kennis van web
applicaties. Dit is de plaats waar de aanvragen van de browser via de webserver
binnenkomen en de antwoorden worden verstuurt. Sla je project (WebDelphi) en je
datamodule (MainModuleU) op.
Actions
Een web applicatie moet verschillende aanvragen kunnen verwerken. Een
voorbeeld van zo'n aanvraag is: 'log in met de naam Marcel en wachtwoord
Welkom', of 'geef een lijst van Delphi websites'. Die verschillende aanvragen
verlopen via Actions, vergelijkbaar met de TActions die we van 'gewoon Delphi'
al kennen. Om zo'n Action aan te maken klik je rechts op de WebModule en kies je
voor Action Editor. De Action Editor kennen we van veel properties binnen
Delphi. Hij geeft ons een overzicht van de gedefinieerde Actions en we kunnen
Actions toevoegen of wijzigen.
Bij een Action kunnen we de volgende properties instellen:
- Default. Als we een gewoon webadres intikken hoeven we niet altijd
het document in het adres te gebruiken, [url]www.Borland.com[/url]
is bijvoorbeeld hetzelfde als [url]www.Borland.com/index.html[/url]
omdat index.html het default document is. Dit werkt bij Actions hetzelfde:
als er geen path wordt gegeven wordt de default Action gebruikt.
- Enabled. Kan de Action worden gebruikt
- MethodType. De verschillende types zal ik later uitleggen
- PathInfo. Het path dat wordt gebruikt om de Action uit te voeren
- Producer. Verwijzing naar een component dat de data voor ons
genereert.
- OnAction. Het event dat wordt uitgevoerd om de data te genereren
Voeg nu een nieuw Action toe en zet Default op True. Maak vervolgens een
OnAction event aan en zet hierin de volgende regel:
Response.Content := 'Waauw, mijn eerste CGI applicatie!!!';
Voordat je nu je web applicatie kunt compileren moet je nog instellen waar je
executable moet worden aangemaakt. Ga hiervoor naar Project / Options /
Directories en vul bij Output directory de directory in die je eerder als
CGI-BIN directory had ingesteld op de server. Compileer nu je project, start je
webbrowser en ga naar het adres:
[url]http://localhost/cgi-bin/webdelphi.exe[/url]
localhost is een verwijzing naar je eigen computer, cgi-bin is
de alias die je hebt aangemaakt om naar je echte directory te verwijzen en webdelphi.exe
is de CGI applicatie die je hebt aangemaakt. Als alles goed is gegaan ziet het
er als volgt uit:

Als je een foutmelding van je browser krijgt dat localhost niet gevonden is
kun je localhost vervangen voor 127.0.0.1, het standaard IP adres voor je lokale
webserver.
Tekst formatteren
De tekst die wordt geretourneerd in het event wordt rechtstreeks in de
browser weergegeven. In het eerste voorbeeld was de browser slim genoeg om de
tekst te laten zien, ondanks het feit dat de tekst niet voldeed aan enige HTML
standaard. Maak nu een tweede Action aan en vul bij de path info '/Link' in. In
het OnAction event komt de volgende regel:
Response.Content := '<a href="[url]http://www.NLDelphi.com">Delphi[/url] pagina</a>';
Ga nu in je browser naar het volgende adres:
[url]http://localhost/cgi-bin/webdelphi.exe/link[/url]
Door het /link gedeelte toe te voegen roepen we onze tweede Action aan. Het
begint al op een HTML pagina te lijken, de code is inderdaad vertaald naar een
link. Een pagina moet echter altijd uit een header en een body sectie bestaan.
Deze moeten dus voor iedere Action worden toegevoegd.
Webmodule events
We hebben het OnAction event van de Actions gezien, maar ook de WebModule
heeft een aantal events. De bijzondere events voor een WebModule zijn BeforeDispatch
en AfterDispatch. BeforeDispatch zou bijvoorbeeld gebruikt kunnen
worden om te controleren of de gebruiker wel toegang heeft tot deze server.
Misschien moet de gebruiker eerst inloggen, of mag de server alleen vanaf
bepaalde domeinen benaderd worden.
De AfterDispatch gaan we in dit geval gebruiken om de pagina nog wat verder
op te maken. Plaats in het event de volgende code:
Response.Content := '<html><head><title>WebDelphi</title></head><body>' +
Response.Content +
'</body></html>';
Klik nu in je browser op 'Vernieuwen'. Je ziet geen verschil in de pagina,
maar als je via Beeld / Bron de HTML broncode bekijkt zie je dat de
nieuwe tags zijn toegevoegd.
Conclusie
In dit eerste artikel heb ik laten zien hoe je een web applicatie maakt met
behulp van Delphi en wat je moet doen om deze te testen op de personal web
server. In de volgende artikelen zal ik onder andere laten zien hoe je bestaande
HTML pagina's kunt combineren met actieve data uit je web applicatie.
Uiteindelijk zullen we uitkomen op een website die volledig door een Delphi
applicatie wordt gestuurd, uiteraard met live data vanuit een database.
Links
|