Demo Juwelier applicatie
Transcript of Demo Juwelier applicatie
![Page 1: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/1.jpg)
Juwelier applicatie
Auteur: Maarten ZuurDatum: 6 Oktober 2015
Demonstratie eindresultaat beschrijving onderdelen implementatie
![Page 2: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/2.jpg)
Introductie
De webapplicatie is gebouwd voor een fictieve juwelier.
Een klant er producten bekijken en bestellen.
Alle gegevens (producten, klanten, bestellingen) staan in een database.
![Page 3: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/3.jpg)
Overzicht
De applicatie bestaat uit 3 onderdelen.View: de klant heeft vanuit een webbrowser toegang tot de webapplicatieJuwelierApp: Java software die alle datastromen van/naar de database verwerktDatabase: persistent datastore met klanten, producten en bestellingen
![Page 4: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/4.jpg)
ViewHoofdpagina van de webapplicatie
![Page 5: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/5.jpg)
Lijst met alle producten Product informatieView
![Page 6: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/6.jpg)
Venster voor inloggen (wachtwoord is niet geïmplementeerd) Gegevens van de klant
View
![Page 7: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/7.jpg)
Een bestelling verwijderen gebeurt eenvoudig door op ‘Verwijder’ te klikken.
(de attributen Betaald en Bezorgd zijn aanwezig in de database maar verder niet geïmplementeerd)
View
Een product bestellen gebeurt door eerst een bestelling te selecteren, dan het product bekijken en daar op ‘Bestellen’ klikken.
Bestellingen Bestelde producten
![Page 8: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/8.jpg)
Klant 2 heeft product 9 aan bestelling 2 toegevoegd
View
![Page 9: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/9.jpg)
Data model
De applicatie werkt met 4 tabellen in een (relationele) SQL database. Iedere Java klasse wordt gemapt naar een tabel.
Class diagram voor het data model:Een Klant heeft 0 of meer BestellingenEen Bestelling bestaat uit 0 of meer BesteldProductenEen BesteldProduct verwijst naar een Product
![Page 10: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/10.jpg)
SQL database
build20.sql volledige (her) creatie van de database
fill30.sql maakt de database leeg en plaatst wat gegevens in elke tabel
unit_test.sql maakt de database leeg en plaatst wat gegevens in elke tabel (voor Java unit test)
test.sql aantal queries om de foreign keys te testen
tproduct kolommen: product_id, merk, naam, code, model, kleur, afbeelding, prijs, soort, materiaal, maat, steen, kast, band, waterbestendig, uurwerk, functie
tklant kolommen: klant_id, inlogcode, achternaam, voorletterstbestelling kolommen: bestelling_id, klant_id, betaald
foreign key: naar tklant (klant_id → klant_id)tbesteld_product kolommen: bp_id, bestelling_id, product_id, bezorgd
foreign key: naar tbestelling (bestelling_id → bestelling_id)foreign key: naar tproduct (product_id → product_id)
Scripts
Tabellen in de SQL database
![Page 11: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/11.jpg)
Java applicatie
Het Java component regelt communicatie tussen View en DatabasePaginaController levert de services (servlets) voor ViewJuwelierDAO is een interface naar persistent datastoreJuwelierDAOSql implementeert d.m.v. MySQL databaseModel bevat de business objecten (Product, Klant, Bestelling, BesteldProduct)Model (transfer) bevat de transfer objecten
![Page 12: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/12.jpg)
PaginaController is de Java klasse die alle servlets implementeert
Servlet Beschrijving
/hoofdpagina/producten/product/{id}/inloggen/{inlogCode}/klant/{id}/bestellingen/{id}/bestelling/{id}/bestel/{regel}/mand/{id}/verwijderbs/{regel}/verwijderbp/{regel}
Toont de hoofdpaginaToont alle productenToont product <id>Haalt het id op van klant <inlogCode>Toont klant <id>Toont de bestellingen van klant <id>Toont de bestelde producten van bestelling <id>Voegt product <id> toe aan bestelling <id>Maakt een nieuwe bestelling aan voor klant <id>Verwijder bestelling <id> van klant <id>Verwijder besteld product <id> uit bestelling <id>
Java applicatie
![Page 13: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/13.jpg)
JuwelierDAO is een Java interface met methoden voor CR(U)D naar een persistent datastore.
Methoden van deze interface met hun signatuur:
+ readKlant(String inlogCode): int+ readKlant(int id): Klant+ readKlanten(): Collection<Klant>+ readBestelling(int bestellingId): Bestelling+ createBestelling(int klantId, Bestelling b): int+ deleteBestelling(int bestellingId)+ readBesteldProduct(int bpId): BesteldProduct+ createBesteldProduct(int bestellingId, BesteldProduct bp): int+ deleteBesteldProduct(int bpId)+ readProduct(int id): Product+ readProducten(): Collection<Product>
Java applicatie
![Page 14: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/14.jpg)
View implementatie
De view is een webapplicatie (jsp, html/css/js) met als kern:De hoofdpagina.jsp is een vaste pagina die kader.jsp bevatIn kader.jsp worden wisselende jsp pagina’s met inhoud geplaatstDoor buttons en hyperlinks worden JavaScript functies gestart (kader.js) die Java servlets aanroepenDe Java servlets in PaginaController produceren jsp pagina’s met inhoud
![Page 15: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/15.jpg)
jsp hoofdpagina.jsp – vaste hoofdpagina van de webapplicatiekader.jsp – kader waar inhoud kan worden geplaatstproducten.jsp – toont lijst met productenproduct.jsp – toont een productklant.jsp – toont een klantbestellingen.jsp – toont lijst met bestellingenbestelling.jsp – toont een bestelling
JavaScript kader.js – functies die inhoud op de pagina plaatsen, inclusief aanroep van servletssessie.js – functies waarmee de klant sessie wordt bijgehouden en bestellingen worden verwerkt, inclusief aanroep van servlets
css menu.css – opmaak en gedrag van het menupagina.css – opmaak van de pagina
html onder andere header, footer, formulier voor inloggen en het menuafbeeldingen jpg en bmp afbeeldingen (tabel tproduct verwijst naar de bestandnaam)
Overzicht onderdelen van de View
View implementatie
![Page 16: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/16.jpg)
TechniekDe applicatie is gebouwd met:
Relationele database in MySQLJava applicatie die de servlets levert
Spring MVCHibernateTestcases met JUnit (voor servlets en DAO interface)
View met jsp, html/css/js, afbeeldingen
De webapplicatie draait met MySQL server en Apache Tomcat server
Design goals tijdens bouw:solide structuurgoede backendminder prio voor layout en user experience
![Page 17: Demo Juwelier applicatie](https://reader035.fdocuments.net/reader035/viewer/2022081605/58ee4e241a28abb7698b457f/html5/thumbnails/17.jpg)
Samenvatting
De webapplicatie is gebouwd voor een fictieve juwelier.Klant kan producten bekijken en bestellen in de viewGegevens worden bewaard in een databaseEen Java applicatie vormt de schakel tussen de view en de databaseSolide structuur en geavanceerde backend
Maarten Zuur
www.linkedin.com/in/maartenzuur