Digitaalisen median tekniikat, k2004 HY/TKTL, palvelinohjelmointi_1 21/04/2004. Harri Laine 1. Palvelinohjelmointi. Staattinen www-sivu

Samankaltaiset tiedostot
Digitaalisen median tekniikat. Palvelinohjelmointi Harri Laine 1

Digitaalisen median tekniikat. Palvelinohjelmointi

Harri Laine 1. Digitaalisen median tekniikat, s2007 HY/TKTL, palvelinohjelmointi_1. Palvelinohjelmointi

Taustaa. CGI-ohjelmointi

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Digitaalisen median tekniikat. Luento 4: JavaScript

Digitaalisen median tekniikat. JSP ja XML

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat JavaScript Harri Laine 1

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

1 PHP-sovelluksen toiminta

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

Digitaalisen median tekniikat xhtml - jatkuu

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

Olio-ohjelmointi Javalla

Digitaalisen median tekniikat xhtml - jatkuu

SQL Buddy JAMK Labranet Wiki

Ohjelmoinnin perusteet Y Python

PHP:n alkeita ja taustaa. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

1.1 Internetistä lyhyesti. Mikä Internet on? 1.2 Maailmanlaajuinen verkko

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Written by Administrator Saturday, 28 August :51 - Last Updated Tuesday, 22 February :45

directive attr1= value1 attr2= value2 %>

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Helsingin yliopisto, TKTL Tietokantojen perusteet, s 2000 WWW-tietokantasovellukset Harri Laine 1. vapaamuotoiset tiedot

KIURU Tietotekniikan sovellusprojekti

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Haka-palveluiden valvonta ja tilastointi AAIEye -työkalun avulla. Mika Suvanto, CSC

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

Ohjelmoinnin perusteet Y Python

Security server v6 installation requirements

Yleinen ohjeistus Windows tehtävään.

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

815338A Ohjelmointikielten periaatteet

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Java-kielen perusteet

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Microsoft Visual Studio 2005

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Harjoitustyö: virtuaalikone

15. Ohjelmoinnin tekniikkaa 15.1

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

7. Näytölle tulostaminen 7.1

2. PEHMEÄ XHTML XRAJAHTML

Security server v6 installation requirements

7/20: Paketti kasassa ensimmäistä kertaa

OSA I Aloitetaan. Oppitunti. 1. PHP: Kotisivusta portaaliin 2. PHP:n asentaminen 3. Ensimmäinen skriptisi. 17 Johdanto

Taulukot. Jukka Harju, Jukka Juslin

Webpalvelin muistitikulle - Ohje

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Alkuun HTML5 peliohjelmoinnissa

Paavo Räisänen. WampServer palvelimen asennus ja käyttö Eclipsen kanssa, sekä ensimmäinen FTP yhteys.

TIE Principles of Programming Languages CEYLON

15. Ohjelmoinnin tekniikkaa 15.1

Pedacode Pikaopas. Web-sovelluksen luominen

Laajuus 5 op Luennot: 12 x 2t Harjoitukset: 7 viikkoharjoitusta harjoitusten tekemiseen saatavissa apua 2 ryhmää / harjoitus

Ohjelmoinnin jatkokurssi, kurssikoe

Harjoitus 5 (viikko 48)

Palvelinpuolen ohjelmointi

Java-kielen perusteet

LINUX-HARJOITUS, MYSQL

Loppukurssin järjestelyt

Ohjelmointi 1 Taulukot ja merkkijonot

PHP tehtävä 3 Atte Pekarinen TIKT13A

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Ohjelmoinnin perusteet Y Python

Tieto- ja tallennusrakenteet

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

17. Javan omat luokat 17.1

ITKP102 Ohjelmointi 1 (6 op)

Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

Java-kielen perusteet

Tietokannan webbikytkentä. Janne Petäjä

ICT1TN004. Skriptikielet. Heikki Hietala

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssi Y1

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

4. Lausekielinen ohjelmointi 4.1

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla

Ohjelmoinnin perusteet Y Python

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Transkriptio:

