Never confuse education with intelligence, you can have a PhD and still be an idiot.
- Richard Feynman -



Difference between revisions of "Systemintegration-Yrgo-2020"

From Juneday education
Jump to: navigation, search
m (Tider för dagen)
Line 204: Line 204:
 
** Skriv ned frågor om det är något i labbsidan ni inte förstår, så ni är förberedda inför nästa lektion då vi går igenom labben
 
** Skriv ned frågor om det är något i labbsidan ni inte förstår, så ni är förberedda inför nästa lektion då vi går igenom labben
  
=Vecka 17, torsdag 25/4 Labben - Databasen och Servleten=
+
=Vecka 14, onsdag 1/4 Labben - Databasen och Servleten=
 
==Mål för dagen==
 
==Mål för dagen==
 
* Alla har förstått vad labben går ut på
 
* Alla har förstått vad labben går ut på
Line 214: Line 214:
 
* skapar JSON (samt svarar med application/json) som content-type
 
* skapar JSON (samt svarar med application/json) som content-type
 
==Tider för dagen==
 
==Tider för dagen==
* 13:00 Lektion: Creating JSON from Java
+
* Lektion: Creating JSON from Java
 
** Slide: [[:Media:Org.json_-_creating.pdf|Org.json_-_creating.pdf]] - Wiki-page: [[Java-Web:Creating_JSON_from_Java|Creating_JSON_from_Java]]
 
** Slide: [[:Media:Org.json_-_creating.pdf|Org.json_-_creating.pdf]] - Wiki-page: [[Java-Web:Creating_JSON_from_Java|Creating_JSON_from_Java]]
 
