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

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Bygg web på Opplæring Presentasjon Idium AS Bygg web på Opplæring.
Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
GoOnline publisering Hvordan komme i gang med GoOnline. Denne presentasjonen tar deg steg for steg gjennom oppsett av nettsted med bruk av GoOnline Proffesional.
Sekvensdiagram En sekvens viser hvordan objekter samarbeider om en oppgave Diagrammet viser hvem som har kontrollen til enhver tid Det spesifiserer nøyaktig.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
JSP presentasjon Arild Strømhylden NTNU 26 June 2014.
Programmering i ActionScript - hva er det, og hvordan undervise?
Java database persistence framework.  SELECT by FROM postnr AS p WHERE ( SELECT DISTINCT postnr FROM addr AS a WHERE user.adrId = a.Id ) = p.postnr;
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering i PHP del 2
IS-102 Klassedefinisjoner
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
© Lars-Erik Kindblad.  Et platformuavhengig verktøy for å automatisere build prosesser.  Støttes og drives av Apache Software Foundation.  Kommer ferdig.
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
Kapittel 24 (Big Java 2.utg) Kommunikasjon i nettverk.
Kapittel 11 Rekursjon Å tenke rekursivt Rekursjon er ein programmeringsteknikk der ein metode kallar seg sjølv for å fullføre ei oppgåve For å kunne.
EQS prosessteikning Rettleiing for deg som skal bruke prosesskart-editor i EQS.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Arrayer og form(ularer) (Kapittel 4). 2 Mål  Forstå assosiative og superglobale arrays  Kunne behandle webformularer (forms)  Kjenne forskjellen.
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Høgskolen i Oslo Webprogrammering Filbehandling i PHP.
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Webprogrammering Skjema i HTML og PHP.
Publisering på verdensveven Kursdag 2 VÅFF, våren 2002.
Publisering på verdensveven Kursdag 1 VÅFF, våren 2002.
Publisering på verdensveven Kursdag 3 VÅFF, våren 2002.
Skjema/Forms HTML II IT og læring 2/20 november 2001.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Dagens tema: roller og tilganger i ePhorte
Objektorientert utforming In 140 Sommerville kap. 12.
Minoritetsspråklige søkere til videregående opplæring skoleåret
An approach to multimodal and ergonomic nomadic services Marco Riva og Massimo Legnani.
Kapittel 6 Objektorientert design. 6.1 Programvareutvikling Skriving av kode ein liten del av arbeidet med å lage programvare Fire hovudaktivitetar Kravspesifikasjon.
Introduksjon I tillegg til autentisering, bør/skal også ein sikker kanal tilby garanti for meldings- integritet og konfidensialitet.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF160 Videregående Programmering Hausten Om kurset Lærebok: Lewis & Loftus: Java software solutions, 4.utgåve utgåve inneheld nye, viktige.
Protokoller Pensum: Olsen, kap. 5 og 6. Kommunikasjonsprotokoll Rutiner for å administrere og kontrollere oversending av data Telefonsamtale (”Hallo”,
Upload av bildefiler Utdrag fra ImageIn Ved Kirsten Klæbo Tirsdag 25/11-03.
HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)
Inf1000 (Uke 5) Arrayer, filer og tekst
Nynorsk fagskriving Orden i teksta.
Eksempeltekst høst 2014 Når du skal svare på oppgaven:
Kapittel 2 Data og uttrykk. 2.1 Strengar Ein tekststreng er eit objekt i Java, definert av String klassen Meir om denne klassen i kapittel 3 Vi bruker.
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Kapittel 23 (Big Java 2.utg) Tråder. Kjøring av tråder Ein tråd er ein del av eit program som blir eksekvert uavhengig av andre deler av programmet Vi.
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
LMS i en læringskontekst Svein Ove Lysne Høgskolen Stord/Haugesund
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Kapittel 10 Exceptions Handtering av exceptions Ein exception er eit objekt som representerer ein feil eller eit unntak Exceptions blir kasta av.
Noen inntrykk fra studieåret 2001 Tanker rundt året som var…
Reinsing av vatn på Leikanger. Om oss. Me er fire elevar i 10a på Leikanger Ungdomsskule. Gruppa består av Halvard, Amalie, Hans Christer og Astrid. Me.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
Naaman Ein dag sa jenta til matmor si: «Om berre husbonden kunne koma til profeten i Samaria, skulle nok han fri han frå hudsjukdomen.» 2.Kongebok.
Kurs for valfunksjonærar Kyrkjevalet Innhald Velkomen til kurs! Nytt ved kyrkjevalet i 2015 Kursmateriell: Valhandbok Røysting på valtinget  Utstyr.
Vel digital postkasse på Noreg.no
Lær å logge inn til offentlege tenester med BankID på mobil
Lær å logge inn til offentlege tenester med BankID
Lær å logge inn til offentlege tenester med BankID på mobil
Lær å logge inn til offentlege tenester med MinID
Vel digital postkasse på Noreg.no
Lær å oppdatere kontaktinformasjonen din i kontaktregisteret
Lær å opprette den elektroniske ID-en MinID
Vel digital postkasse på Noreg.no
Utskrift av presentasjonen:

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 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

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 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

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

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

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

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”

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)

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

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...

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

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)

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

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” 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

Kap 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

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

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

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