HSMT Web-sovellustekniikoista



Samankaltaiset tiedostot
WWW ja servletit. Luku Johdanto

HSMT J2EE & EJB & SOAP &...

ICT1TN004. Lomakkeet. Heikki Hietala

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä.

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

HOJ J2EE & EJB & SOAP &...

koodipolku iteraation muokkauksessa Dokumentti: koodipolkuesimerkki.doc Päiväys: Projekti : AgileElephant

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

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

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

JSP (JavaServer Pages) tekniikka Lähde Arvo Lipitsäinen, JSP JavaServer Pages, 2003

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Lomakkeet HTML5. Elina Ulpovaara. Testaus: IE9 Firefox7 Opera11 Chrome

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

directive attr1= value1 attr2= value2 %>

Järjestelmäarkkitehtuuri (TK081702)

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

4. Luokan testaus ja käyttö olion kautta 4.1

Rajapinta (interface)

2 Web-lomakkeet. HTML-lomakkeet. Lomakkeiden perusteet

Metodien tekeminen Javalla

TIETOJENKÄSITTELY/PIKATAIVAL2 Tehtävä G

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

Digitaalisen median tekniikat xhtml - jatkuu

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Tiedonsiirto- ja rajapintastandardit

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

10 Lomakkeet Kontrollit. 10 Lomakkeet

Taustaa. CGI-ohjelmointi

Taulukot. Jukka Harju, Jukka Juslin

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

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

2 Web-lomakkeet. 2 Web-lomakkeet

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Verkko-ohjemointia. TCP vs. UDP Socket, ServerSocket Datagrammit RMI

Olio-ohjelmointi Javalla

Digitaalisen median tekniikat xhtml - jatkuu

Pedacode Pikaopas. Web-sovelluksen luominen

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Palvelinpuolen ohjelmointi


on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Sunin määrittelemä JSP 1.1 (javaserver pages) yhdistää

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

3 Verkkopalveluarkkitehtuuri

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

20. Javan omat luokat 20.1

2 Web-lomakkeet. HTML-lomakkeet. Lomakkeiden perusteet

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

ISACA Finland OWASP The OWASP Foundation. Timo Meriläinen Antti Laulajainen.

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Omat Lähdöt ohjelmointirajapinta: Versio 1.01

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

HTTP-välityspalvelimen käyttö tapahtumien keräämiseen

Loppuraportti. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

JSP (JavaServer Pages) tekniikka Lähde Arvo Lipitsäinen, JSP JavaServer Pages, 2003

Palvelun rekisteröinti Virtu - luottamusverkostoon / testipalveluun

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmoinnin jatkokurssi, kurssikoe

2 Web-lomakkeet. 2 Web-lomakkeet

Tietokannan webbikytkentä. Janne Petäjä

Java-API, rajapinnat, poikkeukset, UML,...

ASP ja DHTML Seppo Räsänen

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

ARVO - verkkomateriaalien arviointiin

DTEK1047: Hajautet ohjelmistojärjestelmät (HOJ)

16. Javan omat luokat 16.1

Pedacode Pikaopas. Web Service asiakasohjelman luominen

Luottamuksellinen sähköposti Lapin yliopistossa. Ilmoitusviesti

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

Harjoitustyö (TKO_2023)

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Sarjallistaminen. Juha Järvensivu 2007

Johdatusta selainohjelmointiin

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

7. Näytölle tulostaminen 7.1

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Palveluperustaiset arkkitehtuurityylit

Transkriptio:

HSMT Web-sovellustekniikoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.1/29

Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h) 5. Soketit (3h) 6. RMI (2h) 7. RPC ja Corba (2h) 8. Protokollista, XML (2h) 9. WWW-sovellustekniikoista (2h) 10. Pilvialustat (2h) 11. Haja-aiheita (1h) 99. Kertausluento (2h) + 1h pelivaraa HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.2/29

Rakenne Yleiskuva Web 2.0: WWW-sovellusten luonne WWW:n RIA-tekniikoista yleisesti Vaadin Servlet-tekniikasta HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.3/29

Yleiskuva Pohditaan: Mitä osapuolia hajautetun järjestelmän kannalta web-sovelluksissa? Mikä muuttuu web:n myötä? Mihin tekniikan oikeastaan kohdistuvat? Mitä resursseja web-sovellusten osapuolilla on? HTML5:n tuoma muutos... HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.4/29

