Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.

Slides:



Advertisements
Liknende presentasjoner
Trykk på mus eller tastatur for neste bilde…
Advertisements

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.
Tabeller av objekter Klassen ArrayList
Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Brukerveiledning for gruppeledere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Opplevd kvalitet og målt kvalitet: Brukerundersøkelser: Målgruppe: - brukere av hjemmetjenesten (18 indikatorer) - beboere på inst. (24.
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?
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Høgskolen i Oslo Webprogrammering Introduksjon til Java-scripting.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
© Lars-Erik Kindblad.  Et platformuavhengig verktøy for å automatisere build prosesser.  Støttes og drives av Apache Software Foundation.  Kommer ferdig.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
Mars 2008 Ole Husby Nettlesere. Nettlesere finnes På Windows-PC-er på Mac’er på Linux på mobiltelefoner og forskjellige andre steder også.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
Hovedprosjekt 44 Webrapporteringssystem med ASP
Releasedokumentasjon versjon 6.1 – Vedlegg –Begrenset tilgang til brukere uten sertifikat Hvis følgende innstillinger er satt for leverandøren:
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
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.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Intro til php - Uke3.2 - Ronny Mandal Introduksjon til 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å.
Høgskolen i Oslo Webprogrammering Java-scripting 2 Klientvalidering.
En enkel introduksjon Geir H. Hansen & Martin Setek SUAF-SO USIT jQuery.
Publisering på verdensveven Kursdag 2 VÅFF, våren 2002.
Publisering på verdensveven Kursdag 1 VÅFF, våren 2002.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
ESøknad - Et webbasert system for elektronisk innlevering av søknader om forskningsmidler Kort presentasjon av systemet beregnet på prosjektledere/forskere.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
Jæger: Robuste og sikre systemer INF150 Programmering Kapittel 2: Problemløsning Kapittel 3.1 og 3.2.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
ESøknad - Et webbasert system for elektronisk innlevering av søknader om forskningsmidler Kort presentasjon av systemet beregnet på prosjektledere/forskere.
ESøknad - Et webbasert system for elektronisk innlevering av søknader om forskningsmidler Kort presentasjon av systemet beregnet på prosjektledere/forskere.
ESøknad - Et webbasert system for elektronisk innlevering av søknader om forskningsmidler Kort presentasjon av systemet beregnet på prosjektledere/forskere.
ESøknad - Et webbasert system for elektronisk innlevering av søknader om forskningsmidler Kort presentasjon av systemet beregnet på prosjektledere/forskere.
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21 Web-programmering med JavaServer Pages Forskjellige måter å programmere for webside 2-3 Servleterside 4-6 Hva består JavaServer Pages (JSP) av? side 7-12 Å lese inn data fra brukerenside Datakontroll på klientsiden med JavaScriptside 19 JSP-sider som kommuniserer med databaserside Å lagre tilstandsinformasjonside Å programmere cookiesside 28 Å programmere med sesjonsobjekterside Problemet med oppdatering av siderside 31

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 2 Å søke etter hoteller på Internett? •Du skriver inn navnet på en by og får en liste over mulige hoteller i retur. •Du sjekker kildekoden og finner hotellnavnene i klartekst. •Hvorfor inneholder ikke kildekoden programlogikk som søker etter hoteller i en database? •Svaret er at HTML-koden er spesiallaget: –Web-tjeneren mottar din forespørsel om hoteller i en bestemt by, sender forespørselen til et program som søker i databasen, og genererer så HTML-kode med passende hoteller. –Denne HTML-koden sendes til klienten som svar på forespørselen. •Dette kapitlet handler om å lage slike programmer.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 3 Forskjellige måter å programmere for web •Dynamikk på klientsiden, i klientens nettleser –En applet er et program som lastes ned til nettleseren i tilknytning til en HTML- side •Nedlastingen tar noe lenger tid enn normalt •Nettleseren varsler i statuslinjen om at Java startes opp •Til gjengjeld får brukeren en side med langt større funksjonalitet enn det en statisk HTML-side kan tilby –Ulike scriptspråk har gradvis gjort det mulig å lage enkel dynamikk uten at det går på bekostning av nedlastingstiden. –Brukeren kan lese kildekoden til disse scriptene. •Dynamikk på tjenersiden –Brukeren fyller ut et skjema og trykker på Send-knappen. –Dataene sendes til tjenermaskinen der de blir behandlet av et program. –Denne behandlingen kan for eksempel være det å lage en spesielt tilpasset HTML- side som sendes tilbake til klienten. –Vi bruker JavaServer Pages (JSP) til å lage programmet på tjenersiden. JSP bygger på noe som heter servleter. •Programvare –Du trenger en web-tjener som støtter servletter og JSP –Du trenger den tilhørende online API-dokumentasjonen

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 4 Servleter En servlet er et Java-objekt som kjører i en web-tjener. init() service()destroy() Servlet-objektet opprettes og initieres senest første gang en klient etterspør siden. Meldingen service() sendes til servlet-objektet hver gang en klient etterspør siden Servlet-objektet er ute av verden fordi web-tjeneren er stoppet, eller annen grunn. objektet er initiert jobber død service()

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 5 Servlet-objektet •Alle klientene arbeider mot det samme servlet-objektet. •Eventuelle objektvariabler kan derfor bli oppdatert av flere forskjellige klienter. •Metoder som behandler objektvariabler bør derfor være synkroniserte (synchronized i metodehodet) –Eksempelvis bør den synkroniserte klassen java.util.Vector brukes i stedet for den usynkroniserte klassen java.util.ArrayList. •En pool av tråder blir laget når en servlet initieres. –En klient som etterspør en servlet (egentlig etterspørres servletens service()-metode) vil få tildelt sin egen tråd. –Tråden leveres tilbake til poolen etter bruk. –Hvis en servlet etterspørres, og tråd-poolen er tom, må klienten vente, eventuelt kan web-tjeneren være satt opp/laget slik at den utvider poolen. –Ved å bruke en pool av tråder unngår vi ressurskrevende initiering av tråder hver gang en etterspørsel kommer.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 6 Et eksempel på programmering av tjenersiden Løs oppgavene side Et eksempel på tjenerside-programming Tidspunkt for nedlasting: Thu May 30 11:35:00 CEST 2002 public class EnkelServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { …se programliste 21.1… } kildekode hos web-tjeneren forespørselen fra klienten genererer denne HTML-koden nettleseren viser fram siden

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 7 JavaServer Pages (JSP) •En jsp-fil inneholder HTML-kode med elementer av Java-kode •Brukeren etterspør jsp-filen direkte –Hvis dette er første etterspørsel etter denne filen, vil den bli konvertert til en servlet. –Servleten kompileres og startes automatisk. –Resultatet av servletens service()-metode er en HTML-side som sendes til klienten og som der blir presentert i nettleseren. •En jsp-side er dermed en HTML-side som er laget av et servlet-objekt basert på en jsp-fil. <!-- Tid.jsp E.L !> Et eksempel på tjenerside-programmering Tidspunkt for nedlasting:

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 8 Hvorfor JSP? •Bare for å slippe å skrive out.print() rundt HTML-kodene? •Nei! •HTML er presentasjon. •En jsp-fil vil i hovedsak inneholde HTML. •Web-designere lager HTML-kode. •Java-programmerere lager Java-klasser som beskriver det problemområdet som vi arbeider med. •Bare små kodesnutter med Java trengs for å lenke jsp-filen til Java- klassene. •Imidlertid, vi jobber med programmering, ikke webdesign. •Derfor er jsp-filene i denne boka litt utypiske, de innholder relativt lite HTML. Løs oppgaven side 763.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 9 Ferdigdefinerte objekter og uttrykk i JSP •Ferdigdefinerte objekter –request, type: HttpServletRequest –response, type: HttpServletResponse –out, type: PrintWriter –session, type: HttpSession •JSP-uttrykk –Omsluttes av –Eksempler: Tidspunkt for nedlasting: // Ikke semikolon! Tjeneren regner ut 17 * 7 og får Klientmaskinen er:

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 10 JSP Scriptleter Her kommer fem tilfeldige tall i intervallet [1, 100]: <% int sum = 0; for (int i = 0; i < 5; i++) { int tall = (int) (100 * Math.random() + 1); out.println(" " + tall); sum += tall; } out.println(" " + "Summen er lik " + sum); %> Her kommer fem tilfeldige tall i intervallet [1, 100]: <% int sum = 0; for (int i = 0; i < 5; i++) { int tall = (int) (100 * Math.random() + 1); %> <% sum += tall; } %> Summen er lik Java-kode omsluttet med, samme eksempel på to måter: Eksempel på utskrift hos klienten: Her kommer fem tilfeldige tall i intervallet [1, 100]: Summen er lik 230

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 11 JSP-deklarasjoner •Lokale variabler deklareres inne i scriptleter. Hver klient får sitt eget sett av disse. •Variabler deklarert utenfor scriptleter blir objektvariabler (det vil si at de er felles for alle klienter). Slike variabler må omsluttes med // objektvariabel, felles for alle klienter Antall = // lokal variabel, hver klient sin variabel Teller = –Første gang servleten aksesseres får vi denne utskriften i nettleservinduet: Antall = 1 Teller = 1 –Neste gang ser det slik ut: Antall = 2 Teller = 1 –Og videre: Antall = 3 Teller = 1 –Hver gang servleten stopper, nullstilles variabelen antall.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 12 Kommentarer og direktiver •Vanlige Java-kommentarer i Java-kode •JSP-kommentarer i JSP-kode •HTML-kommentarer for kommentarer som skal sendes til nettleseren •Et JSP-direktiv brukes til å styre på hvilken måte servleten blir laget. •Et direktiv omsluttes av. •page-direktivet: •include-direktivet medfører at kildekoden i filen som inkluderes blir satt inn på den plassen der direktivet står. Dette skjer før servleten lages. Eksempel: Løs oppgave 1 og 2 side 767.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 13 Å lese inn data fra brukeren Et input-felt Skriv navnet ditt:

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 14 Hva skjer etter at brukeren har trykket på Send-knappen? Tilbakemelding Tilbake LesNavn.jsp Tilbakemelding Hei på deg, Ole Olsen! Tilbake kildekode på klientsiden

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 15 Parameternavn og -verdi String navnet = request.getParameter("navn"); parameternavn parameterverdi

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 16 Feilmelding på samme side som input-feltet <!-- Navn2.jsp E.L !> Et input-felt med feilkontroll Skriv navnet ditt: <% String navnet = request.getParameter("navn"); if (navnet != null) { // OBS! Første gang siden lastes ned er navnet lik null navnet = navnet.trim(); if (navnet.equals("")) out.println("Du må skrive navnet ditt!"); else out.println("Hei på deg, " + navnet + "!"); } %>

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 17 Hva om vi hadde brukt ”get” i stedet for ”post”? •I HTML-filen skriver vi: •Dataene brukeren skriver inn, hektes på URL’en slik at de vises i nettleserens adressefelt. •Det er en øvre grense på antall tegn. Vanligvis er det ingen grunn til å bruke ”get” i stedet for ”post” når data skal sendes til tjeneren. •Sensitive data skal alltid sendes via ”post”.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 18 Vis programliste 21.4 og 21.5, side Gjør oppgave 1, side 775. Et eksempel med mange forskjellige HTML-elementer

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 19 Datakontroll på klientsiden med JavaScript •Et supplement til datakontroll på tjenersiden. –Av effektivitetsgrunner bør data kontrolleres før de sendes til tjeneren. –Ikke en erstatning for datakontroll på tjenersiden. –Data skal alltid kontrolleres på tjenersiden. •HTML-koden utvides med script-kode. •JavaScript er de facto-standarden for script-programmering på klientsiden. Et input-felt med JavaScript function kontrollerData() { if (window.document.navnInput.navn.value == "") alert("Skriv navnet ditt!"); else window.document.navnInput.submit(); } Skriv navnet ditt: <% String navnet = request.getParameter("navn"); if (navnet != null) { // OBS! Første gang siden lastes ned er navnet lik null navnet = navnet.trim(); if (navnet.equals("")) out.println("Du må skrive navnet ditt!"); else out.println("Hei på deg, " + navnet + "!"); } %>

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 20 Databaser JSP-kode på tjenersiden, se neste lysbilde. Enkel databasetest Personer registrert i databasen Personnr Fornavn Etternavn 100 OLE HANSEN 101 ANNE GRETHE ÅS 102 JONNY HANSEN

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 21 PersonTabell.jsp Enkel databasetest Personer registrert i databasen Personnr Fornavn Etternavn <% Connection forbindelse = null; Statement setning = null; try{ String dbDriver = "oracle.jdbc.driver.OracleDriver"; String dbNavn = Class.forName(dbDriver); forbindelse = DriverManager.getConnection( dbNavn, ”brukernavn", ”passord"); setning = forbindelse.createStatement(); String sql = "select * from person"; ResultSet resSet = setning.executeQuery(sql); while (resSet.next()) { out.print(" " + resSet.getString("persnr") + " "); out.print(" " + resSet.getString("fornavn") + " "); out.println(" " + resSet.getString("etternavn") + " "); } } catch (Exception e) { out.print("Feil ved databasetilkobling: " + e); } finally { try { if (resSet != null) resSet.close(); } catch (Exception e) { out.print("Feil ved lukking av resultatsett: " + e); } finally { try { if (setning != null) setning.close(); } catch (Exception e) { out.print("Feil ved lukking av setningsobjekt: " + e); } finally { try { if (forbindelse != null) forbindelse.close(); } catch (Exception e) { out.print("Feil ved lukking av databseforbindelse: " + e); } %>

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 22 En web-applikasjon som jobber mot en database Bruker databasewrapper- fabrikken fra kapittel 20.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 23 Rekkefølgen de ulike filene etterspørres i Vis program- liste 21.8, side Navneregister.jsp BehandleValg.jsp Slett.jspPersonForm.jsp NyPerson.jspEndrePerson.jsp form action include persnr = ”ikke definert” fornavn og etternavn lik blank behandlendeFil = ”NyPerson.jsp” include persnr, fornavn og etternavn som gitt for person behandlendeFil = ”EndrePerson.jsp” form action slettnyendre Gjør oppgave 1 og 2 side 781.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 24 Å lagre tilstandsinformasjon •HTTP er en tilstandsløs protokoll. –Den samme klienten kan sende mange forespørsler til web-tjeneren. –Web-tjeneren behandler hver eneste forespørsel helt uavhengig av de andre. –Web-tjeneren husker ingenting. •Hvordan overføre data fra en web-side til en annen? –Bruke send-knappen og så tolke request-objektet –Bruke skjulte felt –Lagre data, enten på klientsiden (cookies) eller på tjenersiden (sesjonsobjekt)

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 25 Cookies – en oversikt •Lagres på klientsiden •Brukes ofte for personlig informasjon, f.eks. navn og adresse •Håndteres av nettleseren •Maks 4kb per cookie •Maks 20 cookies per nettsted •Maks 400 cookies per nettleser •Hvis du ikke har konfigurert nettleseren til ikke å akseptere cookies, vil du helt sikkert finne en mengde cookies på din datamaskin. Søk etter kataloger med navn cookies og filer med navn cookies.*. •Cookies lar web-tjeneren gjenkjenne deg, men ikke identifisere deg. •Programmer på web-tjenere bør ikke avhenge av at cookies brukes på klientsiden. •Cookies bør være et tilbud til klienten, ikke den eneste muligheten.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 26 Sesjonsobjekter – en oversikt •Lagres på tjenersiden •En klient tildeles en sesjonsidentifikasjon når sesjonen starter, det vil si når kontakt mellom tjener og klient opprettes. •Dataene lagres i et sesjonsobjekt på tjenersiden, mens sesjonsidentifikasjonen normalt lagres hos klienten som en cookie. •Som vi skal se senere, det er mulig å bruke sesjonsobjekter uten å bruke cookies. •Et eksempel som bruker cookies og sesjonsobjekt: 1.Du logger deg på en nettbutikk for å bestille pizza og brus, og dermed får du tildelt en sesjonsidentifikasjon som lagres på din maskin i en cookie. 2.Samtidig tildeles du et sesjonsobjekt hos web-tjeneren. 3.Hver gang maskinen din ber om en ny fil fra web-tjeneren sendes sesjonsidentifikasjonen sammen med URL-en. 4.Dersom du gjør bestillinger, lagres de i det tilhørende sesjonsobjektet hos tjeneren. 5.Dersom web-tjeneren allerede har lagret navn, telefon og leveringsadresse i cookies på maskinen din, blir du bedt om å bekrefte at dette er riktig før ordren bekreftes. 6.Eventuelt skriver du inn disse opplysningene, og de blir automatisk lagret i cookies slik at du slipper å skrive dem inn ved en senere anledning. 7.Dersom du skulle glemme hele bestillingen og kanskje nøye deg med det du måtte ha i kjøleskapet, vil sesjonsobjektet bli slettet hos web-tjeneren etter en gitt tid.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 27 Å programmere cookies Vis programliste 21.9, side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 28 Å programmere med sesjonsobjekter Vis programliste 21.10, side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 29 En liten bokhandel Vis program- liste side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 21, side 30 Problemet med oppdatering av sider •Last ned HTML-filen fra programliste 21.4 i din nettleser. •Fyll inn data, trykk Send. •Tilbakemelding: ”Din evaluering er lagret.” •Trykk Oppdater-knappen i nettleseren. •Dataene lagres en gang til. •En enkelt bruker kan fylle datafilen med likelydende evalueringer. •Kan løses ved å bruke et sesjonsattributt. –Setter attributtet etter at dataene er lagret (første gang). –Før lagring kontrollerer vi om det er satt. –Hvis det er satt, lagrer vi ikke på nytt. •Tilsvarende problemstilling gjelder oppdatering av databaser. Løs oppgavene side 796.