Digitaalisen median tekniikat Staattinen www-sivu Palvelimelle tallennettu valmis sivu Sama URL antaa aina saman sisällön Teknisesti sivu voi muodostua monesta osasta, esimerkiksi kuvat ovat eri tiedostoja www-palvelinohjelmistot mahdollistavat myös sivun rakentamisen siten, että sivu on pilkottu useisiin eri tiedostoihin, esimerkiksi useille sivuille yhteiset osat on koottu erillisiin tiedostoíhin. SSI (Server Side Include) on yksinkertainen tekniikka sivun kokoamiseen palvelimessa 21.4.2004 Harri Laine 1 21.4.2004 Harri Laine 2 Apache SSI:ssä on tarjolla yksinkertainen kieli palvelimessa tapahtuvien täydennysten määrittelyyn. SSI täydennyslauseet ovat rakenteeltaan muotoa: <!-- #komento parametri= arvo.--> Tärkeimpiä komentoja on include, jolla voidaan liittää sivuun tiedostoja tai ohjelmien tuloksia <!-- #include file= taydennys.shtml --> korvautuu tiedoston taydennys.shtml sisällöllä tätä muotoa käytettäessä tiedoston on oltava samassa hakemistossa kuin täydennettävä tai sen alihakemistossa 21.4.2004 Harri Laine 3 Muoto <!-- #include virtual=../includes/a.html --> ei rajoita URL:ia samaan hakemistoon Tässä voidaan antaa myös ohjelmakutsu <!-- #include virtual= /cgi_bin/ohjelma.cgi?par=xyz --> Täydennyksinä voidaan myös tulostaa muuttujien arvoja, esim. <!-- echo var= DOCUMENT_NAME --> tulostaa dokumentin nimen ja <!-- echo var= LAST_MODIFIED --> tulostaa dokumentin viimeisen ylläpitoajankohdan 21.4.2004 Harri Laine 4 SSI-elementeillä voidaan myös määritellä uusia muuttujia ja asettaa niille arvoja sekä määritellä ehdollisia osia otettavaksi dokumenttiin. Alla SSI:llä toteutetttu pätkä valikkomääritystä, jossa aktiivinen valinta ilmaistaan luokan active taulukkoalkiossa. <!--#if expr="\"$document_name\"=\"index.shtml\"" --> <td class="active"> <!--#else --> <td class="passive"> <!--#endif --> <a href="index.shtml">ajankohtaista</a> jatkuu valikko jatkuu: <!--#if expr="\"$document_name\"=\"kurssikuvaus.shtml\"" --> <td class="active"> <!--#else --> <td class="passive"> <!--#endif --> <a href="kurssikuvaus.shtml">kurssikuvaus</a> 21.4.2004 Harri Laine 5 21.4.2004 Harri Laine 6 Harri Laine 1

Sivun index.html kohdalla edelliset lauseet tuottaisivat sisällön: <td class="active"> <a href="index.shtml">ajankohtaista</a> <td class="passive"> <a href="kurssikuvaus.shtml">kurssikuvaus</a> 21.4.2004 Harri Laine 7 SSI:ssä näkyvät kaikki CGI-ympäristömuuttujat, myös QUERY_STRING (eli kysymysmerkin jälkeinen kutsuparametrit sisältävä osa URL:sta), mutta sillä ei pääse käsiksi QUERY_STRING:n osiin, siis yksittäisiin kutsuparametrien arvoihin SSI:llä ei voi myöskään käsitellä tietokantoja eikä kirjoittaa muuta kuin luotavalle sivulle Lähinnä käyttö on valikkojen yms. yhteisten osien kokoamista, katso esimerkkinä kurssin index.shtml sivu. (../dime/k04/index.txt) 21.4.2004 Harri Laine 8 SSI-määreitä sisältävän tiedoston tyyppitunnuksena on yleensä.shtml Tiedostolla pitää ainakin tktl:n ympäristössä olla suoritusoikeus (x omistajalle riittää) SSI:n mahdollisuudet muokata sivua ovat hyvin rajalliset. Enemmän mahdollisuuksia on tarjolla käynnistettäessä erillisiä palvelinohjelmia tuottamaan sivuja tai käyttämällä palvelimessa suoritettavia www-sivuun upotettuja palvelinskriptejä. Sivun tuottamistyökalut eivät hallitse SSItäydennyksiä 21.4.2004 Harri Laine 9 21.4.2004 Harri Laine 10 Perinteinen ratkaisu palvelimella olevien ohjelmistojen käynnistämiseen on CGI (Common Gateway Interface) CGI määrittää tavan, millä web-selain webpalvelimen kautta kommunikoi palvelinkoneessa toimivan ohjelman kanssa. Kommunikointi perustuu joukkoon ympäristömuuttujia sekä ohjelman syöttö- ja tulosvirran ohjaukseen Ympäristömuuttujia: DOCUMENT_ROOT HTTP_COOKIE HTTP_HOST HTTP_REFERER HTTP_USER_AGENT HTTPS PATH QUERY_STRING The root directory of your server The visitor's cookie, if one is set The hostname of the page being attempted The URL of the page that called your program The browser type of the visitor "on" if the program is being called through a secure server The system path your server is running under The query string (see GET, below) 21.4.2004 Harri Laine 11 21.4.2004 Harri Laine 12 Harri Laine 2

