| af Martin Elsman og Niels Hallenberg | sidst rettet 15. februar, 2002 |
Ved graduerigen lægges der bl.a. vægt på:
Servicen skal gøres tilgængelig fra din web-server på hug.it.edu, som
http://hug.it.edu:8013/oevelse3/temperatur.html, hvor 8013
udskiftes med dit port nummer (se deltagerlisten
på kursets hjemmeside). Filen temperatur.html kan
indeholde følgende HTML kode:
<form method=post action=temp.tcl> Angiv temperaturen i grader Fahrenheit <input type=text name=tempf size=7> <input type=submit> </form>Programmet som beregner temperaturen i grader Celcius udfra temperaturen i grader Fahrenheit, og som returnerer en passende HTML-side (ved brug af proceduren
ns_return), placeres i filen /web/login/www/oevelse3/temp.tcl på hug.it.edu. (Filnavnet
skal være identisk med action værdien angivet i filen
temperatur.html.) Filen
/web/login/www/oevelse3/temp.tcl kan have følgende format:
# set the form variables, in this case the variable `tempf' set_form_variables # Procedure for converting temperature in degrees Fahrenheit # to temperature in degrees Celcius (Indsæt proceduren fra Opgave F her) # Compute the temperature in degrees Celcius from the variable `tempf', # which is set by the form-page. set tempc [tempf_to_tempc $tempf] ns_return 200 text/html "<html> <head> <title>Temperaturservice</title> </head> <body> <h2>Temperaturservice</h2> Temperatur i grader Fahrenheit: $tempf <p> Temperatur i grader Celcius: $tempc </body> </html>"Proceduren
set_form_variables, som kaldes i
starten af temp.tcl programmet, sørger for at variablen
med navn tempf i form-siden kan tilgås efterfølgende i
Tcl programmet. Det er således værdien i tempf
form-feltet, som overføres til proceduren tempf_to_tempc,
når denne kaldes i Tcl programmet.
Udvid servicen til at undersøge om brugeren virkelig har indtastet
nogle tegn i form-feltet (hint: prøv f.eks. med string
compare).
Indsæt et link fra den genererede side tilbage til
temperatur.html siden. (Når du indsætter links i Tcl-kode
skal du huske at quotes (") skal skrives \"). Indsæt også et link fra
din index.html side på hug.it.edu til temperaturservicen.
De to skærmbilleder kan f.eks. se således ud:
![]() |
![]() |
multabel4 fra øvelse 2, opgave D til at generere en
multiplikationstabel for det indtastede tal. Servicen skal være tilgængelig som
http://hug.it.edu:8013/oevelse3/multabel.htmlhvor 8013 udskiftes med dit portnummer. På hug.it.edu skal du altså have en fil
/web/login/www/oevelse3/multabel.html med et form-felt
til indtastning af et tal. Yderligere skal du konstruere en Tcl-fil
(/web/login/www/oevelse3/multabel.tcl), som når den læses
af web-serveren, returnerer (med ns_return) en HTML-side
indeholdende en multiplikationstabel for det indtastede tal.
Indsæt et link fra din
index.html side på hug.it.edu til
multiplikationstabelservicen.
De to skærmbilleder kan f.eks. se således ud:
![]() |
![]() |
aeblegroed, som tager som argument et tal som
angiver hvor mange personer der skal laves æblegrød til. Proceduren
skal returnere (med return) en HTML side indeholdende en
æblegrødsopskrift til det pågældende antal mennesker:
proc aeblegroed { antal_personer } {
set page "<html>\n"
...
append page "</html>\n"
return $page
}
Her er en æblegrødsopskrift passende til en person:
| Ingredienser | Fremgangsmåde |
|---|---|
| Æblerne koges og moses sammen med sukkeret, vandet og vanillen. |
Det er altså din opgave at skrive proceduren aeblegroed
færdig, således at proceduren returnerer en opskrift for det antal
personer du kalder proceduren med (formen på opskriften er ikke
vigtig!) Her er et eksempel på et kald af proceduren fra Tcl-konsollen:
% aeblegroed 12
<html>
...
<table border=1>
<tr><th align=center>Ingredienser</th><th>Fremgangsmåde</th></tr>
<tr><td>
<ul><li> 24 æbler
<li> 12 spsk sukker
...
</ul></td>...
</table>
...
<html>
Gem proceduren i filen
/web/login/www/oevelse3/procaeblegroed.tcl på hug.it.edu.
aeblegroed fra opgave C
til at konstruere en web-service, hvor brugeren indtaster et tal i et
form-felt og får serveret en æblegrødsopskrift for det indtastede antal
personer.Servicen skal være tilgængelig som
http://hug.it.edu:8013/oevelse3/aeblegroed.htmlhvor 8013 udskiftes med dit portnummer. På hug.it.edu skal du altså have en fil
/web/login/www/oevelse3/aeblegroed.html indeholdende en
HTML-form til indtastning af det antal personer, som der skal laves
æblegrød til. Tilføj Tcl-kode til filen
/web/login/www/oevelse3/aeblegroed.tcl på hug.it.edu således at når filen læses af
web-serveren returneres (med ns_return) en HTML-side
indeholdende en æblegrødsopskrift for det indtastede antal
personer.
Indsæt et link til servicen
fra din index.html side på hug.it.edu.
De to skærmbilleder kan f.eks. se således ud:
![]() |
![]() |
ns_sendmail. Du kan således lave web-services som
sender emails til dig eller andre. På sin simple form tager kommandoen
ns_sendmail fire argumenter:
ns_sendmail to from subject bodyDet første argument skal indeholde modtagerens email-adresse, det andet argument skal indeholde afsenderens email-adresse. For at kommandoen ikke skal fejle er det vigtigt at de to første argumenter er på formen name@domain. De to sidste argumenter er strenge, som skal indeholde henholdsvis beskedens emne (subject) og den egentlige besked.
Konstruer en web-service med ns_sendmail kommandoen, hvor
en bruger af din service kan sende dig en email. Det skal være muligt
for brugeren at indtaste sin egen email-adresse, emne og besked. Servicen
skal være tilgængelig som
http://hug.it.edu:8013/oevelse3/send-mig-mail.htmlhvor 8013 udskiftes med dit portnummer. På hug.it.edu skal du altså have en fil
/web/login/www/oevelse3/send-mig-mail.html indeholdende
HTML-forms til indtastning af afsenderens email-adresse, emne og
besked. Yderligere skal du konstruere en Tcl-fil
(/web/login/www/oevelse3/send-mig-mail.tcl), som når den
læses af web-serveren, sender en email med ns_sendmail
kommandoen og returnerer (med ns_return) en HTML-side
indeholdende en passende ``Tak for din mail'' besked.
Indsæt et link til servicen fra din index.html side på hug.it.edu.
Dit skærmbillede kan f.eks. se således ud:
![]() |