Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 2 Boeken, tutorials, links, nieuwe elementen Google: date and time methods java: java.sun.com/docs/books/tutorial/ essential/system/misc.html java.sun.com/docs/books/tutorial/ essential/system/misc.html long nu = System.currentTimeMillis(); //tijd in milli’s long nu = System.currentTimeMillis(); //tijd in milli’s HTML-form paswoord-input-type:
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 3 Probleem: Reload Reload-probleem Zonder maatregelen, zorgt een reload ervoor dat de parameters opnieuw worden verzonden en je de laatste actie herhaalt ! POGING 1: Vervang de URL-rewriting door forms met hidden input-velden en method=“post” Parameters zijn niet meer zichtbaar, maar ze zijn er wel Je krijgt als gebruiker een keuze ‘parameters opnieuw versturen Yes/No’. Als je ja kiest: probleem niet opgelost. POGING 2: Geeft de tijd van ‘html-generatie’ mee Steek deze tijden in een collectie bvb een HashMap. Geef de tijd mee als parameter naar winke.jsp: Als tijd uniek is, voer dan de actie uit, anders niet.
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 4 Users/klanten We hernemen het plan ivm users: userid bestaat combinatie userid & paswoord bestaat bestelling wordt toegevoegd aan de database combinatie userid & paswoord bestaat niet foutpagina userid bestaat niet Klantgegevens worden opgevraagd klant wordt toegevoegd bestelling wordt toegevoegd aan de database
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 5 Users/klanten We zullen naar analogie met de voorgaande tabellen, de userid vanaf nu klant_id noemen. Voorlopig zijn maar enkele velden NOT NULL. mysql> create table klant(klant_id CHAR(50) not null primary key, -> paswoord CHAR(50) NOT NULL, naam CHAR(50), voornaam CHAR(50), -> paswoord CHAR(50) NOT NULL, naam CHAR(50), voornaam CHAR(50), -> CHAR(70) NOT NUll, -> CHAR(70) NOT NUll, -> adres CHAR(50), postcode CHAR(7), gemeente CHAR(50)); -> adres CHAR(50), postcode CHAR(7), gemeente CHAR(50)); In de bestelling-tabel was onze klant_id een integer. Die moet dus nu een CHAR(50) worden en hij moet altijd ingevuld zijn. (Je mag ook de klant-tabel droppen en opnieuw aanmaken). Verder kunnen we beter bestelling en besteldproduct leegmaken. mysql> delete from bestelling; mysql> delete from besteldproduct; mysql> alter table bestelling modify klant_id CHAR(50) NOT NULL;
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 6 Nieuwe addBestelling-methode MET klant_id: public void addBestelling(Winkelkar winkelkar, String sessionId, String klant_id) String sessionId, String klant_id) throws SQLException, Exception { throws SQLException, Exception { if (con != null) { if (con != null) { try{ try{ PreparedStatement updateBestelling; PreparedStatement updateBestelling; updateBestelling = con.prepareStatement( updateBestelling = con.prepareStatement( "INSERT INTO bestelling VALUES(?,?,NULL)"); "INSERT INTO bestelling VALUES(?,?,NULL)"); updateBestelling.setString(1,sessionId); updateBestelling.setString(1,sessionId); updateBestelling.setString(2,klant_id); updateBestelling.setString(2,klant_id); updateBestelling.execute(); updateBestelling.execute();…
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 7 bestelling.jsp bestelling.jsp wordt hernoemd tot bestelling2.jsp bestelling2.jsp zal klant_id en paswoord opvragen en doorsturen naar bestelling.jsp In een eerste fase wordt NIETS gedaan met deze klant_id en paswoord
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 8 Bestelling.jsp klant_id en paswoord opvragen We geven userid en paswoord gewoon door. In principe NIET secure. Security wordt later behandeld. We geven userid en paswoord gewoon door. In principe NIET secure. Security wordt later behandeld. user id: <input type = "text" name = "klant_id“ user id: <input type = "text" name = "klant_id“ maxlength = "50" > maxlength = "50" > paswoord: <input type = "password" name = "paswoord“ paswoord: <input type = "password" name = "paswoord“ maxlength = "50" > maxlength = "50" > </form>
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 9 Opmerkingen Geen transacties Klant- en bestellingtoevoeging moeten soms in één transactie gebeuren. Anders soms klant zonder bestelling (omgekeerd is nog erger). Geen security (paswoord gecodeerd doorgeven ?) Geen automatische updates van andere velden van klant: bvb wijzigen als die ingevuld is !