NLDelphi logo

Apada
Start Forum Nieuws Artikelen Links E mail Statistieken

WebDelphi: Introductie

Geplaatst door Marcel op 04-04-03

Marcel 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.wpe2A.gif (9849 bytes)
  • 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

OmniHTTPd personal webserver Omnicron Technologies Corporation

Je kunt de schrijver van dit artikel helpen door het artikel een cijfer en een nivo te geven. De schrijver kan deze informatie wellicht weer in één van de volgende artikelen gebruiken en andere lezers kunnen door het stemmen meteen een eerste indruk krijgen van dit artikel. Je kunt je stem uitbrengen door lid te worden van de NLDelphi community. Je kunt je hier aanmelden.
Uitgebrachte stemmen
Aantal stemmen: 20
Gemiddeld cijfer (1-5): 4.4
Gemiddeld nivo (1-3): 1.3

Alle artikelen in de categorie WebDelphi
Alle artikelen van Marcel
Alle artikelen

Copyright © 2007 NLDelphi.com
ml>