Installasjon Først må du installere JDK på systemet ditt. Importer deretter dette prosjektet til IntelliJ. Du kan importere den fra git ved å klone/laste ned fra GitHub ved å bruke lenken: https://github.com/kristiania-pgr203-2021/pgr203-exam-sani-bagh.git. Eller du kan laste ned prosjektet med alle filene som en zip-fil og pakke den ut.
Etter at du har åpnet prosjekt load maven project. Da Åpne Maven -> Lifesycle -> og kjør Clean etter det kjør Package for å bygge opp jar fil. Når jar fil er bygget opp åpne terminalen på IntelliJ og kjør java -jar target\Survey-1.0-SNAPSHOT.jar
DET ER EN FEIL I EKSEMPELKODEN I WISEFLOW:
- I
addOptions.html
skulle url til/api/tasks
vært/api/alternativeAnswers
(eller noe sånt)
Det er viktig å være klar over at eksempel HTML i eksamensoppgaven kun er til illustrasjon. Eksemplene er ikke tilstrekkelig for å løse alle ekstraoppgavene og kandidatene må endre HTML-en for å være tilpasset sin besvarelse
- Dere har lest eksamensteksten
- Dere har lastet opp en ZIP-fil med navn basert på navnet på deres Github repository
- Koden er sjekket inn på github.com/pgr203-2021-repository
- Dere har committed kode med begge prosjektdeltagernes GitHub konto (alternativt: README beskriver arbeidsform)
-
README.md
inneholder en korrekt link til Github Actions -
README.md
beskriver prosjektets funksjonalitet, hvordan man bygger det og hvordan man kjører det -
README.md
beskriver eventuell ekstra leveranse utover minimum -
README.md
inneholder et diagram som viser datamodellen
-
mvn package
bygger en executable jar-fil - Koden inneholder et godt sett med tester
-
java -jar target/...jar
(ettermvn package
) lar bruker legge til og liste ut data fra databasen via webgrensesnitt - Serveren leser HTML-filer fra JAR-filen slik at den ikke er avhengig av å kjøre i samme directory som kildekoden
- Programmet leser
dataSource.url
,dataSource.username
ogdataSource.password
frapgr203.properties
for å connecte til databasen - Programmet bruker Flywaydb for å sette opp databaseskjema
- Server skriver nyttige loggmeldinger, inkludert informasjon om hvilken URL den kjører på ved oppstart
- Programmet kan opprette spørsmål og lagrer disse i databasen (påkrevd for bestått)
- Programmet kan vise spørsmål (påkrevd for D)
- Programmet kan legge til alternativ for spørsmål (påkrevd for D)
- Programmet kan registrere svar på spørsmål (påkrevd for C)
- Programmet kan endre tittel og tekst på et spørsmål (påkrevd for B)
- Før en bruker svarer på et spørsmål hadde det vært fint å la brukeren registrere navnet sitt. Klarer dere å implementere dette med cookies? Lag en form med en POST request der serveren sender tilbake Set-Cookie headeren. Browseren vil sende en Cookie header tilbake i alle requester. Bruk denne til å legge inn navnet på brukerens svar
- Når brukeren utfører en POST hadde det vært fint å sende brukeren tilbake til dit de var før. Det krever at man svarer med response code 303 See other og headeren Location
- Når brukeren skriver inn en tekst på norsk må man passe på å få encoding riktig. Klarer dere å lage en med action=POST og encoding=UTF-8 som fungerer med norske tegn? Klarer dere å få æøå til å fungere i tester som gjør både POST og GET?
- Å opprette og liste spørsmål hadde vært logisk og REST-fult å gjøre med GET /api/questions og POST /api/questions. Klarer dere å endre måten dere hånderer controllers på slik at en GET og en POST request kan ha samme request target?
- Vi har sett på hvordan å bruke AbstractDao for å få felles kode for retrieve og list. Kan dere bruke felles kode i AbstractDao for å unngå duplisering av inserts og updates?
- Dersom noe alvorlig galt skjer vil serveren krasje. Serveren burde i stedet logge dette og returnere en status code 500 til brukeren
- Dersom brukeren går til http://localhost:8080 får man 404. Serveren burde i stedet returnere innholdet av index.html
- Et favorittikon er et lite ikon som nettleseren viser i tab-vinduer for en webapplikasjon. Kan dere lage et favorittikon for deres server? Tips: ikonet er en binærfil og ikke en tekst og det går derfor ikke an å laste den inn i en StringBuilder
- I forelesningen har vi sett på å innføre begrepet Controllers for å organisere logikken i serveren. Unntaket fra det som håndteres med controllers er håndtering av filer på disk. Kan dere skrive om HttpServer til å bruke en FileController for å lese filer fra disk?
- Kan dere lage noen diagrammer som illustrerer hvordan programmet deres virker?
- JDBC koden fra forelesningen har en feil ved retrieve dersom id ikke finnes. Kan dere rette denne?
- I forelesningen fikk vi en rar feil med CSS når vi hadde
<!DOCTYPE html>
. Grunnen til det er feil content-type. Klarer dere å fikse det slik at det fungerer å ha<!DOCTYPE html>
på starten av alle HTML-filer? - Klarer dere å lage en Coverage-rapport med GitHub Actions med Coveralls? (Advarsel: Foreleser har nylig opplevd feil med Coveralls så det er ikke sikkert dere får det til å virke)
- FARLIG: I løpet av kurset har HttpServer og tester fått funksjonalitet som ikke lenger er nødvendig. Klarer dere å fjerne alt som er overflødig nå uten å også fjerne kode som fortsatt har verdi? (Advarsel: Denne kan trekke ned dersom dere gjør det feil!)