Web-sovellusten luonne Web 1.0 Web 2.0: käyttäjät muuttuvat pasiivisista hyödyntäjistä sisällön muokkaajiksi ja primääriseksi tuottajaksi. Sosiaalinen media eri muotoineen. Selaimen kannalta: Selain tarjoaa lähinnä vain käyttöliittymän WWW-sovelluksille tietoresurssit ovat palvelimissa enimmäkseen käyttöliittymätekniikka-asiaa. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.5/29

RIA-tekniikoista Ajax Flash + Flex Silverlight JavaFX JavaServer Faces Vaadin... ei oikeastaan tämän kurssin asiaa. Parhaimmillaan vastaa standalone-sovelluksen tekoa. Käyttäjä ei näe UI:n ja logiikan erottelua selain- ja palvelinosiin. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.6/29

Vaadin IT Mill Oy (Turku). Katsotaan kuvia 3.1 ja 4.1 Vaadin-kirjasta. Vaadin-sovelluksen tekeminen näyttää standalone-sovelluksen (Swing:n tapainen) tekemiseltä. Pääpaino on GUI-asioissa. Palvelin puolella Vaadin-sovellus on servletti. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.7/29

Servletit version 2.1 mukaan Tilanne: Mikä servletti oikein on? WWW ja HTML-tiedostojen rakenne HTTP-protokolla Miten välittää tietoa? Lomakkeet Luokat Servlet ja HttpServlet Luokat HttpServletRequest ja HttpServletResponse sekä Cookie Esimerkkejä (Kirja: Java Servlet Programming, Jason Hunter & William Crawford, 1998.) HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.8/29

Tilanne 1/3 Servletti eli palvelinsovelma on www-palvelimessa suoritettavaksi tarkoitettu (tietynlainen) Java-ohjelma. Kaikki palvelimet eivät tue servlettejä (JSDK). Servletit eivät osa JDK:ta asennettava JSDK & palvelin & paketit kääntäjän yhteyteen. http://java.sun.com/products/servlet/ Servlet-ohjelmia ajetaan palvelimen oikeuksilla. Servlettiolio voidaan luoda jokaisen kutsun seurauksena tai se voi olla pysyvä osa palvelinta (raskaat sovellukset). Palvelinkohtaista: nykyisin yleensä pysyviä. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.9/29

Tilanne 2/3 Servletit ovat olioita ja luomisen jälkeen niitä käyttävä taho kutsuu niiden init()-metodia. WWW-palvelimen tehtävä: välittää html-sivuja. HTML-sivut: tekstimuotoisia sisältäen muotoilukomentoja ja esim. viittauksia muihin dokumentteihin. HTTP-protokolla: GET, POST, PUT + muutama muu komento. Pohjimmiltaan HTTP on yhteydetön! Miten välittää tietoa palvelimelle? Lomakkeet! Servlet pystyy käsittelemään mm. GET- ja POST-pyyntöjä. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.10/29

Tilanne 3/3 Idea: dynaaminen www-sivun generointi! Toinen idea: Työnjako: palvelin tekee raskaan työn. Esim. tietokantakysely. 2-tier, 3-tier, multitier... Huomaa: Servlettejä ja appletteja ei ole tehty kommunikoimaan keskenään! Servlettiä kutsutaan HTTP-protokollaa käyttäen. Appletti voi toimia niin, että jäsentää tuloksen vastauksena saamastaan HTML-sivusta; tuolloin appletti toimii selaimena... ei ole kovin järkevää... Itse asiassa servletin ja appletin välille on mahdollista luoda myös soketti- ja/tai RMI-yhteys. Ei luonnollista. (Ei käsitellä.) HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.11/29

Tilannekuva www palvelin kone www selain GET komento HTML sivu verkkoyhteys www palvelin prosessi POST komento HTML sivu doget() dopost() servletti olioita HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.12/29

Lomakkeista Servlettiä voi käyttää ottamaan tietoa lomakkeelta. HTML-tiedostossa: <FORM METHOD="POST" ACTION="http://kohdekone/servlets/OmaServletti">... määrityksiä </FORM> POST tai GET (ero on tekninen, syy osin vanhentunut). HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.13/29

