HAAGA-HELIA OHJELMISTOKEHITYS 1(14) -elementti on olemassa kolmenlaisia elementtejä: A) Direktiivit A) Direktiivejä (directive element) B) Skriptejä (scripting selement) C) Toimintoelementtejä (action elements) direktiivin yleinen muoto: @ directive attr1= value1 attr2= value2 Direktiivi page Selitys page-direktiivi määrittää useita -sivun ominaisuuksia. Direktiivillä on seuraavat attribuutit: - language ilmoittaa sivulla käytettävän skriptikielen. 1.2 tukee vain Javaa - extends määrittää, mistä luokasta -sivua vastaava servletti periytetään. Tätä attribuuttia ei pidä normaali tapauksissa käyttää - import ilmoittaa ne pakkaukset ja luokat, jotka ovat käytettävissä -sivuilla - session ilmoittaa, onko -sivun mahdollista perustaa istunto - buffer määrittää -sivun puskurointimallin - autoflush määrittää, tyhjennetäänkö puskuri automaattisesti - isthreadsafe ilmoittaa, mikä on -sivun säikeiden turvallisuustaso Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 2(14) include taglib - info määrittää vapaamuotoisen -sivua koskevan merkkimuotoisen informaation. Informaatio saadaan Servlet.getServletInfo()-metodilla - iserrorpage ilmoittaa, onko -sivu jonkun toisen -sivun virheilmoitussivu - contenttype määrittää -sivun merkkien koodauksen (oletuksena ISO-8859-1) ja -sivun sisältötyypin - pageencoding määrittää -sivun merkkien koodauksen (oletuksena ISO-8859-1) include-direktiivin avulla sijoitetaan -sivulle tekstiä jostakin ulkoisesta tiedostosta -sivun käännöksen aikana taglib-direktiivi ilmoittaa, että -sivu käyttää ulkoista tagikirjastoa Esim. Esim. @page import="java.util.*" Tänään on = new Date().toString() <head><title>include-direktiivi</title></head> @include file="copyright.html" <h1>include</h1> <p>:n include-direktiivin avulla voidaan tuoda tekstiä www-sivulle käännösaikaan. </p> copyright.html-tiedoston sisältö: <hr>copyright 2002 Ville Villaton, Vallattomat & Kumppanit<hr> Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 3(14) B) Skriptit Skriptielementtien sisään voi kirjoittaa Java-kielisiä käskyjä. Skriptielementtien alkumerkintä on ja loppumerkintä on. 1.2 määrittää seuraavat skriptielementit: 1) Määrittely (declaration) Esimerkki. 1) määrittely (declaration), esim.! int a; 2) skriptletti (scriptlet), esim. out.println("terve"); 3) lauseke (expression), esim. = Math.PI*r*r! Java_tyyppi java_muuttuja ; Määrittelyskriptin alkutagi on! ja loppustagi on määrittää -sivulla käytettäviä muuttujia ja metodeja. Määrittelyjen on oltava täydellisiä käskyjä. Määrittelyelementissä ei voida kirjoittaa out-tietovirtaan. Määrittelyt astuvat voimaan, kun -sivu initialisoidaan.! public String poo(int n) { if ( n < 0) return "negatiivinen"; else return "positiivinen"; } Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 4(14) 2) Skriptletti (scriptlet) Skriptletin alkutagi on ja lopputagi Skriptletissä voi olla kaikkia skriptikielen (Javan) mukaisia rakenteita. Skriptletin suoritus tapahtuu -sivun pyynnön käsittelyn aikana. Skriptletissä voidaan kirjoittaa out-tietovirtaan. Esimerkki. if(a < 10) { pieni kokonaisluku } else { suurempi kokonaisluku } ONGELMA: Kaikilla käyttäjillä ei ole Java-kääntäjää 3) Lauseke (expression) Skriptilausekkeen alkutagi on = ja lopputagi on -sivun lauseke on skriptikielen (Java-kielinen) lauseke, jonka arvo on lasketaan ja muutetaan String-tyyppiseksi merkkijonoksi. Lausekkeen arvo kirjoitetaan out-tietovirtaan. Lauseke suoritetaan HTTP-pyynnön aikana. Esimerkki. = new java.util.date().tostring() Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 5(14) Esimerkki <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>kokeilut</title> </head> @ include file="copyright.html" <h1>include</h1> <p>:n include-direktiivin avulla voidaan tuoda tekstiä www-sivulle käännösaikaan. </p> <p> Tänään on = new Date().toString() </p>! int luku = 15;! public String poo(int n){ if(n < 0) return("negatiivinen"); else return("positiivinen");} -direktiivi include -lauseke -määrittely: muuttuja luku ja funktio poo -sivulle voidaan sijoittaa skriptejä. Edellinen oli määrittely.<br/> Seuraava on skriptletti. Siinä voi olla mitä tahansa Java-koodia.<br/> for(int i = 0; i < 3; i++) skriptletti out.println("hurraa!<br> "); Seuraava on lauseke (expression), jonka arvo sijoitetaan sivulle.<br/> Lausekkeen arvo on = poo(luku) -lauseke tulostuu: Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 6(14) Java-muuttujien näkyvyys Java-koodi sijoitetaan servletissä juuri siihen paikkaan, missä tagit,..., ovat. Jos koodissa on määritelty muuttujia, ne voivat näkyä tagien rajoittaman alueen ulkopuolella, paitsi jos ne määritellään java-lohkon sisälle, ne eivät näy toisen java-lohkon sisällä. Esim. 1 <head><title>-sivu </title></head> <center> <h1>-sivu</h1> <br/>ensimmäinnen -lohko <br/> String nimi = "Pirkko Paju"; out.println(nimi); <br/>toinen -lohko<br/> nimi = "Pekka Puska"; out.println(nimi); Esim. 3 <head><title>- Sivu</title></head> <center> <h1>-sivu</h1> <br/> Ensimmäinnen -lohko <br/> String nimi = "Pirkko Paju"; out.println(nimi); <br/>toinen -lohko<br/> String nimi = "Pekka Puska"; Tiedosto: out.println(nimi);.docx Esim. 2 <head><title>- Sivu</title></head> <center> <h1>-sivu</h1> <br/> Ensimmäinnen Java-lohko <br/> { String nimi = "Pirkko Paju"; out.println(nimi); } <br/>toinen Java-lohko<br/> { String nimi = "Pekka Puska"; out.println(nimi); }
HAAGA-HELIA OHJELMISTOKEHITYS 7(14) Ehtolauseet ja toistorakenteet - -sivulla voidaan käyttöö Javan ehtolauseita ja toistorakenteita. Sivu4: int a = 2, b = 1; if(a > b) { a on suurempi kuin b } else { b on suurempi kuin a } Tulostuu: a on suurempi kuin b... String [] varit = {"Sininen", "Punainen", "Vihreä", "Keltainen"}; <form name=lomake> Valitse väri<br/><br/> <select name=valinta> for(int i = 0; i < varit.length; i++) { <option> out.println(varit[i]); } </select> </form>... - Tulostuu: Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 8(14) :n standardin toimintoelementit (standard actions) :ssä on toimintoelementtejä (action), joilla voidaan luoda ja käyttää olioita ja komponentteja. :n standardit toimintoelementit ovat seuraavat: <jsp:usebean> <jsp:setproperty> <jsp:getproperty> <jsp:include> <jsp:forward> <jsp:param> <jsp:plugin> Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 9(14) <jsp:usebean> <jsp:usebean> -elementin avulla saadaan -sivun käyttöön Java-olio. Toiminto liittää Java-olion annettuun id-attribuutin arvoon. Toiminto etsii ensin annetut kriteerit täyttävää oliota ja jos sellaista ei löydy, se yrittää luoda annettujen attribuuttien mukaisen olion. Olion etsintäkriteerit ovat olion nimi (id-attribuutti) ja näkyvyysalue. Syntaksi: <jsp:usebean id="name" scope="page request session application typespec /> typespec ::=class="classname" class="classname" type="typename" type="typename" class="classname" beanname="beanname" type="typename" type="typename" beanname="beanname" type="typename" <jsp:usebean>-toiminnolla on seuraavat attribuutit: - id id-attribuutti identifioi -sivuun liitetyn olion (olion nimi) - scope scope-attribuutti ilmaisee näkyvyysalueen, missä olio on käytettävissä. Se voi saada jonkin arvoista: page, request, session, application. Oletuksena on page. - class class-attribuutti ilmoittaa -sivuun liitettävän olion luokan - beanname beanname-attribuutti ilmoittaa -sivuun liitettävän JavaBean-komponentin nimen - type type-attribuutti määrittää -sivuun liitettävän muuttujan tyypin. Attribuutin avulla on mahdollista antaa muuttujalle eri tyyppi kuin itse olion tai komponentin tyyppi. Tyyppi voi olla olion tyypin kantaluokka tai rajapinta, jonka olio toteuttaa. Esim. <jsp:usebean id="kori" scope="session" class="kauppa.ostoskori" /> Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 10(14) <jsp:setproperty> annetaan JavaBean-komponentin ominaisuudelle jokin arvo. Syntaksi: <jsp:setproperty name="beanname" { prop_expr } /> Prop_expr ::= property= "*" property="propertyname" [ param="parametername" ] property="propertyname" value="{string = expression}" <jsp:setproperty>-toiminolla on seuraavat attribuutit: - name name-attribuutti on olio tai JavaBean-komponentti, joka on määritetty aikaisemmin <jsp:usebean>-elementissä. - property property-attribuutti ilmoittaa komponentin ominaisuuden, jota halutaan muuttaa. Jos ominaisuuden arvoksi annetaan "*", elementti etsii kaikki request-olion parametrien nimet, joilla on sama nimi kuin beanname komponentin ominaisuuksilla (attribuuteilla), ja vie parametrien arvot ominaisuuksien arvoiksi. Ko. komponentin ominaisuuksilla pitää olla set-metodit. Parametrit ovat yleensä HTML:n elementtejä, joiden arvot kirjoittaa käyttäjä. - param property saa arvokseen ServeletRequest-olion param-nimisen parametrin. Jos param-määrettä ei ole, property saa arvokseen Servletrequest-olion property-nimisen parametrin arvon. - value value-attribuutti ilmaisee arvon, jonka ominaisuus saa. Esim. <jsp:usebean id="kori" scope="session" class="kauppa.ostoskori" /> <jsp:setproperty name= kori property= numero value= 123 /> <jsp:usebean id="cart" scope="session" class="session.carts" /> <jsp:setproperty name="cart" property="*" /> Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 11(14) <jsp:getproperty> hakee komponentin ominaisuuden arvon, muuttaa sen Stringmerkkijonoksi ja sijoittaa sen out-tietovirtaan. Komponentti, jonka ominaisuutta haetaan, täytyy olla perustettu aikaisemmin <jsp:usebean>-elementillä. Syntaksi: <jsp:getproperty name="beanname" property="propertyname" />, missä name on olion nimi, joka on määritetty aikaisemmin <jsp:usebean>-elementissä ja jonka ominaisuutta haetaan, ja property on haettava ominaisuus. Esimerkki. @ page import = "java.util.*, kauppa.ostoskori" <jsp:usebean id="kori" scope="session" class="kauppa.ostoskori" /> <head><title>kirjaostokset</title></head> <center> <h1>kirjaostokset</h1> <br /> Tilauksen numero: <jsp:getproperty name="kori" property="numero" /> <br /> Tilaajan nimi: <jsp:getproperty name="kori" property="nimi" /> <br /> Ostokori-luokassa on oltava attribuuteilla getattribuuttimetodit. Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 12(14) <jsp:include> mahdollistaa pyynnön aikana tuoda ja sisällyttää -sivuun ulkoinen staattinen tai dynaaminen resurssi. (Staattinen resurssi tarkoittaa esim. staattista HTML-sivua. Dynaaminen resurssi tarkoittaa esimerkiksi toista -sivua. Dynaaminen resurssi täytyy ensin prosessoida ja prosessin tulos tuodaan -sivuun.) Syntaksi: <jsp:include page="urlspec" flush="true" />,missä page on sisällytettävän resurssin URL-osoite ja flush on pakollinen ja ilmaisee puskurin olevan tyhjennetty. Sen arvo pitää olla true. Toinen muoto toiminnalle on seuraavassa, missä sisällytettävälle sivulle välitetään yksi tai useampi parametri: <jsp:include page="urlspec" flush="true"> <jsp:param name="paramname" value="paramvalue" /> </jsp:include> Esimerkki <jsp:include page="copyright.html" flush="true" /> Esim. Seuraava päiväys tulee toisesta jsp-sivusta Seuraava päiväys tulee toisesta jsp-sivusta <jsp:include page="pvm.jsp" flush="true" /> Tiedosto:.docx Pvm.jsp: = new java.util.date().tostring() @ page import="java.util.*, java.text.*" Date aika = new Date(); SimpleDateFormat format = new SimpleDateFormat ("dd.mm.yyyy"); String pvm = format.format(aika); Paivays = pvm
HAAGA-HELIA OHJELMISTOKEHITYS 13(14) <jsp:forward> siirtää voimassa olevan pyynnön käsittelyn toiselle resurssille: staattiselle sivulle, -sivulle tai servletille. Samalla vanhan sivun suorittaminen loppuu. Syntaksi: <jsp:forward page="relativeurl" />, missä page on uuden resurssin URL-osoite. Toinen muoto toiminnalle on seuraavassa, missä siirrettävälle sivulle välitetään yksi tai useampi parametri: <jsp:forward page="urlspec"> <jsp:param name="paramname" value="paramvalue" /> </jsp:forward> <jsp:param> välittää parametreja ja niiden arvoja jsp:include, jsp:forward ja jsp:plugin -toimintojen kanssa. Syntaksi: <jsp:param name="paramname" value="paramvalue" /> <jsp:plugin> avulla voidaan sisällyttää jsp-sivuun apletteja tai javabeanin Tiedosto:.docx
HAAGA-HELIA OHJELMISTOKEHITYS 14(14) Kommentit :n kommentti on -sivujen dokumentointia varten. Kommentin sisältö jää vain -sivulle. Container hylkää sen kokonaan tehdessään -sivusta servlettiä. -- kommentoivaa tekstiä -- Tavalliseen HTML-kommenttiin voidaan kirjoittaa -elementti, joka ei näy sivulle <!-- HTML:n kommentti, jossa on -elementti = -lauseke. Kommentin loppu --> -sivuun voidaan viedä Javan kommentit seuraavasti; /* Javan usean rivin kommentti */ // Javan yhden rivin kommentti Tiedosto:.docx