Demo Juwelier applicatie
Transcript of Demo Juwelier applicatie
Juwelier applicatie
Auteur: Maarten ZuurDatum: 6 Oktober 2015
Demonstratie eindresultaat beschrijving onderdelen implementatie
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.
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
ViewHoofdpagina van de webapplicatie
Lijst met alle producten Product informatieView
Venster voor inloggen (wachtwoord is niet geïmplementeerd) Gegevens van de klant
View
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
Klant 2 heeft product 9 aan bestelling 2 toegevoegd
View
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
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
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
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
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
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
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
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
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