420 likes | 547 Views
The web programming environment. Webtechnologie. Lennart Herlaar. Inhoud. Markup, hypertext en HTML Browsers en servers HyperText Transfer Protocol URIs, headers, persistence Scripting en integratie. The web programming environment. Scripting en integratie. Webtechnologie.
E N D
The web programming environment Webtechnologie Lennart Herlaar
Inhoud • Markup, hypertext en HTML • Browsers en servers • HyperText Transfer Protocol • URIs, headers, persistence • Scripting en integratie
The web programming environment Scripting en integratie Webtechnologie Lennart Herlaar
Scripting • Scripts = korteprogrammaatjes, code snippets • Scripting maakt websites dynamisch • Volledigdynamischewebsite = webapplicatie • Zowelclient als server side mogelijk • In de regel minimaal server side • In het "Modern Web" tijdperkechternietmeervanzelfsprekend
Client side scripting • Client side scripts wordenuitgevoerd in de browser • Client side scripts zijnonderdeel van de opgevraagdepagina • "Actief" zolang de paginagetoondwordt <body> <h1>My First JavaScript</h1> <script type="text/javascript"> document.write("<p>" + Date() + "</p>"); </script> </body>
Client side scripting • In essentiegericht op het oplossen van tekortkomingenin protocol en presentatie! • Page based requests • Conditionele GUI, validatieinvoer, grafischeeffecten • Ontbreken van state • Fat clients, "desktop" applicaties in de browser • JavaScript (ECMAScript) • Maar… • Server side JavaScript
Server side scripting • Server side scripts wordenuitgevoerdop de webserver (of application server) • Erbestaanverschillendeintegratiemethoden • Veelalhet "one resource at a time" paradigma • Een request leidt tot de aanroep van een script • Het script genereert HTML (vaakeen form) en stopt • De invoervoor het script is een form • Het draaien van eenwebapplicatie is eenlange reeks script aanroepen
Scripting talen: gemenedeler • Geïnterpreteerd, of just-in-time compilatie • Geen (verplichte) declaraties • Dynamischgetypeerd • Goedevoorzieningenvoortekstmanipulatie • Reguliereexpressies • Veel libraries / modules beschikbaar • Buitengewoonflexibel, high level • Buitengewoongevaarlijk
Scripting talen • Belangrijkeeigenschapvoor het web • "Executable source code" • Voor server side is een scripting taalgeenvereiste • PHP, Python, Perl, Ruby • Maar ook Java, C#, C/C++, Pascal, … • Afhankelijk van de integratiemethode • En voor de client side (naast JavaScript)? • Java Applets, Flash, ActiveX en andereobjects
Architectuur diagram revisited HTTP request Execute Form, parameters Parameters, code Web browser Webserver Applicatie HTTP response Return HTML HTML File access DB access File SQL Result set Files RDBMS
POST versus GET • POST: form data in HTTP message body • GET: form data in URI (HTTP resource veld) • Query string (URL encoded) <form name="input" action="welcome.php" method="get"> First name: <input type="text" name="first" /><br /> Last name: <input type="text" name="last" /><br /> <input type="submit" value="Send" /> </form> http://…/welcome.php?first=Willie&last=Wartaal
1. Common Gateway Interface • Standaardvoor de aanroep van externeprogramma's via de webserver • Perl, Python, shell scripts, executables (C++, …) • Webserver start proces; geeft query string door • Via environment variabele (GET) • Via standaardinvoer (POST) • Procesgenereert headers en HTML • Op standaarduitvoer
1. Common Gateway Interface • Herkenbaaraanspecialecgi-bin directory • Enkele environment variabelen • QUERY_STRING (bij GET) • CONTENT_LENGTH (bij POST) • CONTENT_TYPE • REMOTE_ADDR • CGI is relatiefzwaarvoor de webserver • FastCGIhoudt het procesactief (state, anyone?) • CGI is eenbeetje old-skool
2. Inlining code in document • Code snippets die tussen de HTML code staan • Van bovennaaronderenuitgevoerd • De code snippets wordenvervangen door hunuitvoer • Geïmplementeerd in de vorm van webserver modules of CGI • Server Side Includes (SSI), PHP, ASP.NET, JSP
Server Side Includes • Voorloper van latere HTML embedded code • Preprocessing directives tussen de HTML code • Herkenbaaraanextensie (.shtml) of execbit • Ook old-skool <h1><!--#echo var="DATE_LOCAL" --></h1> <pre> <!--#exec cmd="ls" --> </pre> <p> Gewijzigd: <!--#flastmod file="index.html" --> </p>
PHP: Hypertext Preprocessor <html> <body> <p> <?php echo "HelloWorld"; ?><br/> <?php $d=date("D"); if($d==”Wed" || $d==”Fri") echo "Lecture time!"; ?> </p> </body> </html> <html> <body> <p> HelloWorld<br/> Lecturetime! </p> </body> </html>
2. Inlining code in document • Oorspronkelijkvoorkleinestukjes code • Dunne scheidslaagtussen code en structuur • Steeds in en uit context springen • De code wordtsnelonleesbaar • Modernereinsteek • Alle HTML gegenereerdvanuit de code • Templates voorvasteonderdelen • MVC frameworks waarbij de HTML paginanietveelmeer is daneenaanroep van een generate functie
3. Integratie in webserver • Uitbreiden van de functionaliteit van de server • Vaak in de vorm van specifieke classes die specifieke requests afhandelen • Java Servlets, JSP • javax.servlet en javax.servlet.http packages • JDBC voor database connectivity • Filters en filterchains • Java is eenbekendeserieuzeprogrammeertaal • Minder overhead in afhandeling request • Sterkeintegratiekangevaarlijkzijn
State revisited • Waarkunnen we state onderbrengen? • Query string /hidden input fields • Client side cookies • Client side scripts • Server side (database, file system, script) • Als web developer maak je hierinkeuzes • Eendeelervanblijft ping-pongen • Het blijft overhead en een security risico • Je blijftermeebezig… Later meerhierover!
Client side representation Webtechnologie Lennart Herlaar
Inhoud • Documentformaten • Het einde van het web • SGML, XML en HTML • XHTML en HTML5
Documentformaten • De mythe van het papierlozekantoor • > 260 miljoen prints per dag in Nederland • Merendeelgebruiktvoor transport • Papieralsgrootstegemenedeler • Paradigma shift noodzakelijk • Belang van standaarden • Open standaarden
Soorten markup revisited • Procedural markup versus descriptive markup • Presentatie versus structuur & semantiek • Toegankelijkheid: gebruikerbepaalt • Onderhoudbaarheid: descriptive is duurzaam • Verwerkbaarheid: indexering, eenduidigheid • Onontkoombaarheid: kun je zonder?
HTML puur? <html> <head> <title>Hello world</title> </head> <body> <h1>My First Heading</h1> <p>My <b>first</b> paragraph.</p> <p> Including a <a href="index.html">link</a> </p> </body> </html> <html> <head> <title>Hello world</title> </head> <body> <h1>My First Heading</h1> <p>My <b>first</b>paragraph.</p> <p> Including a <a href="index.html">link</a> </p> </body> </html>
Client side representation Het einde van het web Webtechnologie Lennart Herlaar
HTML puur! • '91: HTML Tags • '93: HTML Internet Draft, IETF • Gedefinieerdalstoepassing van SGML • <IMG> tag • Intentie was duidelijk "It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anythingwhich requires control over fonts or colors, for example. This is in keeping with the SGML ideal."
De ondergang van het web • Eenvasteverzameling tags is nooitvoldoende • Ongeachte de grootte van die verzameling • Auteurs willen exact bepalen hoe hundocumentengepresenteerdworden • Proliferatie van versies en "standaarden" • Gericht op presentatiei.p.v. structuur
The road to hell… • '93: HTML+ • Tables, forms • '95: HTML 3.0 • '95: HTML 2.0 (IETF) • Conflicten en commercie • Browser specific tags • '97: HTML 3.2 (W3C) • '98: HTML 4.0 (3 versies) • '99: HTML 4.01
Browser wars • Netscape was absolute marktleider • Microsoft mistebijna de Internet boot • Pas in 1995 gooide Bill Gates het roerom • Eenwapenwedloop was het gevolg • Nieuwe tags; nietaltijd supersets • Vergevingsgezindheid • Incompatibiliteit "by design" • Evenals chaos • Gebruikers die hiergebruik van maken… • Absolute positionering, vertrouwenop bugs
Browser wars <BLINK> ... At some point in the evening I mentioned that it was sad that Lynx was not going to be able to display many of the HTML extensions that we were proposing, I also pointed out that the only text style that Lynx could exploit given its environment was blinking text. We had a pretty good laugh at the thought of blinking text, and talked about blinking this and that and how absurd the whole thing would be. [...] Saturday morning rolled around and I headed into the office only to find what else but, blinking text. It was on the screen blinking in all its glory, and in the browser. How could this be, you might ask? It turns out that one of the engineers liked my idea so much that he left the bar sometime past midnight, returned to the office and implemented the blink tag overnight. He was still there in the morning and quite proud of it. - Lou Montulli
Client side representation SGML, XML en HTML Webtechnologie Lennart Herlaar
Een HTML document is een boom • HTML alstoepassing van SGML; hiërarchisch <html> <head> <title>…</title> </head> <body> <h1>…</h1> <p> <b>…</b> </p> <p> <a>…</a> </p> </body> </html> html head body title h1 p p b a
SGML • Standard Generalized Markup Language • ISO standaard, 1986 • Generalized • Metataalvoor markup talen • Document Type Definition noodzakelijk • Grote, complexestandaard • Toegepastbijgroteuitgevers, vliegtuigindustrie • Gerelateerd: DSSSL, HyTime • Tevroeg? Te complex?
W3C • Inzichtdat het nietvanzelfgoedzoukomen • World Wide Web Consortium • Opgericht door Tim Berners-Lee in 1994 • Breedgedragenindustriestandaarden • > 300 leden • Van Working Draft naar Recommendation • Veelstrikterdan het klinkt • Medeverantwoordelijkvoor de chaos • Maar ookvoor de wegomhoog
XML • SGML te complex • HTML een chaos; in de basis SGML • Eenvoudige SGML variant voorwebtoepassingen • eXtensibleML • "Formal and precise" • DTD nietverplicht • Nietalles in éénstandaard • W3C REC in 1998 Kick!
Document Type Definition <?xml version="1.0"?> <notes><note id="501"> <to>Yolanthe</to> <from>Wesley</from> <body>Vergeet je de melkniet?</body> </note> <note id="502"> <to>Wesley</to> <from>Yolanthe</from><body>Wat is melk in het Turks?</body> </note> <notes> <?xml version="1.0"?><!DOCTYPE note SYSTEM "note.dtd"> <notes><note id="501"> <to>Yolanthe</to> <from>Wesley</from> <body>Vergeet je de melkniet?</body> </note> <note id="502"> <to>Wesley</to> <from>Yolanthe</from><body>Wat is melk in het Turks?</body> </note> <notes> <!DOCTYPE note [ <!ELEMENT notes (note+)> <!ELEMENT note (to,from,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT body (#PCDATA)> <!ATTLIST note id ID #REQUIRED> ]>
XML • Hiërarchischestructuur (XML doc is een boom) • Elementenmakenstructuurexpliciet • Attributenbevatten metadata • Namenkunnenvrijgekozenworden • eXtensible, nietvastgelegd in XML (wel in DTD) • Alleenstructuur/semantiek, geenpresentatie • Uitwisselingstaal; zelfbeschrijvenddataformaat • Startpuntvoorveelgerelateerdestandaarden SGML Extensibility Structure Validation Precieswat we zochten? Precieswat we zochten! XML Simplicity HTML
Well formed versus valid XML • Well formed XML • XML syntactisch correct • Elementen: start tag, end tag • Empty elementen: <tag/> • Attributen: "="-tekenen aanhalingstekens • Eén top-element • Hiërarchie in orde; correct genesteelementen • Bepaalderegels voornaamgeving • Valid XML • Well formed XML en conform een DTD (of schema)
HTML 4.01 • HTML 4.01 was de laatste "vieze" versie • Al eenstap in de goederichting • HTML 4.01 Frameset • HTML 4.01 Transitional • HTML 4.01 Strict • <!DOCTYPE> is een SGML artefact! • Maar: nietpersé well formed XML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
Deprecation • Veelelementen "deprecated" in HTML 4.01 Strict • Vooralwaar het presentatiebetreft • <font>, <strike>, <u>, <center>, <iframe> • Maar: <b>, <i>, <tt>, <big>, <small> ? • Idem voorattributen • background, bgcolor • Maar: align ? • Dezezakenvoortaan met style sheets