Web-programmering med JSP Løsningsforslag leksjon 4

Like dokumenter
Web-programmering med JSP Løsningsforslag leksjon 3

HØGSKOLEN I SØR-TRØNDELAG

1. Klientside-validering med JavaScript

JavaServer Pages (JSP)

En bedre verden med AJAX

Innføring i bruk av CGI4VB

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Innføring i bruk av CGI4VB

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

ITF Eksamensform: Skriftlig (digital) Dato: 28/

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

Eksamensoppgaver 2014

UNIVERSITETET I OSLO

Oppgave 1. Oppgavenr A B C

INF1000 Eksamen 2014 (modifisert)

JSP. Tilstander og synkronisering

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

1 JSP. 1.1 Innledning. 1.2 JSP og web-tjener. Innhold

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring -

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

5. JavaScript (fra leksjon 5 i faget Webteknikker)

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

HØGSKOLEN I SØR-TRØNDELAG

Webprogrammering høsten 2017

HØGSKOLEN I SØR-TRØNDELAG

IN Notat om I/O i Java

$i < 5 forsettelsesbetingelsen - false => Løkken slutter.

1. Prosessering av informasjon fra klienten

TOD063 Datastrukturer og algoritmer

Oblig 4 Undervisningshefte i grunnleggende JavaScript programmering

Øvingsforelesning 5 Python (TDT4110)

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Oblig 5 Webutvikling. Av Thomas Gitlevaag

EKSAMEN (Konvertert fra en gammel PHPeksamen)

OPPGAVE 5b og 8b Java Kode

1 Introduksjon til web-programmering med JSP

JS: Grunnleggende JavaScript Nybegynner

Øvingsforelesning 5 Python (TDT4110)

LO191D/LC191D Videregående programmering

UNIVERSITETET I OSLO

Videregående programmering 6

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

Dinesh Jeyabalasingam. Oppgavesett 9. Gruppeoppgave 2. Eksamenssett DEL 1. Oppgave 1.1. IF 1 Hvis $a er mindre eller lik $b stemmer

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler

TDT4100 Objektorientert programmering

INF1000 Eksamen 2014 (modifisert)

Oppsummering - Til nå... (1/ )

Webformularer, PHP og databaser

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

INF1010 våren januar. Objektorientering i Java

Endret litt som ukeoppgave i INF1010 våren 2004

JS: Grunnleggende JavaScript

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

TDT4110 IT Grunnkurs Høst 2015

Løse reelle problemer

Leksjon 7. Filer og unntak

Gjennomgang av eksamen H99

Eksamen i Internetteknologi Fagkode: ITE1526

Informasjon Eksamen i IN1000 høsten 2017

Repetisjon. INF gruppe 13

Finne ut om en løsning er helt riktig og korrigere ved behov

IN Seminaroppgaver til uke 11

Løsningsforslag: Avsluttende eksamen i TDT4110/IT1102 Informasjonsteknologi, grunnkurs Tirsdag 10. august :00 13:00

Leksjon 3. Kontrollstrukturer

Hjelpemidler: 4 A4-sider (2 to-sidige ark eller 4 en-sidige ark) med egenproduserte notater (håndskrevne/maskinskrevne)

HØGSKOLEN I SØR-TRØNDELAG

JSP Prosessering av informasjon

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Eksamessett Høst 2009 Robin Sværen og Simen Arvesen

Del 1 En oversikt over C-programmering

UNIVERSITETET I OSLO

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

HØGSKOLEN I SØR-TRØNDELAG

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

INF 1010, vår 2005 Løsningsforslag uke 11

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

UNIVERSITETET I OSLO

API-søk. Innholdsfortegnelse. Kort beskrivelse. Parametere:

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Løse reelle problemer

Programmering Høst 2017

Objektorientert Programmering Ekstraordinær eksamen 2014

EKSAMEN ITF Innføring i programmering Dato: Eksamenstid: 11/

Leksjon 3. Kontrollstrukturer

INF Puslegruppa - Kom i gang med PusleChat

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

Høgskoleni østfold EKSAMEN

Informasjon Prøveeksamen i IN1000 høsten 2018

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

$antall_maaneder =12; Variablene $pris og $antall_maaneder i eksemplet ovenfor har

Transkript:

Web-programmering med JSP Løsningsforslag leksjon 4 Oppgave 1 String adr = request.getremoteaddr() ; out.println(adr); Oppgave 2 Først her kommer HTML-filen med JavaScript et vi lagde i forrige leksjon. Klienten vil først hente denne. Når HTML-skjemaet er fylt ut vil det sendes til JSP en lenger ned. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- Denne koden er kanskje ikke optimal, spesielt ikke formatteringa av html-dokumentet (en burde kanskje satt tekst og forms i en tabell slik at det så litt penere ut). Ang. scriptet, så går dette igjennom hvert tekstfelt sekvensielt, og sjekker om det har en verdi. Hvis dette ikke er tilfelle, gir det ut en alert og setter fokus til det (første) feltet (som er funnet uten verdi). --> <head> <script language="javascript" type="text/javascript"> <!-- function sjekkform(strenger){ if (strenger.navn.value=="") { alert("du må skrive inn navnet") strenger.navn.focus() else if (strenger.adr.value=="" ){ alert("du må skrive inn adressen") strenger.adr.focus() else if (strenger.tlf.value==""){ alert("du må skrive inn telefonnummeret") strenger.tlf.focus() else if (strenger.epost.value==""){ alert("du må skrive inn epost") strenger.epost.focus() return true //--> </script> <title>untitled</title>

</head> <form onsubmit="return sjekkform(this)" action="http://localhost:9090/examples/jsp/ov4/oppg2.jsp" method="post"> <p>navn: <Input type="text" name="navn"></p> <p>adresse <input type="text" name="adr"></p> <p>tlf.nr.: <input type="text" name="tlf"></p> <p>epost: <input type="text" name="epost"></p> <input type="submit" value="ok"> </form> JSP-script et får tak i HTML-elementene med koden under. String navn; String adresse; String tlf; String epost; navn = request.getparameter("navn"); adresse = request.getparameter("adr"); tlf = request.getparameter("tlf"); epost= request.getparameter("epost"); <br> Navn: = navn <br> Adresse: = adresse <br> Telefonnummer: = tlf <br> Epost: = epost Oppgave 3 og 5. Merk at løsningen gir tilbake de verdiene som ble skrevet inn i HTML-skjemaet sammen med en feilmelding, hvis det er snakk om feil input. Dette gjør at brukeren ikke trenger å skrive inn alle feltene på nytt hvis f.eks. kun et felt er feil. Layout en til denne JSP en er dårlig, men det er gjort slik for å gi mest mulig oversikt. String navn; String adresse; String tlf; String epost; boolean feil = false; // henter inn fra HTML-skjema navn = request.getparameter("navn"); adresse = request.getparameter("adr"); tlf = request.getparameter("tlf"); epost = request.getparameter("epost"); //setter alle verdiene til en tom streng hvis de ikke finnes //gjør dette fordi vi skal gi brukeren mulighet kun til å taste inn //de verdiene som ble feil eller ikke ble inntastet. Dette gjør at

// brukeren ikke får se null hvis det er felter som ikke er tastet inn. if (navn==null) navn=""; if (adresse==null) adresse=""; if (tlf==null) tlf=""; if (epost==null) epost=""; // sjekker om HTML-skjemaet er fylt ut riktig if (erstreng(navn) && ergyldigtlf(tlf) && erstreng(adresse) && erstreng(epost)){ <br> Navn: = navn <br> Adresse: = adresse <br> Telefonnummer: = tlf <br> Bosted: = epost else { // dataene var ikke riktige, returnerer feilmelding og HTML-skjema if (!erstreng(navn)){ out.println("<br> Navnet er på galt format"); if (!erstreng(adresse)){ out.println("<br> Adressen er på galt format"); if (!erstreng(epost)){ out.println(" <br> Du må oppgi epost"); if (!ergyldigtlf(tlf)){ out.println("<br> Telefonnummeret er på galt format. Må være 8 siffer"); -- dette HTML-skjemaet skrives tilbake slik at brukeren kan taste inn på nytt, dvs. det har vært feil input. Merk at vi også skriver tilbake verdiene brukeren har tastet inn slik at de feltene som er riktige ikke må skrives inn på nytt -- <form action="test.jsp" method="get"> <p>navn: <Input type="text" name="navn" value="=navn" ></p> <p>adresse: <input type="text" name="adr" value="=adresse"></p> <p>tlf.nr.: <input type="text" name="tlf" value="=tlf"></p> <p>epost: <input type="text" name="epost" value="=epost"></p> <input type="submit" value="ok"> </form> ;//else -- Her kommer funksjoner --! private boolean erstreng(string streng){ if (streng!= null &&!streng.equals("")){ return true; else { ; private boolean ergyldigtlf(string tall){ if (tall!= null){ try{ int tmp = Integer.parseInt(tall); //alt har gått vel, hvis ikke hopper vi

// til catch if (tmp >= 10000000 && tmp < 100000000) return true; catch(numberformatexception e) { //ikke tall, returnerer false ; ; Oppgave 4 Denne oppgaven blir veldig lik oppgave 3. Forskjellen ligger jo kun i at vi også må returnere JavaScript-kode sammen med et HTML-skjema og feilmelding hvis input er feil. Merk at JavaScript-koden ikke sjekker at telefonnummeret er på 8 siffer. Det er det kun JSP-koden som gjør. Du vil derfor om du kun oppgir 6 siffer i telefonnummeret ikke få feilmelding fra JavaScript-koden, men fra JSP en på tjenersiden. Sørg for at du forstår forskjellen her! Se på kildekoden i nettleseren. Som du ser vil koden under bli ganske innfløkt. Det hadde nok vært mer oversiktlig å dele koden opp i flere metoder. String navn; String adresse; String tlf; String epost; boolean feil = false; // henter inn fra HTML-skjema navn = request.getparameter("navn"); adresse = request.getparameter("adr"); tlf = request.getparameter("tlf"); epost = request.getparameter("epost"); //setter alle verdiene til en tom streng hvis de ikke finnes //gjør dette fordi vi skal gi brukeren mulighet kun til å taste inn //de verdiene som ble feil eller ikke ble inntastet. Vi gjør derfor dette //fordi ikke brukeren skal få se null hvis det er felter som ikke er tastet inn. if (navn==null) navn=""; if (adresse==null) adresse=""; if (tlf==null) tlf=""; if (epost==null) epost=""; // sjekker om HTML-skjemaet er fylt ut riktig if (erstreng(navn) && ergyldigtlf(tlf) && erstreng(adresse) && erstreng(epost)){ <br> Navn: = navn <br> Adresse: = adresse <br> Telefonnummer: = tlf <br> Bosted: = epost else { // dataene var ikke riktige, returnerer feilmelding og HTML-skjema <head> <script language="javascript" type="text/javascript"> <!-- function sjekkform(strenger){

if (strenger.navn.value=="") { alert("du må skrive inn navnet") strenger.navn.focus() else if (strenger.adr.value=="" ){ alert("du må skrive inn adressen") strenger.adr.focus() else if (strenger.tlf.value==""){ alert("du må skrive inn telefonnummeret") strenger.tlf.focus() else if (strenger.epost.value==""){ alert("du må skrive inn epost") strenger.epost.focus() return true //--> </script> </head> if (!erstreng(navn)){ out.println("<br> Navnet er på galt format"); if (!erstreng(adresse)){ out.println("<br> Adressen er på galt format"); if (!erstreng(epost)){ out.println(" <br> Du må oppgi epost"); if (!ergyldigtlf(tlf)){ out.println("<br> Telefonnummeret er på galt format. Må være 8 siffer"); -- dette HTML-skjemaet skrives tilbake slik at brukeren kan taste inn på nytt, dvs. det har vært feil input. Merk at vi også skriver tilbake verdiene brukeren har tastet inn slik at de feltene som er riktige ikke må skrives inn på nytt -- <form onsubmit="return sjekkform(this)" action="oppg4.jsp" method="get"> <p>navn: <Input type="text" name="navn" value="=navn" ></p> <p>adresse: <input type="text" name="adr" value="=adresse"></p> <p>tlf.nr.: <input type="text" name="tlf" value="=tlf"></p> <p>epost: <input type="text" name="epost" value="=epost"></p> <input type="submit" value="ok"> </form> ;//else -- ************************** Her kommer metoder *************************** --! private boolean erstreng(string streng){ if (streng!= null &&!streng.equals("")){ return true;

else { ; private boolean ergyldigtlf(string tall){ if (tall!= null){ try{ int tmp = Integer.parseInt(tall); //alt har gått vel, hvis ikke hopper vi // til catch if (tmp >= 10000000 && tmp < 100000000) return true; catch(numberformatexception e) { //ikke tall, returnerer false ; ; Oppgave 5 Se oppgave 3. Oppgave 6 @ page import="java.util.enumeration" Enumeration enum = request.getparameternames(); // henter inn alle parameternavnene i forespørselen fra klienten // løkka går igjennom alle disse og henter/skriver ut verdien for hver parameter. while (enum.hasmoreelements()){ String paramnavn = (String) enum.nextelement(); String paramverdi = request.getparameter(paramnavn); out.println(paramnavn +" : "+paramverdi +"<br>"); //while Oppgave 7 Dette gjøres ved å legge til parametrene på slutten av URL en. Denne kan da se slik ut: http://localhost/examples/mine/oppg5.jsp?navn=tomas&epost=tomash@idb.hist.no&tlf=2386723&adr=bortivek kistan