FORM-määrittelyitä 1/3 Erilaisia kenttiä: <INPUT TYPE="tyyppi" NAME="nimi" VALUE="arvo"> TYPE=text voidaan syöttää tekstiä; alkuarvo. TYPE=radio radionappula; NAME kertoo ryhmän; VALUE:lla voidaan välittää tieto, mikä valittu. TYPE=checkbox valintaruutu; kuten radio. TYPE=submit nappula, jota painamalla ACTION osa käynnistyy; VALUE: nappulan teksti. TYPE=reset kuten submit, mutta tarkoituksena palauttaa painamisen seurauksena alkuarvoiksi. TYPE=image kuten submit, mutta nappulan sisältönä kuva. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.14/29

FORM-määrittelyitä 2/3 TYPE=password salasanakenttä. TYPE=file mahdollistaa tiedoston nimen valinnan ja tiedoston lähettämisen, jos FORM:n otsikossa ENCTYPE="multipart/mime". TYPE=hidden piilokenttä vakioarvon välittämiseksi. Valintalista: <SELECT NAME="nimi"> <OPTION>Vaihtoehto nro1 <OPTION SELECTED>Vaihtoehto nro2 <OPTION>Vaihtoehto... </SELECT> Tavallaan tämä on kenttä, jonka arvo valitaan annetusta joukosta. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.15/29

FORM-määrittelyitä 3/3 Tekstialue: <TEXTAREA NAME="nimi" ROWS="rivit" COLS="sarakkeet"> Tässä voi antaa tekstin oletusarvon </TEXTAREA> FORM:n muoto on muuttunut HTML:n versioiden myötä (nyk. 4.0). HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.16/29

HelloServlet.html <html> <head><title> HelloServlet </title></head> <body> <h2> HelloServlet:n käynnistävä sivu </h2> <form method="get" action="http://bg.cs.utu.fi:8080/servlet/helloservlet"> <input type=submit value="push"> </form> </body> </html> HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.17/29