REMOTE_ADDR REMOTE_HOST REMOTE_PORT REMOTE_USER The IP address of the visitor The hostname of the visitor (if your server has reverse-name-lookups on; otherwise this is the IP address again The port the visitor is connected to on the web server The visitor's username (for.htaccessprotected pages) SCRIPT_FILENAME SCRIPT_NAME SERVER_ADMIN SERVER_NAME SERVER_PORT The full pathname of the current CGI The interpreted pathname of the current CGI (relative to the document root) The email address for your server's webmaster Your server's fully qualified domain name (e.g. www.cgi101.com) The port number your server is listening on REQUEST_METHOD REQUEST_URI GET or POST The interpreted pathname of the requested document or CGI (relative to the document root) SERVER_SOFTWARE The server software you're using (e.g. Apache 1.3) 21.4.2004 Harri Laine 13 21.4.2004 Harri Laine 14 CGI-ohjelma voi olla kirjoitettu millä ohjelmointikielellä tahansa. Miten ympäristömuuttujat näkyvät ohjelmalle riippuu ohjelmointikielestä Tyypillisesti ohjelman käynnistyspyyntöön liittyy parametreja, jotka välitetään joko ympäristömuuttujan QUERY_STRING kautta (GET) tai standardisyöttövirran kautta (POST) Ohjelman ensimmäisiä tehtäviä on purkaa parametrit ja toimia sitten saatujen arvojen perusteella. 21.4.2004 Harri Laine 15 Perinteisesti ohjelmat on CGI liittymän kautta käynnistetty jokaista pyyntöä käsittelemään uutena prosessina, suhteellisen raskasta (Windowsissa vielä raskaampaa kuin UNIX:ssa) eikä mahdollista vuorovaikutuksen tilan suoraa säilytystä palvelimen työmuistissa tila pitää tallentaa tietokantaan tai tiedostoihin tai välittää selaimen kautta takaisin palvelimelle seuraavaan palvelupyynnön yhteydessä (esim evästeenä (cookie) tai lomakkeen piilotietona) CGI on jokaisen www-palvelimen tarjoama perustekniikka Ei edellytä muuta kuin www-palvelimen, ei vie jatkuvasti resursseja 21.4.2004 Harri Laine 16 Esimerkki: ostoskorin kokoaminen eväste/ piilokenttä aloita keräys uusi tuote (korin tunnus) perusta kori lisää tuote tallenna hae tallenna hae korin tila korin tila Nykyiset www-palvelimet tarjoavat erilaisia kevytprosessi -ratkaisuja ja myös vuorovaikutuksen tilan säilyttämistä CGI-kutsujenkin yhteydessä. Hyvin yleinen CGI:n yhteydessä käytetty ohjelmointikieli on Perl parametrit helppo purkaa palvelimella sijaitsevien tiedostojen käsittely mahdollista tietokantakäsittely mahdollista sivu tuotetaan kirjoituslauseilla tarjolla valmiita funktioita html-tagien lisäämiseen uusi tuote korin lisää tila tuote (korin tunnus) tallenna selain prosessit myös koko korin tila voitaisiin kierrättää 21.4.2004 Harri Laine selaimen kautta 17 21.4.2004 Harri Laine 18 Harri Laine 3

- servletit Servletit ovat Java-ohjelmointiympäristön tarjoama vanhin tekniikka palvelinohjelmien toteutukseen Servletit poikkeavat perinteisestä CGI-tekniikasta siinä, että servletin koodi ladataan muistiin kerran ja on sen jälkeen valmiina käyttöön palvelut toteutetaan säikeinä, mikä on prosesseja kevyempi toteutus servletit voivat säilyttää vuorovaikutuksen tilan sessio-olioina servletit edellyttävät, että niiden suoritusalusta (esim. Tomcat) on jatkuvasti käynnissä kuten Perlissä html-koodi tuotetaan kirjoituslauseiden avulla funktiokirjastoja tagien lisäämiseen löytyy, mutta nämä eivät ole osa Javan servletti-rajapintaa 21.4.2004 Harri Laine 19 Palvelinohjelmat voivat tuottaa sivulle yhtä hyvin html-koodia kuin myös JavaScript-koodia. Ne voivat myös tuottaa ja vaihtaa sivuun kytkettyjä tyylimäärityksiä. 21.4.2004 Harri Laine 20 skriptikielet Sivujen tuottaminen ohjelmointikielen kirjoituslauseilla, kuten Perl:ssä tai Java servleteissä, on suoraviivaista, mutta sivun rakennetta voi olla vaikea hahmottaa. Palvelinpään skriptikielten ideana on säilyttää sivun staattiset osat html, css- tai JavaScript- koodina ja upottaa ohjelmakoodia vain sellaiseen kohtaan, jossa sisältöä on dynaamisesti muutettava tai sisällölle on muuten tehtävä jotain. skriptikielet Palvelimen skriptikieliä on tarjolla useita Netscape palvelin tarjoaa Livescript-kielen (JavaScriptin palvelinversio) Microsoftin asp.net ympäristössä voi käyttää useita kieliä esim JScript, VBScript, jne Apache ympäristössä voi käyttää esimerkiksi phpskriptikieltä, php:n voi kytkeä myös muihin wwwpalvelimiin. JSP(Java Server Pages) edellyttää Java servletympäristöä. 21.4.2004 Harri Laine 21 21.4.2004 Harri Laine 22 PHP (alunperin Personal Home Page Tools) Ensimmäinen versio 1995 Palvelimessa suoritettava skriptikieli, jolla voi mm. muokata www-sivuja käsitellä tietokantoja ja tiedostoja palvelimella tulkattava kieli lähtökohtana C-kieli PHP:n käyttö TKTL:llä on kuvattu harjoituksen 3 harjoitustilaisuudessa annettussa tehtävässä. Esimerkki: Ohjelma, joka tulostaa kutsuparametrien arvot. http://db.cs.helsinki.fi/~laine/php/pcount.php (huom: php käsittelee toistuvan parametrin arvot eri tavalla kuin ne käsitellään esim Javaservleteissä tai Perl:ssä tarjoaa vain viimeisen) 21.4.2004 Harri Laine 23 21.4.2004 Harri Laine 24 Harri Laine 4

#!/usr/local/bin/php <!doctype html public "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>parametrilistaus</title> </head> <body> <h2>parametrilistaus</h2> #!/usr/local/bin/php <!doctype html public "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>parametrilistaus</title> </head> <body> <h2>parametrilistaus</h2> tarvitaan php-tulkin käynnistämiseen koska tktl:llä php käynnistyy CGI-prosessina 21.4.2004 Harri Laine 25 21.4.2004 Harri Laine 26 <p> <?php $counter=0;?> </p> <p> <?php foreach ($_REQUEST as $param => $value) { echo "$param = $value<br>"; $counter++; }?> <p></p> <p><?php echo "Yhteensä: $counter parametria."?></p> </body> </html> 21.4.2004 Harri Laine 27 <p> <?php $counter=0;?> </p> <p> <?php foreach ($_REQUEST as $param => $value) { echo "$param = $value<br>"; $counter++; upotettu php: } käydään läpi assosiatiivinen?> taulukko ja tulostetaan parametrin nimi ja siihen liittyvä arvo <p></p> <p><?php echo "Yhteensä: $counter parametria."?></p> </body> </html> upotettu php: alustetaan muuttuja -merkein rajatun merkkijonon sisällä oleva muuttujanimi korvataan muuttujan arvolla 21.4.2004 Harri Laine 28 Tunnisteet alkavat kirjaimella tai jollain sallituista erikoismerkeistä ja sen jälkeen voi seurata kirjaimia, numeroita tai sallittuja erikoismerkkejä (operaatiosymboleja ei voi käyttää tunnisteissa) Tunnisteet ovat aakkoskoosta riippuvia (case sensitive) Muuttujissa tunnistetta edeltää aina $ Literaalit numeeriset esim. 123, 12.3, 0123 (octal), 0x123 (hexa) merkkijono: yksin- tai kaksinkertaisissa lainausmerkeissä -rajatuissa muuttujat korvataan arvoillaan -rajatuissa ei $m1= xyz ; $m2= arvo $m1 ; (arvo xyz) $m3= muuttuja $m1 ; (muuttuja $m1) erikoismerkeille C/Java tyylinen korvaus kummassakin muodossa esim \, \n, \\, jne 21.4.2004 Harri Laine 29 21.4.2004 Harri Laine 30 Harri Laine 5

Tietotyypit: kokonaisluvut, liukuluvut, merkkijonot, totuusarvot (false=0,, 0,null, tyhjä olio ; true kattaa kaikki muut) 21.4.2004 Harri Laine 31 Taulukot: alkioon viitataan indeksoidulla muuttujanimellä $taulukko[indeksi] indeksi voi olla kokonaisluku (myös negatiivinen) tai merkkijono Olkoon x suurin kokonaislukuindeksi, joka taulukossa on käytössä, $taulukko[] viittaa tällöin alkioon $taulukko[x+1], jos taulukossa ei ole vielä yhtään kokonaislukuindeksoitua alkiota $taulukko[] viittaa alkioon $taulukko[0] kokonaislukuindeksit ja merkkijonoindeksit eivät viittaa samaan alkioon toisin kuin JavaScriptissä 21.4.2004 Harri Laine 32 taulukko: taulukko voidaan luoda array(sisältö) määreellä. $taulukko1= array (10,30,50); $taulukko1[0]==10, $taulukko1[1]==30, $taulukko2= array(1=>10, puu => koivu, metsä ); $taulukko2[1]==10, $taulukko2[ puu ]== koivu, $taulukko2[2]== metsä, taulukko2[0]==null $taulukko3[ kurssi ]=array( DiMe, 2,120); $taulukko3[ kurssi ][0]== DiMe, $taulukko3[ kurssi ][1]==2, PHP tarjoaa valmiina taulukoita CGI-parametrien käsittelyyn $_POST sisältää post-metodilla lähetetyt kutsuparametrit indeksointi parametrin nimellä $_GET sisältää get-metodilla lähetetyt kutsuparametrit $_COOKIE sisältää selaimelta saadut evästeet $_FILES sisältää selaimelta ladatut tiedostot $_REQUEST = $_POST union $_GET union $_COOKIE $_SERVER ja $_ENV : palvelimeen ja yhteyteen liittyvää tietoa skripti: http://db.cs.helsinki.fi/~laine/php/psuper.php?var=taulukko listaa TAULUKON sisällön (ei taulukkotyyppisiä alkioita), Anna taulukon nimi kuten yllä http://db.cs.helsinki.fi/~laine/php/psuper.txt (lähdekoodi, IE:llä katso lähdekoodi) 21.4.2004 Harri Laine 33 21.4.2004 Harri Laine 34 Muuttujat voivat olla globaaleja käytettävissä funktioiden ulkopuolella ja funktioissakin jos ne esitellään globaaleina, paikallisia käytettävissä funktion sisällä arvo suorituskertakohtainen staattisia paikallisia käytettävissä funktion sisällä arvo säilyy suorituskerrasta toiseen superglobaaleja käytettävissä kaikkialla ilman esittelyjä Sijoitus on arvon kopioiva $m1= xyz ; $m2=$m1; $m1= abc ; ($m2 on edelleen xyz ) Erityinen alias sijoitus (&=), jolla saadaan muuttujat viittaamaan samaan muistipaikkaan $m2 &= $m1; $m1= def ($m2 on myös def ) 21.4.2004 Harri Laine 35 21.4.2004 Harri Laine 36 Harri Laine 6