F10 Webbteknologier. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

Relevanta dokument
F8 Webbteknologier 2. PHP PHP: Hypertext Preprocessor

F8 Webbteknologier 2. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

F8 Webbteknologier 1. Dynamiska webbsidor

F10 Webbteknologier. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

F10 Webbteknologier. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

F9 Webbteknologier 1. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

Dynamiska webbsidor. F10 Webbteknologier EDA095 Nätverksprogrammering. Serversidan eller klientsidan? Common Gateway Interface

Karlstads Universitet, Datavetenskap 1

Introduk+on +ll programmering i JavaScript

PHP. Dynamiska webbsidor

JAVASCRIPT. Beteende

PHP. TNMK30 - Elektronisk publicering

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

E12 "Evil is going on"

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Tentamen Nätverksprogrammering Lösningsförslag

Arrayer. results

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Webbsidor och webbservrar

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Objektorienterad programmering i Java

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Servlets y JSP Fernando Berzal,

Webbprogrammering. Sahand Sadjadee

E13 "Behind the Wild"

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Avancerade Webbteknologier

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Typkonvertering. Java versus C

Webbservrar, severskript & webbproduktion

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 2, vecka 8: Repetition

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Tentamen Nätverksprogrammering Lösningsförslag

Föreläsning 6: Metoder och fält (arrays)

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

ASP.NET Thomas Mejtoft

Uniform Resource Locator (URL) JavaServer Pages - JSP. Webbklienter. Webbserver. Hypertext Transfer Protocol (HTTP) HTTP Request

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Classes och Interfaces, Objects och References, Initialization

Att skriva till och läsa från terminalfönstret

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Lite mer om CGI-programmering

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Programmering för språkteknologer II, HT2014. Rum

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

E13 Behind the Wild. Dagens agenda. Cookies Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Namespaces Postludium

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Tentamen Nätverksprogrammering Lösningsförslag

Introduktion till PHP

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Introduktion HTML och PHP 732G16 Databaser design och programmering

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Innehåll. JavaScript - Grundkurs. Vad är JavaScript? Vad är JavaScript? Vad behövs? Lite historia

Objektorienterad Programmering (TDDC77)

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Matematisk Modellering

Föreläsning 5-6 Innehåll

SMD 134 Objektorienterad programmering

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Föreläsning REPETITION & EXTENTA

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

! HTML Formulär! JavaScript! Syntax! Events! DOM. ! URL variabler i en query string (get) ! HTTP post request (post)

Transkript:

F10 Webbteknologier EDA095 Nätverksprogrammering Roger Henriksson Datavetenskap Lunds universitet

Dynamiska webbsidor HTML är statisk. En sida får sitt utseende bestämt när en webbdesigner skapar den. Ofta vill man ha mera dynamiska webbsidor: Svar på en databasförfrågan. Konstant uppdaterade webbsidor. Dialog med användaren. Animeringar. Kontroll av inmatad information i ett formulär. 2

Serversidan eller klientsidan? Klientsidan JavaScript Flash Serversidan CGI CommonGateway Interface JSP (Java Server Pages) och Servlets ASP Active Server Pages PHP PHP:Hypertext Preprocessor Varför inte en helt specialskriven webbserver? 3

Common Gateway Interface 1. När webbservern får en begäran om en webbsida med en särskild URL startar servern ett externt program ett CGI-skript. 2. Det externa programmet läser in eventuella parametrar i form av en query string antingen via standard input eller s.k. environmentvariabler. 3. Programmet genererar en HTML-sida baserat på parametrarna och skriver HTML-koden till standard output. 4. Programmet avslutas. 4

HTML och formulär <html> <head><title>form example</title></head> <body> <form method="get" action="/cgi-bin/storeaddress.pl"> Your name: <input name="name" type="text" size=40> <br> Your e-mail: <input name="email" type="text" size=20> <br> <input type="submit"> </form> </body> </html> 5