** Source code: [https://github.com/progund/java-web/tree/master/java-json/org.json/creating github.com/progund/java-web/tree/master/java-json/org.json/creating]
 
** Source code: [https://github.com/progund/java-web/tree/master/java-json/org.json/creating github.com/progund/java-web/tree/master/java-json/org.json/creating]
 
** Om tid finns: även slide: [[:Media:Small_json_create_example.pdf|Small_json_create_example.pdf]]
 
** Om tid finns: även slide: [[:Media:Small_json_create_example.pdf|Small_json_create_example.pdf]]
 
** [[Java-Web:Exercise_-_Creating_JSON_from_Java|Exercise_-_Creating_JSON_from_Java]] OBS! Fokus på org.json - skit i javax.json.
 
** [[Java-Web:Exercise_-_Creating_JSON_from_Java|Exercise_-_Creating_JSON_from_Java]] OBS! Fokus på org.json - skit i javax.json.
* 14:00 Lektion: Creating XML from Java:  
+
* Lektion: Creating XML from Java:  
 
** Slide: [[:Media:Generating_XML_from_Java.pdf|Generating_XML_from_Java.pdf]]
 
** Slide: [[:Media:Generating_XML_from_Java.pdf|Generating_XML_from_Java.pdf]]
 
** [[Java-Web:Exercises_-_Creating_XML_from_Java|Exercises_-_Creating_XML_from_Java]]  
 
** [[Java-Web:Exercises_-_Creating_XML_from_Java|Exercises_-_Creating_XML_from_Java]]  
* 15:00 Labbens databas gås igenom - Tabellernas schema, exempel-SELECT för alla lärare visst daturm!
+
* Labbens databas gås igenom - Tabellernas schema, exempel-SELECT för alla lärare visst daturm!
 
*  Labbens Webb API gås igenom - GET-parametrar och exempel-svar i JSON och XML - Webb-api är alltså svar på frågan "Hur hämtar jag viss data och hur ser svaret i så fall ut?"
 
*  Labbens Webb API gås igenom - GET-parametrar och exempel-svar i JSON och XML - Webb-api är alltså svar på frågan "Hur hämtar jag viss data och hur ser svaret i så fall ut?"
 
** Läraren visar igen koden från detta exempel: [https://github.com/progund/web-misc/tree/master/nahid-sysint github.com/progund/web-misc/tree/master/nahid-sysint] och förklarar anropen och vad de betyder
 
** Läraren visar igen koden från detta exempel: [https://github.com/progund/web-misc/tree/master/nahid-sysint github.com/progund/web-misc/tree/master/nahid-sysint] och förklarar anropen och vad de betyder
Line 261: Line 261:
 
* <code>substitute_id</code> i kombination med <code>day</code> - denna vikaries assignment denna dag listas
 
* <code>substitute_id</code> i kombination med <code>day</code> - denna vikaries assignment denna dag listas
  
=Vecka 18, måndag 29/4=
+
=Vecka 14, onsdag 1/4, 13-16=
 
==Mål för dagen==
 
==Mål för dagen==
 
* Alla har stöd för XML och JDBC (databas) i sin labb-servlet
 
* Alla har stöd för XML och JDBC (databas) i sin labb-servlet
Line 269: Line 269:
  
 
==Tider för dagen==
 
==Tider för dagen==
* 13.00 Föreläsning  Slide: [[:Media:Choosing output format.pdf|Dynamically choosing output format.pdf]] (OBS: 32 sidor - lång lektion)
+
* Föreläsning  Slide: [[:Media:Choosing output format.pdf|Dynamically choosing output format.pdf]] (OBS: 32 sidor - lång lektion)
 
** Wikisida: [[Java-Web:Using_a_factory_for_creating_XML_or_JSON]]
 
** Wikisida: [[Java-Web:Using_a_factory_for_creating_XML_or_JSON]]
 
** Vi repeterar [[Java-Web:Servlet_serving_XML_or_JSON]]
 
** Vi repeterar [[Java-Web:Servlet_serving_XML_or_JSON]]
 
** Slide: [[:Media:Servlet_serving_XML_or_JSON.pdf|Servlet_serving_XML_or_JSON.pdf]]
 
** Slide: [[:Media:Servlet_serving_XML_or_JSON.pdf|Servlet_serving_XML_or_JSON.pdf]]
* 14:00 Övningar:  
+
* Övningar:  
 
** [[Java-Web:Exercises_-_Using_a_factory_for_creating_XML_or_JSON]]  
 
** [[Java-Web:Exercises_-_Using_a_factory_for_creating_XML_or_JSON]]  
 
** [[Java-Web:Exercises_-_Servlet_serving_XML_or_JSON]]
 
** [[Java-Web:Exercises_-_Servlet_serving_XML_or_JSON]]
* 15:00  Handledning - skapa servleten som ska läsa från databasen och skapa XML som svar på:
+
* Handledning - skapa servleten som ska läsa från databasen och skapa XML som svar på:
 
** substitute_id och eventuellt också day från GET-parametrarna
 
** substitute_id och eventuellt också day från GET-parametrarna
 
** Testa denna servlet från browser, lwp-request, wget osv"
 
** Testa denna servlet från browser, lwp-request, wget osv"
Line 334: Line 334:
 
* [https://vimeo.com/couchmode/channels/1333865/sort:preset/250121863 Java - Parsing with org.json (Full playlist)]
 
* [https://vimeo.com/couchmode/channels/1333865/sort:preset/250121863 Java - Parsing with org.json (Full playlist)]
  
=Vecka 19, måndag 6/5=
+
=Vecka 15, onsdag 8/4=
 
==Mål för dagen==
 
==Mål för dagen==
 
Alla kan använda org.json för att parsea JSON från ett Java-program
 
Alla kan använda org.json för att parsea JSON från ett Java-program
Line 340: Line 340:
 
Att från Java konsumera JSON (parse JSON to Java-objects)
 
Att från Java konsumera JSON (parse JSON to Java-objects)
 
==Tider för dagen==
 
==Tider för dagen==
* 13:00 Parsing JSON from Java (föreläsning): [[:Media:Parsing_JSON_from_Java.pdf| parsing Json from java (pdf)]] (18 sidor)
+
* Parsing JSON from Java (föreläsning): [[:Media:Parsing_JSON_from_Java.pdf| parsing Json from java (pdf)]] (18 sidor)
 
** [[:Media:Org.json - parsing.pdf|Parsing JSON using org.json (pdf)]] (37 sidor)
 
** [[:Media:Org.json - parsing.pdf|Parsing JSON using org.json (pdf)]] (37 sidor)
 
** Wiki-sida (med fler filmer och PDF:er för den som vill lära sig mer): [[Java-Web:Introduction_to_JSON]]
 
** Wiki-sida (med fler filmer och PDF:er för den som vill lära sig mer): [[Java-Web:Introduction_to_JSON]]
* 14:00 Övningar och handledning [[Java-Web:Exercises_-_Introduction_to_JSON]] (fokusera på övningarna med org.json)
+
* Övningar och handledning [[Java-Web:Exercises_-_Introduction_to_JSON]] (fokusera på övningarna med org.json)
* 15:00 Handledning labb och övningar
+
* Handledning labb och övningar
  
 
== Övrigt material ==
 
== Övrigt material ==
Line 359: Line 359:
 
* [[Workshop Punk API - Fetching JSON and Parsing JSON]]
 
* [[Workshop Punk API - Fetching JSON and Parsing JSON]]
  
=Vecka 19, onsdag 8/5 - Fetching JSON from Java=
+
=Vecka 15, onsdag 8/4 , 13-16 - Fetching JSON from Java=
 
==Mål för dagen==  
 
==Mål för dagen==  
 
Alla har skrivit en klient som pratar med deras servlet
 
Alla har skrivit en klient som pratar med deras servlet
Line 365: Line 365:
 
Skapa kommandorads- (text-based)Java-applikation som konsumerar JSON över HTTP
 
Skapa kommandorads- (text-based)Java-applikation som konsumerar JSON över HTTP
 
==Tider för dagen==
 
==Tider för dagen==
* 13:00  [[Java-Web:Exercises_-_Introduction_to_JSON#Task_4_-_Part_2_-_org.json_-_Create_a_small_parser_using_the_org.json_API|Exercise_-_Introduction_to_JSON]]
+
* [[Java-Web:Exercises_-_Introduction_to_JSON#Task_4_-_Part_2_-_org.json_-_Create_a_small_parser_using_the_org.json_API|Exercise_-_Introduction_to_JSON]]
* 14:00  forts.
+
* Förbered er inför nästa veckas workshop genom att läsa här:
* 15:00 Förbered er inför nästa veckas workshop genom att läsa här:
+
 
* [[Workshop Punk API - Fetching JSON and Parsing JSON]]
 
* [[Workshop Punk API - Fetching JSON and Parsing JSON]]
  
Line 384: Line 383:
 
* [https://vimeo.com/couchmode/channels/1188501/sort:preset/199675092 Java - Introduktion till XML (och parsning av xml - full playlist)]
 
* [https://vimeo.com/couchmode/channels/1188501/sort:preset/199675092 Java - Introduktion till XML (och parsning av xml - full playlist)]
  
=Vecka 20, måndag 13/5=
+
=Vecka 16, onsdag 15/4=
 
==Mål för dagen==
 
==Mål för dagen==
 
==Tema==
 
==Tema==
 
==Tider för dagen==
 
==Tider för dagen==
* 13:00 [[Workshop Punk API - Fetching JSON and Parsing JSON]]
+
* [[Workshop Punk API - Fetching JSON and Parsing JSON]]
* 14:00  forts.
+
* ni skriver en kommandoradsapplikation som hämtar JSON från er labb-servlet och presenterar olika scheman på standard out.
* 15:00  ni skriver en kommandoradsapplikation som hämtar JSON från er labb-servlet och presenterar olika scheman på standard out.
+
 
** Om vi hinner:  [[:Media:Parsing_XML_From_Java.pdf|Parsing Xml from Java (pdf)]]
 
** Om vi hinner:  [[:Media:Parsing_XML_From_Java.pdf|Parsing Xml from Java (pdf)]]
 
*** Wiki-sida: [[Java-Web:Introduction_to_XML]]
 
*** Wiki-sida: [[Java-Web:Introduction_to_XML]]
Line 397: Line 395:
 
Skriv en lista på saker ni behöver repetition på eller hjälp med för att klara labben. Nästa vecka kör vi repetition och handledning eller eventuellt om ni har något önskemål på annat.
 
Skriv en lista på saker ni behöver repetition på eller hjälp med för att klara labben. Nästa vecka kör vi repetition och handledning eller eventuellt om ni har något önskemål på annat.
  
=Vecka 20, onsdag 15/5=
+
=Vecka 16, onsdag 15/4, 13-16=
 
==Mål för dagen==
 
==Mål för dagen==
 
Alla har skrivit en kommandoradsapplikation som hämtar XML från labb-serlveten och skriver ut schemainformation på Standard Out.
 
Alla har skrivit en kommandoradsapplikation som hämtar XML från labb-serlveten och skriver ut schemainformation på Standard Out.
Line 407: Line 405:
 
De som är klara i tid kan förbereda nästa vecka genom att [[Android:Setting_up_your_development_environment|installera Android Studio]].
 
De som är klara i tid kan förbereda nästa vecka genom att [[Android:Setting_up_your_development_environment|installera Android Studio]].
 
==Tider för dagen==
 
==Tider för dagen==
* 13:00 [[:Media:Parsing_XML_From_Java.pdf|Parsing Xml from Java (pdf)]]
+
* [[:Media:Parsing_XML_From_Java.pdf|Parsing Xml from Java (pdf)]]
 
** Wiki-sida: [[Java-Web:Introduction_to_XML]]
 
** Wiki-sida: [[Java-Web:Introduction_to_XML]]
* 14:00 Handledning av övningar: [[Java-Web:Exercises_-_Introduction_to_XML]]
+
* Handledning av övningar: [[Java-Web:Exercises_-_Introduction_to_XML]]
* 15.00
+
*  
 
** Alternativ 1: Vi skriver en kommandoradsapplikation som hämtar XML från er servlet och parsear detta till text
 
** Alternativ 1: Vi skriver en kommandoradsapplikation som hämtar XML från er servlet och parsear detta till text
 
** Alternativ 2: Vi skriver en webb-front-end med JavaScript och grejer som hämtar JSON från er servlet - [[Web-Frontend:SubstituteTeacherScheduler]]
 
** Alternativ 2: Vi skriver en webb-front-end med JavaScript och grejer som hämtar JSON från er servlet - [[Web-Frontend:SubstituteTeacherScheduler]]
Line 420: Line 418:
 
* Alla ska ha installerat och testat att Android Studio fungerar till nästa vecka då Henrik kommer och kör lite Android
 
* Alla ska ha installerat och testat att Android Studio fungerar till nästa vecka då Henrik kommer och kör lite Android
  
=Vecka 21, måndag 20/5=
+
=Vecka 17, onsdag 22/4=
 
The coming two sessions we will be focusing on the workshop: [[Workshop:SubstituteTeacherSchedulerAndroid|Substitute Teacher Scheduler Android]].
 
The coming two sessions we will be focusing on the workshop: [[Workshop:SubstituteTeacherSchedulerAndroid|Substitute Teacher Scheduler Android]].
 
==Förberedelser==
 
==Förberedelser==

Revision as of 14:16, 2 March 2020

Contents

Systemintegration för klassen Java 19, vårterminen 2020

Välkomna till kurssidan för Systemintegration!

Nedan kommer ett schema. Det är viktigt att ni tittar i schemat och förbereder er inför lektionerna.

Kursen har ingen tenta, utan en laboration som skall lämnas in. Ni får lektioner som hjälper er att klara laborationen men detta bygger också på att ni gör "läxor" enligt vad som anges i schemat. Laborationen är ett system med databas och Java-servlet som publicerar JSON och slutligen en Android-app som kopplar upp sig mot er Java-servlet och hämtar JSON. Vi bygger systemet stegvis, så det är viktigt att ni har varje steg klart då stegen bygger vidare på varandra.

I slutet av kursen tar vi fram Android-appen. Det är ingen Android-kurs, utan en workshop/tutorial i två dagar (två tillfällen), så en lärare visar er alla steg för att ta fram appen (men ni skriver själva av det läraren visar).


Vecka 11, tisdag 10/3 - Repetition Interface

Mål för dagen

Alla har fräschat upp interface.

Tema

Repetition Interface

Tider för dagen

Vecka 11 onsdag 11/3 Repetition Exceptions

Mål för dagen

Alla har fräschat upp exceptions.

Tema

Repetition exceptions

Tider för dagen

Vecka 12, tisdag 17/3 - Intro HTTP, Servlets, Response codes

Mål för dagen

  • Alla vet vad HTTP är
  • alla har skapat en enkel servlet i workshopen och anslutit till den via browser etc(lwp-request)
  • Alla vet vad Response codes (200, 404, 500 osv) är
  • Alla har i förväg sett:
  • Om ni vill kan ni utgå från servleten ni skapar i workshopen för er laboration och bygga vidare på den

Tema

  • Vad är HTTP och Servlets

Tider för dagen


Vanliga problem och dessas lösningar

  • Problem att ladda ned winstone med wget (på MacOS) - Se: Bash_FAQ#Certicate_errors_with_wget
  • Verifiera att du fått ned rätt fil: Kör kommandot file och ge JAR-filen som argument. Om file svarar "empty" eller "HTML" så gick det fel. Verifiera att länken till JAR-filen verkligen går till JAR-filen och inte till en HTML-sida med en länk till JAR-filen - korrekt svar från file ska vara winstone.jar: Zip archive data, at least v1.0 to extract
  • Kompilerings fel
    • Class not found javax.http... Du måste ha med JAR-filen i classpath (javac -cp winstone.jar .....)
  • Kör-fel
    • Kontrollera package-deklarationen och verifiera att filen ligger i en katalogstruktur som överensstämmer med paketnamnet (under www/WEB-INF/classes/

Vecka 12, onsdag 18/3 - Introduktion XML, JSON

Mål för dagen

  • Alla vet vad XML/JSON är
  • Alla har en servlet för sin labb som kan servera XML eller JSON (genom att titta på GET-parametrarna)

Tema

XML och JSON - introduktion.

Tider för dagen

Tider är ungefärliga. Räkna med att det tar hela eftermiddagen.

Läxa

  • Jobba med servleten som ni skapade i första workshopen (introduction to servlets) så att den kan svara på format=xml respektive format=json
    • Låt doGet() läsa parametern format och kolla om det är xml eller json. Om det är något annat eller om parametern saknas (getParameter returnerar då null), så ska servleten skriva ett felmeddelande "Format missing" eller "Format not supported"
    • Ni kan hårdkoda en låtsas xml som svar repsektive en låstas JSON som svar och skriva det som response
    • Titta på labb-sidan för ett exempel på hur JSON kan se ut - vi går igenom JSON och XML senare i kursen!
    • Sätt rätt content-type på response: application/xml respektive application/json - titta i exemplet ovan för hur man sätter content-type (Ni kan googla content-type för json, xml och html eller få tips av läraren)
    • Testa att er servlet gör rätt genom att använda en browser - nästa gång kan vi visa hur man testar från bash!
  • Läs på JDBC: Introduction_to_JDBC (inklusive eventuella övningar och filmer) och se filmerna:
  • Läs wiki-sida: Introduction_to_layered_architectures och se filmerna:
  • Läs wiki-sida: Getting started with SQLite och se filmerna:
    • Kom igång med SQLite3 (Swe)
    • Kom igång med SQLite3 Live-kodning (Swe)

Checklista för hur ni ligger till i labben

Efter idag ska ni ha tillräckliga kunskaper för att lösa task 1 och 2 i labben. Se labbsidan för instruktioner:

  • Ni ska ha skapat en förenklad variant av en klass som kan formatera Assignment till JSON genom att ändra lite i en klass från exemplet idag (ändra HtmlFormatter till en JsonFormatter som skapar Json lite hårdkodat) (task 1)
  • Er servlet ska bry sig om GET-parametern format och om värdet är json, så ska doGet() anropa formattern och få lite fusk-JSON tillbaka som skrivs till response. Ni kan göra samma sak för XML om ni vill, skapa en fake-formatter för XML och låta doGet anropa den om format=xml... (task 2)

Denna checklista är för er som vill arbeta med labben redan nu och inte bli stressade i slutet av kursen men det kommer finnas gott om tid att bli klar ändå. Vi rekommenderar dock att ni följer våra checklistor eftersom vi hänvisar till task:ar som handlar om sådant vi precis gått igenom!

Vecka 13, tisdag 24/3 - JDBC, SQLite3, Skiktad arkitektur

Mål för dagen

  • Alla har i förväg sett filmerna om JDBC mm
  • Alla vet vad JDBC är och kan använda SQLite3 från Java
  • Alla kan skapa databas från dump-fil SQLite3

Tema

  • JDBC

Tider för dagen

Läxa

  • Skapa en enkel databas i SQLite3 och få er servlet att läsa från den och skriva resultat som text eller html
    • Titta igen på Exemplet från SubstituteScheduleServlet:en från tidigare i kursen


Vecka 13, onsdag 25/3 JDBC i skiktad arkitektur, skapa JSON, Skapa XML

Mål för dagen

  • Tiered architecture (no JDBC in servlet, use Java interfaces)
  • Servlet reading from DB
  • Alla kan använda JDBC från servlet med skiktad arkitektur,
  • alla kan skapa JSON med org.json
  • alla kan skapa XML från Java

Tema

Skapa en servlet som använder skiktad arkitektur och jdbc, svarar med HTML, Skapa JSON, Skapa XML från Java

Tider för dagen


Om ni inte hinner klart övningarna - gör dem i läxa och skriv upp eventuella frågor!

Läxa

Vecka 14, onsdag 1/4 Labben - Databasen och Servleten

Mål för dagen

  • Alla har förstått vad labben går ut på
  • Ni ska vara ett steg närmare att ha löst labben.

Tema

Gör om LABB-servleten så den

  • läser data från databasen och
  • skapar JSON (samt svarar med application/json) som content-type

Tider för dagen

OBS! Exemplelt använder en enkel klass Assignment som har tre String: teacher, date, school, men ni ska använda modellen från Creating JSON with org.json-exemplet med flera klasser: Schedule, School och Substitute! Se labbsidan, task 3, för instruktioner!

Om ni har gjort task 1 och 2 i labben, så har ni skrivit den enklare klassen Assignment, precis som i exemplet vi gått igenom. Men nu ska ni alltså ändra till att skriva tre klasser i stället enligt ovan! Detta gör ni i task 3. I task 4 skriver ni metoder för att hämta data från databasen - de fyra metoderna. Se nedan i checklist!

Checklista för hur ni ligger till med labben!

Efter idag, ska ni vara klara med tasks 1-4. Det betyder att ert system nu har:

  • Koll på format-parametern och bryr sig om JSON-formatet
  • Pratar med databasen och kan skapa en lista av Assignment som ni skrivit om (refactored)
    • En Assignment i nya versionen innehåller en Substitute-referens, en String med datum och en School-referens
  • Databasklassen Assignments är ansvarig för fyra metoder:
    • all() - returnerar en List<Assignment> med alla Assignment för alla lärare
    • forTeacher() - returnerar en List<Assignment> med alla Assignment för en viss lärare
    • at() - returnerar en List<Assignment> med alla Assignment för alla lärare, ett visst datum
    • forTeacherAt() - returnerar en List<Assignment> med alla Assignment för en viss lärare, ett visst datum

Se labbsidan för instruktioner för hur ni ska lösa task 1 - 4! Hinner ni inte under dagen, är det läxa att hinna med task 1-4!

Läxa

  • Ni ska ha en fungerade Databas-JSON-kedja i er Servlet till nästa gång
  • Repetera Creating XML (wiki, slide och filmerna från tidigare i schemat)

Om API:et och de anrop/queries som er servlet skall svara på

  • Inga parametrar - Alla Assignments skall ges som svar
  • format - värdet skall kunna vara json eller xml (bara json skall funka än så länge)
  • day - om endast denna parameter anges, skall alla lärares assignments den dagen listas
  • substitute_id - om endast denna parameter anges, skall denna vikaries assignments listas
  • substitute_id i kombination med day - denna vikaries assignment denna dag listas

Vecka 14, onsdag 1/4, 13-16

Mål för dagen

  • Alla har stöd för XML och JDBC (databas) i sin labb-servlet
  • Alla vet vad en Factory är och vad den är till för

Tema

Gör om servleten så den läser data från databasen och skapar XML, svarar med application/xml. Till detta kan vi använda en så kallad Factory.

Tider för dagen

Tips för er Servlet i labben

Om ni tycker det är för krångligt att göra som i föreläsningen, är det helt OK om er Factory är lite "dummare" och har en switch - case eller till och med IF-sats i factoryn och "hårdkodar" vilken klass som skall returneras. Pseudo-kod:

// format factory...
public static Formatter getFormatter(String format) {
  // if format is "xml" 
  //   return new XmlFormatter()
  // else if format is "json"
  //   return new JsonFormatter()
  // end if
}

Men om ni vill använda dynamisk laddning, så är det också cool. Ni kan initialisera laddningen från servletens init()-metod och ni kan läsa från web.xml där (web.xml kan ha element som sätter namn på klasserna för XmlFormatter och JsonFormatter. Se denna servlet för ett liknande exempel:

// init() i servleten läser värde från web.xml första gången servleten körs och sätter värdet i System.properties:

  @Override
  public void init() throws ServletException {
    System.setProperty("ProductLine", getServletContext().getInitParameter("ProductLine"));
  }

I web.xml för servleten exemplet kommer från står följande:

  <context-param>
    <param-name>ProductLine</param-name>
    <param-value>Fake</param-value>
    <!-- <param-value>DB</param-value> -->
  </context-param>
  <servlet>
    <servlet-name>api</servlet-name>
    <servlet-class>servlets.SystemetWebAPI</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>api</servlet-name>
    <url-pattern>/search/*</url-pattern>
  </servlet-mapping>

Så en servlet kan läsa en "context-param" från web.xml och lagra i system.properties. Factoryn kan sedan läsa med System.getProperty("namn-på-property")

Men det är lite överkurs och som sagt är en if-sats eller switch-case helt OK!

Checklista för hur ni ligger till med labben

Ni borde nu kunna börja med

Läxa

Inför nästa lektion ska ni förbereda er på att "parse:a" (JSON) Läs:

Se filmerna, särskilt de om org.json-versionen av parsning:

Vecka 15, onsdag 8/4

Mål för dagen

Alla kan använda org.json för att parsea JSON från ett Java-program

Tema

Att från Java konsumera JSON (parse JSON to Java-objects)

Tider för dagen

Övrigt material

Om tid finns, här är en föreläsning om parsning med enbart org.json:

Källkod:

Org.json JAR-file:

Läxa

Vecka 15, onsdag 8/4 , 13-16 - Fetching JSON from Java

Mål för dagen

Alla har skrivit en klient som pratar med deras servlet

Tema

Skapa kommandorads- (text-based)Java-applikation som konsumerar JSON över HTTP

Tider för dagen

Checklista för labben

Den klient ni skriver idag ska hämta JSON från er labb-servlet. Det gör att ni kan testa och felsöka er labb med hjälp av det ni skriver idag. Ni får också förståelse för vad er labb-servlet är till för, dvs att erbjuda ett sätt att hämta ut viss data och skicka det i JSON.

Om någon vecka så ska vi göra samma sak med XML, dvs skriva en klient som hämtar XML från er servlet. När den är klar, så kan ni verifiera att er Servlet fungerar som den ska.

En annan fördel med att ni skriver applikationen idag som hämtar JSON, är att ni ska med Henrik i slutet av kursen skriva en Android-app som gör samma sak - pratar med er Servlet och hämtar data som JSON. Detta blir alltså en bra förberedelse för Android-workshoparna.

Läxa

  • Om ni inte han klart att skriva en egen applikation som pratar med er labb-serlvet, så blir det läxa att skriva en sådan till nästa vecka

Nästa vecka ska vi lära oss att "parsea" XML, så läs:

Se följande filmer (särskilt filmerna om att parsea XML i Java):

Vecka 16, onsdag 15/4

Mål för dagen

Tema

Tider för dagen

Läxa

Skriv en lista på saker ni behöver repetition på eller hjälp med för att klara labben. Nästa vecka kör vi repetition och handledning eller eventuellt om ni har något önskemål på annat.

Vecka 16, onsdag 15/4, 13-16

Mål för dagen

Alla har skrivit en kommandoradsapplikation som hämtar XML från labb-serlveten och skriver ut schemainformation på Standard Out.

Alla har installerat Android Studio inför nästa vecka.

Tema

Vi skriver en applikation som hämtar XML från er labbservlet och presenterar informationen som text på standard out.

De som är klara i tid kan förbereda nästa vecka genom att installera Android Studio.

Tider för dagen

installera Android Studio och kolla att det fungerar inför nästa vecka

Tips om ni väljer Web-Frontend:SubstituteTeacherScheduler

Lägg HTML-filen i er Servlets webroot-katalog och besök sidan i er browser på http://localhost:8080 - annars är risken stor att er browser klagar på cross-site-scripting och säkerhetsproblem. En webbsida som kommer från samma server som JSON-anropet ligger på anses däremot säkert.

Läxa

  • Alla ska ha installerat och testat att Android Studio fungerar till nästa vecka då Henrik kommer och kör lite Android

Vecka 17, onsdag 22/4

The coming two sessions we will be focusing on the workshop: Substitute Teacher Scheduler Android.

Förberedelser

Installera Android Studio. Nu!!!!

We're going to use the following Design Patterns in this workshop. To be prepared get familiar with them by reading the linked pages:

The following (non newbie) concepts will be used, so get prepared by reading the pages below:

The following pages are a good read to get prepared:

The following Android pages are a good read to get prepared:

Mål för dagen

  • förstått grunderna i Android
  • skrivit en första app

Tema

Introduktion till Android

Tider för dagen

  • 13:00 Android basics, Looking at the server's data using various clients
  • 14:00 Design the UI of the app, faking server data, present the faked data
  • 15:00 -""-

Läxa

Vecka 21, onsdag 22/5

Förberedelser

Mål för dagen

  • Lägga till kod för att häma data över nätverk
  • Tolka JSON

Tema

  • Ha förstått och använt nätverksprogrammering i Android med hjälp av Volley

Tider för dagen

  • 13:00 Fetch assignments for real
  • 14:00 -""-
  • 15:00 -""-

Läxa

Läxa: "Skicka in er kod: Servlet med JDBC som svarar med XML eller JSON Klient (kommandoradsbaserad) som läser XML och en som läser JSON (eller samma som kan båda) Dokumentation över projektet" Planera in tid för rättning!

2019 iteration of this course