HelloServlet.java import javax.servlet. ; import javax.servlet.http. ; import java.io. ; public class HelloServlet extends HttpServlet { public void doget(httpservletrequest rq, HttpServletResponse rs) throws IOException, ServletException { rs.setcontenttype("text/html"); PrintWriter out = rs.getwriter(); out.println("<html>"); out.println("<title> Hello there! </title>"); out.println("<body>"); out.println("<img src=http://staff.cs.utu.fi/icons/slidbar.gif alt=>" out.println("<h1> Tervehdys! </h1>"); out.println("<img src=http://staff.cs.utu.fi/icons/slidbar.gif alt=>" out.println("</body></html>"); } // doget } // class HelloServlet HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.18/29

LomakeServlet.html 1/3 <html> <head> <title> Lomakkeen välittämistä... </title> <body> <p> Täytä seuraavat ja paina lopuksi lähetä. </p> <form method=post ENCTYPE="multipart/mime" ACTION=http://bg.cs.utu.fi:8080/servlet/LomakeServlet> <input type=hidden name="piiloarvo" value="oletusarvo"> <p> Nimi: <input type=text name="kentta1" value=""> </p> <p> Osoite: <input type=text name="kentta2" value="osoite"> </p> HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.19/29

LomakeServlet.html 2/3 <p> Salasana: <input type=password name="kenttä3" value=""> </p> <p> Opinnot aloitettu: <select name="opinnot"> <option> muu <option selected> 1999 <option> 2000 <option> 2001 </select> <p> Valitse jokin: <input type=radio name="valinta" value="1999"> <input type=radio name="valinta" value="2000"> <input type=radio name="valinta" value="2001"> </p> HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.20/29

LomakeServlet.html 3/3 <p> Valitse tiedosto: <input type=file name="tiedosto" accept="html"> </p> <p> <input type=reset value="resetoi"> <input type=submit value="lähetä"> </p> </form> </body> </html> HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.21/29

LomakeServlet.java import javax.servlet. ; import javax.servlet.http. ; import java.io. ; public class LomakeServlet extends HttpServlet { public void dopost(httpservletrequest rq, HttpServletResponse rs) throws IOException, ServletException { String[] q = { "PiiloArvo", "Kentta1", "Kentta2", "Kentta3", "Opinnot", "Valinta", "Tiedosto" }; rs.setcontenttype("text/html"); PrintWriter out = rs.getwriter(); out.println("<html>"); out.println("<title> Vastaanotettiin seuraavaa </title>"); out.println("<body>"); for (int i=0; i<q.length; i++) { out.print("<p> " + q[i] + "= "); out.print(rq.getparameter(q[i])); out.println("</p>"); } out.println("</body></html>"); } // dopost } // class LomakeServlet HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.22/29

Luokka Servlet Rajapinta. Tämän toteuttaa GenericServlet ja HttpServlet (abstrakteja). void init(servletconfig c) Servlettiolion alustus kutsutaan vain kerran; c tulee palvelimelta. void service(servletrequest rq, ServletResponse rs) Servletin kutsu ohjataan ensin tähän metodiin. Muutama muukin metodi. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.23/29

Luokka HttpServlet Metodit erilaisille palvelupyynnöille ( service ). Tästä luokasta tyypillisesti johdetaan omia servlettejä. Seuraavassa rq tyyppiä HttpServletRequest ja rs tyyppiä HttpServletResponse. dodelete(rq, rs): HTTP DELETE -operaatio. doget(rq,rs): HTTP GET. dopost(rq,rs): HTTP POST. doput(rq,rs): HTTP PUT. Muitakin vastaavia on. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.24/29

Luokka HttpServletRequest Paljon erilaisia havainnointimetodeja. getcontenttype() datan tyyppi. getcontentlength() datan pituus. String getparameter(string p) palauttaa lomakkeelta lähetetyn parametrin p arvon. String[] getparameternames() Parametrien nimet. ServletInputStream getinputstream() Binäärinen lukuvirta lähetettyyn dataan. BufferedReader getreader() Sama tekstipohjaisena. Cookie[] getcookies() palauttaa sisääntulevat piparit! getremotehost, getremoteaddr, getremoteuser, getmethod, getservername, getserverport,... HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.25/29

Luokka HttpServletResponse Paljon metodeja. ServletOutputStream getoutputstream() Palauttaa binäärisen lähtevän virran. PrintWriter getwriter() Sama merkkipohjaisena; tällä toteutetaan sivujen kirjoittaminen. setcontentlength, setcontenttype void senderror(int code, String msg) Palauttaa virheilmoitussivun takaisin. void addcookie(cookie c) Asettaa piparin lähtevään virtaan. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.26/29

Luokka Cookie Piparin avulla palvelin voi tallettaa asiakkaaseen tietoa itsestään ja yhteydestään tähän asiakkaaseen. Cookie(String name, String value) Konstruktori, joka luo piparin, jolla nimi name ja arvo value (RFC 2109). Useita ominaisuuksia: kommentti merkityksestä, voimassaoloaika, domain-nimi, URL-polku (mille sivuille palautetaan), arvo, nimi, versionumero ja turvallisuus. boolean getsecure() Onko turvallinen yhteys käytössä? HTTPS tai SSL. Perusajatus on, että pipari lähetetään takaisin vain sinne, mistä se tuli (domain). HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.27/29

Lopuksi 1/2 Servletit ovat www-palvelimessa olevia olioita, joita voidaan kutsua säilyttävät tilansa kutsusta toiseen. Alunperin: käyttö lomakkeiden kautta. JSP: sekoitetaan servlet-koodia sivuihin. Idea: dynaamiset sivut & työn siirtäminen palvelimelle. Piparit toimivat palvelimen muistina. Usein halutaan tallettaa (lomakkeiden) tietoja tietokantaan. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.28/29

Lopuksi 2/2 Servlet applet -keskustelu? Mahdollista soketeilla ja RMI:llä. (Myös HTTP-yhteydellä.) Kehitystä ohjattu RFC-dokumenteilla, mutta eri versioita servlet-ominaisuuksista, html:stä, http:stä,... Tiedostoja on mahdollista lukea servleteillä... mutta se ei ole helppoa. (Alussa mainittu kirja.) Yleinen käytäntö: Lomakkeet voidaan koodata osaksi servlettiä: doget antaa lomakkeen, joka kutsuu dopost:a! HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.29/29