HTTP-förfrågan Föregående exempel genererar en TCP-uppkoppling till servern och en HTTP-förfrågan sänds: GET /cgi-bin/storeaddress.pl?name=roger+henriks son&email=roger%40cs.lth.se HTTP 1.0 1. Servern startar skriptet storeaddress.pl. 2. Frågesträngen ( query string ) överförs via en environment-variabel. 6

POST istället för GET POST /cgi-bin/storeaddress.pl HTTP 1.0 Content-type: application/x-www-form-urlencoded Content-length: 49 name=roger+henriksson&email=roger%40cs.lth.se Begäran består av ett huvud (avslutat med dubbla radslut (CR+LF+CR+LF) och en frågesträng. CGI-skriptet läser frågesträngen via standard input. Lämpligt för stora datamängder. Frågesträngen syns ej i URL:en. 7

Svar CGI-skriptet skriver till standard output: 1. MIME-typ, typiskt Content-type: text/html. 2. Blankrad 3. HTML-kod för den genererade sidan. Exempel Content-type: text/html <html> <head><title>registration completed</title></head> <body> <h1>registration completed</h1> Roger Henriksson (roger@cs.lth.se) has been added to the database. </body> </html> 8

CGI Exempel Implementera en CGI-baserad webbtjänst för temperaturmätning. DEMO 9

CGI: fördelar och nackdelar Fördelar Möjlighet att välja mellan många olika implementationsspråk. Väl beprövat och allmänt tillgängligt. Nackdelar Ineffektivt: startar en ny operativsystemprocess för varje HTTP-begäran. Måste avkoda frågesträngen själv. Besvärligt att bevara tillstånd måste spara på disk. 10

Servlets Servlet? Applet - liten applikation, Servlet - liten server Som CGI, fast: Skrivna i Java. Systemoberoende. Skapar inte ny operativsystemsprocess varje gång. Effektivare Startar inte om för varje HTTP-begäran. Kan komma ihåg information från gång till gång. 11

En servlets liv En servlets liv Servern laddar in servleten. Servern väljer ett servletobjekt och anropar dess service()-metod. Ett eller flera servletobjekt skapas av servern. Service()-metoden behandlar begäran och genererar en HTML-sida åt klienten. Servern anropar init()- metoden i varje objekt. Servleten väntar på nästa begäran eller på att servern stoppar servleten. Ett HTTP-kommando mottas av servern. Servern stoppar servleten och anropar dess destroy()- metod. 12

Klassöversikt Paket import javax.servlet.*; // Standard i J2EE import javax.servlet.http.*; // Standard i J2EE import java.io.*; Klasser/interface HttpServlet superklass för webbservlets. HttpServletRequest klientens HTTP-begäran. HttpServletResponse servletens svar till klienten. ServletConfig information om servern. 13

HttpServlet Ett servletobjekt skapas av webbservern. Initialisering Implementera en av nedanstående: public void init(servletconfig config) throws ServletException; public void init(); Terminering public void destroy(); Implementera denna för att till exempel stänga databasuppkopplingar/stänga öppna filer när servleten avslutas av servern. 14

service() När servern tar emot ett HTTP-kommando anropas: protected void service(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException; Denna kan implementeras för att behandla en begäran från klienten. request information om klientens begäran response används för att skicka svar till klienten. Ofta vill vi göra olika saker beroende på typ av begäran: if (request.getmethod().equals("get")) {... } else { if (request.getmethod().equals("post")) {... 15

Alternativ till service() Standardimplementationen av service() undersöker vilken typ av kommando klienten skickade (GET/POST/HEAD etc) och anropar en av: protected void doget(httpservlerrequest request, HttpServletResponse response) throws ServletException,IOException; protected void dopost(httpservlerrequest request, HttpServletResponse response) throws ServletException,IOException; Likadant för: dohead doput dodelete 16

HttpServletRequest Information om klientens begäran. Metoder public String getparameter(string name); Returnerar värdet för angiven parameter, t.ex. innehållet i ett textfält i ett HTMLformulär. public String getremoteaddr(); public String getremotehost(); IP-nummer / namn på klientdatorn. public String getmethod(); Typ av begäran (GET, POST, etc.). Med flera... 17

HttpServletResponse Används för att skicka svar till klienten. 1. Ange MIME-typen för svaret: response.setcontenttype("text/html"); 2. HTML-koden skickas genom en ström: PrintWriter output = response.getwriter(); 3. Skriv HTML-koden till strömmen. 4. Stäng strömmen: output.close(); 18

Tillståndsinformation Kommunikationen mellan klient och webbserver är ofta en dialog - jmf en webbshop. Servern måste hålla reda på vad som hänt under dialogen, dvs hålla reda på ett tillstånd. Tillstånd kan lagras i servleten, men: Vi måste kunna skilja på olika klienter Gömda fält i formulär <input type= hidden name= number value= 42 > Cookies HttpSession 19

Klassen Cookie Namn/värdepar som lagras på klienten. Paket import javax.servlet.http.*; Konstruktor public Cookie(String name, String value); Metoder public String getname(); public String getvalue(); Med flera... 20

Skriva/läsa cookies Metoder i klasserna HttpServletRequest/HttpServletResponse. HttpServletRequest public Cookie[] getcookies(); Returnerar en vektor med samtliga cookies från denna webbplats. HttpServletResponse public void addcookie(cookie cookie); Skriver ner en ny cookie eller ny version av en gammal cookie till klienten. DEMO CookieGuess 21

JSP Java Server Pages Idé Programkoden i HTML-koden istället för HTML-koden i programkoden. Implementation En JSP-fil (.jsp) är en HTML-fil med några extra element i. JSP-elementen ( tags ) anger var dynamisk HTML-kod ska infogas i dokumentet och hur den ska genereras. När en klient begär JSP-filen tolkas innehållet av servern och görs automatiskt om till en servlet första gången. 22

Översättning av JSP-fil 2. Läs fil hello.jsp 1. GET /hello.jsp 6. <html> Hello </html> 3. Generera 5. Exekvera helloservlet. java 4. Kompilera helloservlet. class 23

JSP Tags Direktiv Anvisningar för översättningen till servlet. "<%@... %>" Deklarationer Deklarationer av attribut motsvarande servletattribut. "<%... %>" Uttryck Anger javauttryck vars värde stoppas in på sidan. "<%=... %>" Scriptlets Block av javakod som exekveras när JSP-sidan anropas. "<%... %>" Kommentarer "<%--... -- %>" 24

JSP Direktiv Styr översättningen till en servlet. "page" Styr servletens struktur: Importerar externa klasser, ändrar "content type", ändrar servletens superklass. Exempel: <%@ page import="java.util.*" %> <%@ page contenttype="text/plain" %> "include" Inkluderar andra JSP-filer vid översättningen. Exempel: <%@ include file="filetoinclude.jsp" %> 25

JSP Deklarationer Används för att deklarera variabler som sedan kan användas i uttryck och i "scriptlets". Motsvarar attributen i en servletklass. Exempel: <% int counter = 0; %> <% Date today = new Date(); %> Flera deklarationer kan samlas: <% int counter = 0; Date today = new Date(); %> 26

JSP Uttryck Används för att stoppa in resultatet av en beräkning eller annat uttryck i HTML-koden. Exempel: <%= counter %> <%= today.tostring() %> Pris (inkl. moms): <%= pris*1.25 %> kronor. Kan innehålla godtyckliga javauttryck. 27

JSP Scriptlets Anger Javakod som ska exekveras när sidan hämtas. Exempel: <% total = 0.0; for(int i=0;i<myarray.length;i++) { total = total+myarray[i]; } %> Average: <%= total/myarray.length %> 28

JSP Implicita objekt Ett antal standardobjekt finns alltid tillgängliga utan explicit deklaration. request HTTP-begäran från klienten. response HTTP-svaret till klienten. session HTTPSession-objekt associerat till den aktuella användaren/sessionen. application out Refererar till "globala" objekt som ska delas mellan alla sessioner, t.ex. databasanslutning. Objekt som används för att skriva till den utgående svarsströmmen (till klienten). Med flera... 29

JSP Exempel DEMO guessinggame.jsp 30

PHP PHP: Hypertext Preprocessor Skriptspråk särskilt lämpligt för webbapplikationer. Öppen, gratis, programvara. HTML-kod med PHP-taggar inlagda där dynamiskt beteende behövs (jämför JSP). Vanlig och mycket spridd teknik: CMS Content Management Systems (ex LTH). Wiki Många wikiimplementationer i PHP. Webbkopplingar till databassystem, t.ex. webbshopgränssnitt. URL: www.php.net 31

Struktur/taggar HTML-kod med PHP-taggar insprängda. <?php...?> All text utanför PHP-taggarna skickas oförändrad till klienten. Filändelse:.php 32

Datatyper Dynamiska typer, ingen variabeldeklaration behövs. boolean Sant/falskt. integer Heltal. float Flyttal. string Strängar. array Vektorer. object Objekt. resource Referens till externa resurser, t.ex. filer. NULL Tomt värde. Variabler inleds med $, exempel: $value. 33

Språkkonstruktioner Några språkkonstruktioner: $a = $b*3; // Tilldelning, uttryck echo Svar:.$a. \n ; // Utskrift, strängkonkatenering if ($a==0) {... } else {... } // If-sats for($i=0;$i<10;$i++) {... } // For-sats 34

Vektorer Vektorer är associativa (Egentligen en ordered map.) Index kan vara av godtycklig typ. $arr = array(); // Tom array $arr[ roger ] = duktig ; $arr[2] = 45; $arr[] = NP ; // Index: högsta numeriska // index + 1 Iterator över vektorn: foreach($arr as $key => $value) { } echo $key. :.$value. \n ; 35

Funktioner <?php function sum($arg_1, $arg_2, $arg_3) { } echo Example function\n. $retval = $arg_1+$arg_2+$arg_3; return $retval;?> Summan är: <?php echo sum(2,5,8);?> 36

Biblioteksfunktioner Stor mängd inbyggda biblioteksfunktioner. Betoning på webbrelaterade uppgifter. Med mera... Audio Autentisering Datum/tid Komprimering Kreditkortsbetalningar Filhantering Teckenkodning Stränghantering Bildmanipulering Mail Matematik Nätverk Kryptering Databaser (SQL) Processhantering 37

Koppling till webbservern Request Parametrar accessas genom superglobala variabler, t.ex: $_GET Parametrar vid GET-anrop. Vektor. $_PUT Parametrar vid PUT-anrop. Vektor. $_COOKIE Cookies. Vektor. Response HTML-kod skrivs till standard output. Cookies: setcookie(...); 38

En elektronisk shoppinglista Fallstudie: Implementera en webbaserad tjänst för att hantera en familjs gemensamma shoppinglista. Lista över dagligvaror som saknas i hemmet. Enkel inläggning av varor från Internetanslutna enheter. Stöd både för att skapa listan och vid shoppingtillfället. DEMO shoppinglist.php 39

Design Lagring Textfil med en rad per artikel. Webbsida Formulär med: Checkbox för varje artikel. Textinmatningsfält för ny artikel Implementation PHP-skript: 1. Läs in artiklar från fil. 2. Om checkbox ikryssad: tag bort motsvarande artikel. 3. Om textinmatningsfält ifyllt: lägg till artikel. 4. Om ändringar gjorts: spara artiklar på fil. 5. Skapa nytt formulär med aktuella artiklar. 40

JavaScript Skriptspråk för webbläsare Syntax som påminner lite om Java. I övrigt har JavaScript och java inget med varandra att göra. Historia Skapat av netscape. Ursprungligen kallat LiveScript. Fick namnet JavaScript i Netscape 2.0. Microsofts variant, JScript, nästan kompatibelt. 41

Vad kan JavaScript göra? JavaScript kan t.ex: Göra beräkningar på tal och strängar. Modifiera utseende och innehåll i ett webbläsarfönster. Skapa nya fönster och ladda in nya sidor. Manipulera HTML-element på en webbsida, t.ex. innehåll i ett formulär. JavaScript kan inte: Kommunicera direkt via nätverket (via UDP/TCP). Använda filsystemet. 42

JavaScript och webbsidor JavaScript kan läggas in som en del av HTML-koden för en webbsida. JavaScript kan antingen fås att exekvera när webbsidan laddas, eller när någon speciell händelse inträffar. JavaScript vid laddning av en webbsida Skriptet körs i samband med att webbsidan ritas upp. Utdata från skriptet kompletterar den övriga HTML- koden före uppritning. Händelsestyrda JavaScript Skriptet körs när en viss händelse inträffar, t.ex. att användaren klickar i webbläsarfönstret. Kan påverka webbläsarfönster eller någon HTML-komponent. 43

<script>-tagen HTML-kod för att definiera ett JavaScript Syntax: <script>... </script> eller <script language="javascript">... </script> Generell HTML-tag för skript oavsett skriptspråk. JavaScript är oftast standardskriptspråk. Andra möjligheter: VBScript. 44

Hello, world <html> <head><title>helloworldscript</title></head> <body> <h1>a greeting from our JavaScript:</h1> <script language="javascript"> document.write("hello, World"); </script> </body> </html> 45

Datatyper Variabeldeklaration dynamiska typer var name; Typer tal sträng boolean undefined null Numeriska tal, både heltal och flyttal. Texter ungefär som i Java. Sant eller falskt. Värde oinitialiserade variabler har. Tomt värde. Dessutom finns vektorer och objekt. 46

Några satskonstruktioner Tilldelning a = a + 3; If-sats if (a>b) { document.writeln("tal A är störst"); } else { document.writeln("tal A är INTE störst"); } For-sats for(i=1;i<=10;i++) { document.writeln(i+" "+i*i); } Väldigt likt Java 47

Funktioner Precis som man kan definiera metoder i Java kan man definiera funktioner i JavaScript. <script language="javascript"> function printsquare(x) { document.writeln(x+" "+x*x+"<br>"); } var i; for(i=1;i<=30;i++) { printsquare(i); } </script> Kan till exempel användas för att beskriva vad som ska hända när någon viss händelse inträffar. 48

Standardobjekt För att påverka omvärlden, t.ex. webbläsarfönstret, används olika s.k. standardobjekt. Exempel: navigator window document Standardklasser Date, Math, Array. Tillhandahåller information om webbläsaren. Funktionalitet för att öppna/påverka fönster. Motsvarar HTML-dokumentet i webbläsaren och ger tillgång till alla HTML-komponenter i detta, t.ex. formulär. 49

Formulär och JavaScript JavaScript är bland annat bra för att behandla inmatade data i ett HTML-formulär. Låt användaren fylla i ett värde samt anropa sedan JavaScript-funktionen "compute()": <form name="inputform"> <input name="field" type="text"> <input type="button" value="enter" onclick="compute()"> </form> Ett JavaScript kan nå fälten i formuläret via "document"- objektet: var uservalue; uservalue = document.inputform.field.value; DEMO - Gissa talet (game.html) 50

Ajax Asynchronous JavaScript and XML Samling av relaterade tekniker för interaktiv webb. Förbättrar svarstider genom att HTML-sidor genereras lokalt mha JavaScript istället för på servern. Endast små datamängder överförs. Data/skript överförs asynkront i bakgrunden. Bygger på JavaScript och (ofta, men inte alltid) XML för överföring av data till/från servern. Sidans struktur kan manipuleras dynamiskt. Exempel: Sidor med sökresultat. Endast själva sökresultatet behöver överföras/genereras och bytas ut på sidan. 51