1 / 18

Kapittel 25 (Big Java 1.utg)

Kapittel 25 (Big Java 1.utg). Java Server Pages og Servlets. Oversikt. Når ein weblesar ber om ei html-side frå ein webserver, vil serveren finne korrekt fil og returnere denne Statisk innhold – det same blir returnert kvar gong, heilt til den aktuelle sida blir erstatta med ei ny

odele
Download Presentation

Kapittel 25 (Big Java 1.utg)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Kapittel 25 (Big Java 1.utg) Java Server Pages og Servlets

  2. Oversikt • Når ein weblesar ber om ei html-side frå ein webserver, vil serveren finne korrekt fil og returnere denne • Statisk innhold – det same blir returnert kvar gong, heilt til den aktuelle sida blir erstatta med ei ny • Websider med dynamisk innhold er ofte meir interessant • Innholdet er avhengig av kven som spør, og av input frå den som spør • Vi skal sjå på korleis vi kan lage dynamiske websider ved hjelp av Java Server Pages (JSP) og servlets

  3. JSP • For å bruke JSP treng vi ein webserver som er integrert med ein JSP Container • Dette er innebygd i NetBeans • Vi bruker eksemplet med tid og dato frå kap. 25 i Big Java, og starter med ei svært enkel JSP-side som viser tidspunkt • Vi lagar web-applikasjon i NetBeans • JSP-sida er nesten som ei vanleg html-side, bortsett frå instruksjonen <%= new java.util.Date() %> • Denne instruksjonen blir eksekvert kvar gong sida blir sendt til ein weblesar, og verdien av uttrykket blir sett inn. På denne måten blir korrekt tid vist

  4. JSP • For å deploye (ta i bruk?) sida bruker vi F6 (run main project) i NetBeans • Instruksjonane i punkt 1-5 på side 1005 blir automatisk utført av NetBeans • Kjekt for oss, men vi mister litt kontroll med strukturen og kva som foregår • JSP-sida blir lagt på rett plass i katalogstrukturen • Web-serveren starter • Ein weblesar peikar på rett adresse for å lese JSP-sida • JSP-containeren les JSP-sida og lagar ei html-side av denne • Vanlege html-tags blir ikkje endra • JSP tags på formen <%= ... %> blir berekna og konvertert til tekst, som blir sett inn • Det blir gjort tilsvarande med andre typer JSP tags

  5. JavaBeans • Vi kan dytte inn masse java-kode i ei JSP-side, og på den måten få ei blanding av html-kode som styrer korleis innholdet skal presenterast, og programlogikk som finn ut kva innholdet skal vere • Dette bør vi unngå! • Vi treng input frå to ekspertar, ein webdesigner og ein programmerar • Webdesigneren kan mykje om korleis vi kan presentere ting på web • Programmeraren kan mykje om korleis vi skal skaffe fram resultata som skal visast • Om vi samlar alt i ei stor JSP-side, vil begge få problem med å gjere det dei er flinke til • Vi bør skille presentasjon og programlogikk

  6. JavaBeans • Vi bør utføre alle berekningar, utover det heilt trivielle, i eigne Java-klasser • Vi kan lage ein eller fleire JavaBeans i tilknytning til JSP-sida • I prinsippet kan alle omtrent alle Java-klasser vere JavaBeans • Men: Klassen må ha ein public konstruktør som ikkje tar argument • Ein JavaBean skal vere ein klasse som viser eigenskaper (properties) • Navnekonvensjoner <jsp:useBean id=“” class=“”/> <jsp:setProperty name=“” property=“” value=“”/> <jsp:getProperty name=“” property=“”/>

  7. JavaBeans • Vi går gjennom eksemplet med formattert tid i NetBeans • Pass på å vere nøyaktig! • Små syntaksfeil kan føre til feilmeldingar det ikkje alltid er like enkelt å forstå • Sjølv om dette er eit enkelt og lite eksempel, illustrere det korleis vi kan splitte presentasjon og java-kode • I større prosjekt er dette svært viktig for å holde orden på ting • Lottery-eksemplet viser at det ikkje alltid er like lett å få til eit fullstendig skille mellom berekningar og presentasjon • Mogleg løysing: to JavaBeans, ein “computational” og ein “formatting”

  8. Request parameter • Neste steg mot ein meir fullstendig web-applikasjon er å få input frå brukaren • Vi gjer ei enkel utviding av FormattedTime-programmet, der vi får brukaren til å skrive inn namnet på ein by • Vi sjekkar tidssona til denne byen, og finn på den måten tida der brukaren er, ikkje der serveren er • Vi treng eit html-skjema med tekstfelt og trykknapp, og vi må få tak i det brukaren har skrive (pluss at vi må registrere knappetrykket)

  9. Request parameter • Vi bruker klassen TimeZone frå java-biblioteket • Statisk metode getAvailableIDs() returnerer eit String-array • Vi sjekkar bynavn frå input mot bynavna i dette arrayet • Ved match finn vi rett tidssone, og vi kan returnere lokal tid til brukaren • Vi lagar ein JavaBean som tar seg av dette

  10. Request parameter • I html-skjemaet må vi gi URL’en til programmet som skal ta imot input frå brukaren (action-attributten) • JSP-sida får tak i input ved å kalle getParameter()-metoden hos request-objektet med namnet på inputfeltet som argument • Parameterverdien blir sendt vidare til bønna som skal finne rett tidssone • Vi lagar web-applikasjon nr. 3 ...

  11. html skjema • Vi har sett eit enkelt html-skjema med tekstboks og trykknapp • Andre element: • Passordfelt – tekst som brukaren skriv inn blir vist som * eller liknande • Tekstområde – for å ta inn meir enn ei linje med tekst • Radio buttons – når brukaren må velge eit element av fleire • Check boxes – når brukaren kan velge fritt mellom element (ingen, eit eller fleire) • Selection lists – tilsvarer comboboks • Skjulte felt – kan brukast for å holde styr på sesjoner • Vi bør bruke andre teknikkar til dette • Alle felt blir plassert inne i skjemaet • form-tag • action-attributt gir URL til JSP’en som skal behandle data • method-attributt bør vere POST, sidan GET har avgrensa lengde

  12. Sesjoner • I mange tilfelle har vi bruk for å ta vare på informasjon gjennom ein sesjon – ein serie med requests frå ein weblesar til ein webserver • Handlekorg – når du legg til ei ny vare i handlekorga, veit programmet kva du har lagt til frå før • I JSP er dette enkelt, vi legg attributten scope=“session” til bønna • Vi får ei Java-bønne som bruker det same objektet så lenge henvendelsane kjem frå den same weblesaren • Kvar ny brukar fører til at eit nytt objekt blir oppretta • Så langt har vi hatt page scope, der eit nytt objekt blir oppretta for kvar ny henvendelse (request)

  13. Sesjoner • Vi gjer ei ny lita endring av programmet som viser tid • Brukaren kan legge til fleire byar, og få vist ei liste av byar og deira lokaltid • For å ta vare på informasjon om det brukaren tidlegare har spurt om, bruker vi session kontroll • Web-applikasjon nr. 4 i NetBeans

  14. Fordeling av oppgåver • I kap 25.6 blir det forklart korleis vi kan fordele oppgåve på ulike JSP-sider • Basert på input er det aktuelt å vise ulike sider • Ei side dersom brukaren skriv inn ein by der vi finn tidssone • Ei anna side om vi ikkje finn tidssone • scope=“request” • <jsp:forward page=“url”/> • <% ... %> rundt Java-kode • JSP-sida med forward-direktivet blir ikkje vist • Dei aktuelle JSP-sidene har tilgang til requesten og bønna på grunn av scope-attributten • Test på isAvailable()-metoden i bønna

  15. Kap 25.7 3-lags applikasjon • Dette er sjølvstudium, vi går raskt gjennom hovudinnholdet • I klartekst: du kan få spørsmål om dette på eksamen! • Applikasjonen er delt i 3 lag: • Presentasjonslag: Weblesaren • Forretningslogikk: JSP og Java-bønner • Datalagring: Database • Viktig forskjell frå 2-lags modell • Bruk av xml for å lagre konfigurasjonsparameter • JSP-tags for å få tak i desse • Eigen klasse for å styre databasekobling

  16. Servlets • Java servlets er alternativ til JSP og JavaBeans • Servlets skiller ikkje så tydeleg mellom presentasjon og berekningar/Javakode • Det blir anbefalt å bruke hovudsakleg JSP som teknologi for å lage web-grenesnitt • Når bør vi bruke servlets: • Når resultatet av henvendelsen ikkje er html, f eks binære data som eit bilde eller ei fil for nedlasting • Dessutan: JSP-sider blir til servlets ved kompilering, så det kan vere lurt å vite litt om servlets

  17. Servlets • Bruk av instansvariable og statiske metoder i servlets • Servlet-containeren oppretter kun eit servlet-objekt • Om fleire henvendelser kjem samtidig blir dei kjørt samtidig i kvar sin tråd • Alle vil dele same objekt, og dermed eventuelle instansvariable • Instansvariable kan dermed berre brukast for informasjon som er felles for alle henvendelsane • Ved å bruke statiske metoder unngår vi problem • Lokale variable (inne i metodene) er OK, sidan kvar tråd har sin eigen kopi av metoden, og dermed eventuelle lokale variable

  18. Servlets • JSP – sider blir kompilert til servlets • Ved første request • Ved request etter endring • jsp –direktiv og tags blir gjort om til Java-kode • Vi gir oss her med web-applikasjoner • Stoffet dukkar opp igjen med full tyngde i seinare kurs

More Related