Internetapplicaties - V Sessies 1 Internetapplicaties Deel 5: Sessies.

Slides:



Advertisements
Verwante presentaties
Ingave via het scherm Algemene beschrijving van de toepassing De toepassing is opgebouwd uit drie niveaus : Niveau 1 : verzending en afzender Niveau 2.
Advertisements

KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Handboek verzenden van Nieuwsbrief Caribbean.nl 12 september 2012 •Ga naar CMS •Kies Nieuwsbrief Caribbean.nl.
Databases via internet
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
Internetapplicaties - II Gegevensinvoer 1 Internetapplicaties Deel 2: Gegevensinvoer: HTML-forms, JavaScript en JSP.
Google Analytics. Google Analytics: waarom Google analytics meet hoeveel mensen er op de site komen, brengt in beeld wat we weten van dit mensen en wat.
Van domeinklasse tot implementatie
Een aankoop boeken Vanuit het modulescherm, tab ‘Boekhouden’, gaat u naar het gewenste aankopendagboek. Link \ Manage © / 14.
Internetapplicaties Niki Meulemans
Klassen en objecten.
Crashcursus HTML en CSS 2013
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
Hoe een aanvraag voor het bekomen van een certificaat voor de export van producten bestemd voor diervoeding indienen via internet? 1. Het geschikte certificaat.
Inleidend probleem Data structuur (hiërarchie van classes)
Nieuw in LIPS VLUG 2 26 juni 2006 Kristof Brams. Overzicht Vernieuwde editor Printervriendelijke pagina Statistieken Variabele fontgrootte Grootte van.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Hoofdstuk 16 en 19 PHP en MYSQL
Microsoft Word Liesbeth Van Raemdonck. Word openen Klik op de ‘start’-knop, links onderaan Klik op Programs Kies voor MS Word.
Deel XIII Eerste echte e-commerce applicatie (iteraties + impl ) 1 Internetapplicaties Deel 13: Eerste echte e-commerce applicatie: Enkele iteraties met.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Deel XXI 1 Internetapplicaties Internetprogrammeren Capita Selecta.
Internetapplicaties - VI Herhaling 1 Internetapplicaties Deel 6: Herhaling.
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XX Hosting 1 Internetapplicaties Deel XX Hosting.
Deel XII Eerste echte e-commerce applicatie (vervolg) 1 Internetapplicaties Deel 12: Eerste echte e-commerce applicatie: Ontwerp (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
Deel X: JSP + Java + database 1 Internetapplicaties Deel 10: JSP + Java + database: Client Server via http.
Deel XI Eerste echte e-commerce applicatie 1 Internetapplicaties Deel 11: Eerste echte e-commerce applicatie: Ontwerp.
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Starten met PHP Dynamischer bouwen. PHP is een een scripttaal waarmee de server pagina’s in elkaar kunt laten zetten. Het verschil met HTML: Een php pagina.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
JSF cursus deel 1 oefeningen
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
1. Starten Zet de telefoon aan en voer je pin code in Als dit scherm verschijnt klik dan vervolgens op de Boordcomputer Icoon 2.1 Inloggen Log in door.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
Java & het Web Programma: Databases (jdbc, JNDI, ORM, JPA)
Java & het Web Programma: 3rd party libraries Standard actions (E)xpression (L)anguage.
Java & het Web Programma: Beveiliging Filters. Security.....wat is dat(1)? Beveiliging draait om 4 belangrijke steunpilaren: 1.Authenticatie: is de persoon.
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Java & het Web Programma: Sessies JSP. Stateless vs. Stateful(1) HTTP is stateless WAT IS STATELESS?
Java & het Web Programma: JSP. JSP....herhaling Welke van de volgende expressions is geldig/ongeldig? %>
Inloggen >> Gegevensaanlevering en controle in Peridos In Release 3.3 van Peridos is er een nieuwe module gebouwd voor het aanleveren en bekijken van gegevens.
GEGEVENSSTRUCTUREN IN.NET. Inleiding  Enumerated type  Structure  Collecties  Typed collections  Untyped collections.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Objectgeoriënteerd Programmeren (2)
Training: Cliëntsessies
Gameprogrammeren: Objecten en geheugen
TranSearch Real Time Document & Asset Management Web Client
Gameprogrammeren: Methoden
OOS Object geOrienteerd Software-ontwerp - 5
Gameprogrammeren: Tiles en File I/O in Tick Tick
Unified Modeling Language
Training: Cliëntsessies
ASP.NET MVC Web Development
ASP.NET MVC Web Development
– Software development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Internetapplicaties - V Sessies 1 Internetapplicaties Deel 5: Sessies

Internetapplicaties - V Sessies2 Boeken/tutorials:  Beginning JSP Web Development, Wrox  Vooral hfdst. 11  internet: in google: session object jsp sun

Internetapplicaties - V Sessies3 Doelstelling  Begrijpen wat een sessie is en waarom een sessie-object nodig is.  Informatie kunnen bijhouden en opvragen i.v.m. sessies

Internetapplicaties - V Sessies4 Probleem: HTTP-protocol is toestandsloos (stateless)  HTTP: een voorbeeld  De URL wordt ingetikt in de adresbalk van een client browser.  De browser opent een HTTP-connectie naar de web server van microsoft en stuurt een request voor de default pagina  De web server antwoordt en stuurt de juiste pagina terug naar de client browser.  De connectie wordt verbroken  De gebruiker klikt op een link in de pagina  De browser opent een HTTP connectie  …  De connectie wordt verbroken

Internetapplicaties - V Sessies5 Probleem: HTTP-protocol is toestandsloos (stateless)  Met HTTP op zich kun je het verband tussen opeenvolgende connecties niet kennen. De connecties worden verbroken.  Echte applicaties moeten informatie over de gebruiker kunnen bijhouden:  vb: Terwijl een klant van een online bestellingsapplicatie doorheen de virtuele winkel wandelt, mag zijn virtuele winkelkarretje niet telkens leeggemaakt worden als hij op een nieuwe pagina klikt !

Internetapplicaties - V Sessies6 Oplossingen: overzicht  Cookies  Informatie opslaan in bestand bij de client  URL herschrijving (URL rewriting)  Achteraan de URL wordt gebruikersinfo toegevoegd  Verborgen velden (hidden fields)  Gebruiker kan enkele formvelden niet zien of veranderen  In deze velden wordt gebruikersinfo bewaard  JSP session object  Gebruikt al de technieken hierboven  Verbergt technische details

Internetapplicaties - V Sessies7 Cookies  Bevatten naam-waarde paren (name-value pairs).  Worden bewaard in tekstbestanden op client machine.  Worden gemaakt door een server-machine.  De servermachine die een cookie gemaakt heeft, krijgt zijn cookie terug de eerstvolgende keer dat de client op hetzelfde domein komt.  Bevatten vervaldatum

Internetapplicaties - V Sessies8 Cookies: Voorbeeld  U creëert de nodige folders: c:\jakarta-tomcat \webapps\ hfdst5\WEB-INF hfdst5\WEB-INF  U creëert het bestand AddCookie.jsp : c:\jakarta-tomcat \webapps\ hfdst5\AddCookie.jsp hfdst5\AddCookie.jsp U tikt de JSP-code die volgt in dit bestand in: U tikt de JSP-code die volgt in dit bestand in:

Internetapplicaties - V Sessies9 AddCookie.jsp <html> Cookie bewaren op uw PC Cookie bewaren op uw PC <% <% Cookie mijnCookie = new Cookie("gebruiker","Peter");mijnCookie.setMaxAge(24*60*60); response.addCookie(mijnCookie); response.addCookie(mijnCookie); %> %> Read Cookie Read Cookie </html>

Internetapplicaties - V Sessies10 Cookies: Voorbeeld  U creëert het bestand GetCookie.jsp : c:\jakarta-tomcat \webapps\ hfdst5\GetCookie.jsp hfdst5\GetCookie.jsp U tikt de JSP-code die volgt in dit bestand in: U tikt de JSP-code die volgt in dit bestand in:

Internetapplicaties - V Sessies11 GetCookie.jsp <html> Cookie ophalen van uw PC Cookie ophalen van uw PC De 'gebruiker', De 'gebruiker', bewaard op deze PC, wordt getoond: bewaard op deze PC, wordt getoond: <% <% %> %> </html>

Internetapplicaties - V Sessies12 GetCookie.jsp (vervolg) <% Cookie[] cookieRij = request.getCookies(); Cookie mijnCookie; Cookie mijnCookie; boolean found = false; boolean found = false; for (int i=0; i < cookieRij.length && (! found) ; i++){ for (int i=0; i < cookieRij.length && (! found) ; i++){ mijnCookie = cookieRij[i]; mijnCookie = cookieRij[i]; if ( mijnCookie.getName().equals("gebruiker") ){ if ( mijnCookie.getName().equals("gebruiker") ){ out.println("De 'gebruiker' op deze PC is " + mijnCookie.getValue()); mijnCookie.getValue()); found =true; found =true; } }%>

Internetapplicaties - V Sessies13 Cookie-voorbeeld uittesten  Maak een shortcut naar de volgende jsp- pagina (hierbinnen wordt GetCookie.jsp opgeroepen)

Internetapplicaties - V Sessies14 Resultaat van GetCookie.jsp

Internetapplicaties - V Sessies15 Het cookiebestand

Internetapplicaties - V Sessies16 Cookiebestand: inhoud gebruikerPeterlocalhost/hfdst5/ *

Internetapplicaties - V Sessies17 URL herschrijving (URL rewriting)  Gebruikersinformatie wordt als naam-value pair geplakt achter iedere URL die vanuit de pagina kan bereikt worden.  Zo wordt gebruikersinformatie heen en weer doorgegeven tussen client en server en worden verschillende connecties verbonden tot een ‘sessie’

Internetapplicaties - V Sessies18 Verborgen velden (hidden fields)  Gebruikersinformatie, gekend door de server wordt telkens meegegeven in hidden fields binnen een dynamisch gegenereerde form.  De gebruiker geeft die velden weer mee aan de server (zonder het te weten). Vb:

Internetapplicaties - V Sessies19 De JSP-oplossing: session-object  session een is impliciet object zoals request  Van het type: javax.servlet.http.HttpSession  Achter de schermen worden technieken als cookies en URL rewriting gebruikt.  Binnen een sessie-object kunnen name-value- pairs bewaard worden. Het statische type van een value is Object.

Internetapplicaties - V Sessies20 Session-object: enkele methods  boolean session.isNew() Zolang de gebruiker geen 2e keer een request doet, blijft isNew() true, vanaf de 2e keer is het true  String session.getId() Geeft de id terug waarmee de sessie wordt geïdentificeerd.  int session.getMaxInactiveInterval() Geeft aan hoe lang (in seconden) de sessie blijft bestaan zonder reactie van de gebruiker. -1 = voor altijd. De default-periode wordt bepaald in het web.xml-bestand binnen uw WEB-INF folder.

Internetapplicaties - V Sessies21 WEB-INF\web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " " </web-app>

Internetapplicaties - V Sessies22 Voorbeeld  U creëert het bestand ToonSessie.jsp : c:\jakarta-tomcat \webapps\ hfdst5\ToonSessie.jsp hfdst5\ToonSessie.jsp U tikt de JSP-code die van de het bijgevoegd sourcecodebestand in U tikt de JSP-code die van de het bijgevoegd sourcecodebestand in

Internetapplicaties - V Sessies23 Resultaat:

Internetapplicaties - V Sessies24 Session scope (sessie-bereik)  Idee: JSP beans kunnen een verschillende ‘scope’ hebben.  I.p.v. handmatig in session object te bewaren ->  Gewoon session scope specifiëren. Voorbeeld: <jsp:useBean id = “karretje” scope = “session“ class = “Winkelkar”> class = “Winkelkar”>

Internetapplicaties - V Sessies25 Soorten scopes  page (default)  Geen toegang tot de bean vanuit andere pagina’s.  Bij 2e bezoek of page reload -> beaninhoud verdwijnt.  request  De bean is toegankelijk voor ‘vanuit deze pagina opgeroepen’ andere pagina’s.  session  De bean wordt bewaard in het session object…  …en is dus toegankelijk binnen alle pagina’s in de sessie  application  De bean wordt bewaard in het application object…  … en is dus toegankelijk voor iedereen die de applicatie gebruikt.

Internetapplicaties - V Sessies26 Session scope achter de schermen  We hernemen het voorbeeldje: Achter de schermen geeft dit ongeveer : if ( session.getAttribute(“karretje”) == null ){ if ( session.getAttribute(“karretje”) == null ){ Winkelkar karretje = new Winkelkar(); Winkelkar karretje = new Winkelkar(); session.setAttribute(“karretje”, karretje); session.setAttribute(“karretje”, karretje);}else{ Winkelkar karretje = Winkelkar karretje = (Winkelkar) session.getAttribute(“karretje”); (Winkelkar) session.getAttribute(“karretje”);}

Internetapplicaties - V Sessies27 Session scope: Voorbeeld We zullen een Winkelkar-applicatietje maken m.b.v. een bean met session scope. U creëert folder en bestand: c:\jakarta-tomcat \webapps\hfdst5\WEB-INFclasses\be\scvobirm\sessions\Winkelkar.java U creëert het bestand: c:\jakarta-tomcat \webapps\hfdst5\Koop.jsp (Zie ook bijgevoegde broncodebestanden.)

Internetapplicaties - V Sessies28 Winkelkar.java (deel 1) package be.scvobirm.sessies; import java.util.ArrayList; public class Winkelkar{ private ArrayList kar = null; private ArrayList kar = null; private String produkt = null; // hulp-datafield private String produkt = null; // hulp-datafield private String submit = null; // hulp-datafield private String submit = null; // hulp-datafield public Winkelkar(){ public Winkelkar(){ kar = new ArrayList();// lege lijst maken kar = new ArrayList();// lege lijst maken } public void setProdukt(String produkt){ public void setProdukt(String produkt){ this.produkt = produkt; this.produkt = produkt; } public void setSubmit(String submit){ public void setSubmit(String submit){ this.submit = submit; this.submit = submit; } //… ZIE DEEL 2 //… ZIE DEEL 2}

Internetapplicaties - V Sessies29 Winkelkar.java (deel 2) public ArrayList getKar(){ public ArrayList getKar(){ ArrayList kopie = new ArrayList(); ArrayList kopie = new ArrayList(); kopie.addAll(kar); // representatie niet doorgeven ! kopie.addAll(kar); // representatie niet doorgeven ! return kopie; // alternatief: return kar return kopie; // alternatief: return kar } public void processRequest(){ public void processRequest(){ if (submit != null) if (submit != null) if (submit.equals("toevoegen")) if (submit.equals("toevoegen")) kar.add(produkt); kar.add(produkt); else // submit == "remove" else // submit == "remove" kar.remove(produkt); kar.remove(produkt); produkt = null; // leegmaken produkt = null; // leegmaken submit = null; // leegmaken submit = null; // leegmaken } } // die had je al!

Internetapplicaties - V Sessies30 Winkelkar.java: Opmerkingen  public ArrayList getKar(){ ArrayList kopie = new ArrayList(); ArrayList kopie = new ArrayList(); kopie.addAll(kar); kopie.addAll(kar); return kopie; return kopie;} Waarom niet return kar ??? OO basisprincipe: operaties op attributen mogen alleen gebeuren via speciaal daarvoor voorziene methoden. Waarom niet return kar ??? OO basisprincipe: operaties op attributen mogen alleen gebeuren via speciaal daarvoor voorziene methoden. kar teruggeven zou betekenten dat de client de lijst kan aanvullen of verkleinen zonder de door Winkelkar voorziene methoden te gebruiken.

Internetapplicaties - V Sessies31 Winkelkar.java: Opmerkingen  public void processRequest(){ if (submit != null) if (submit.equals("toevoegen")) if (submit.equals("toevoegen")) kar.add(produkt); kar.add(produkt); else // sumit.equals(“verwijderen“) else // sumit.equals(“verwijderen“) kar.remove(produkt); kar.remove(produkt);…} We gaan er hier van uit dat submit de actie bevat die we moeten uitvoeren. Produkt bevat het laatst gespecifieerde produkt. processRequest is de enige methode voor clients om produkten toe te voegen of te verwijderen.

Internetapplicaties - V Sessies32 Koop.jsp (deel 1) <html> ! Winkelkar-applicatie ! ! Winkelkar-applicatie ! <body><center> Voeg een produkt toe aan uw winkelkarretje: Voeg een produkt toe aan uw winkelkarretje: knolselder knolselder danioke danioke </form> </center></body></html>

Internetapplicaties - V Sessies33 Koop.jsp (deel 2) <!-- Invullen van de bean properties vanuit de oproeper-parameters en request processing:--> <% String submit = request.getParameter("submit"); String submit = request.getParameter("submit"); if (submit != null){ if (submit != null){%><hr> Uw winkelkarretje Uw winkelkarretje <p> <jsp:useBean id = "karbean" scope = "session" class = "be.scvobirm.sessies.Winkelkar" /> class = "be.scvobirm.sessies.Winkelkar" />

Internetapplicaties - V Sessies34 Koop.jsp (deel 3) <% <% ArrayList kar = karbean.getKar(); ArrayList kar = karbean.getKar(); for (int i = 0; i < kar.size(); i++){ for (int i = 0; i < kar.size(); i++){ %> %> &submit=verwijderen">Verwijderen &submit=verwijderen">Verwijderen <% <% } %> %>

Internetapplicaties - V Sessies35 Koop.jsp (deel 4) <% <% if (kar.size() == 0){ if (kar.size() == 0){ %> %> Geen produkten geselecteerd. Geen produkten geselecteerd. <% <% } %> %></table><%}%>

Internetapplicaties - V Sessies36 1e bezoek

Internetapplicaties - V Sessies37 Opmerkingen 1e bezoek  1e bezoek aan de pagina:  De product drop down list wordt getoond  De request parameter “submit” bestaat NIET, submit is dus null. Stel, de gebruiker selecteert ‘danioke‘ en drukt op de submit-knop…  De url Koop.jsp?produkt=danioke&submit=toevoegenKoop.jsp?produkt=danioke&submit=toevoegen wordt naar de server gestuurd. (parameters zichtbaar als method = “get”) Koop.jsp?produkt=danioke&submit=toevoegen

Internetapplicaties - V Sessies38 2e bezoek

Internetapplicaties - V Sessies39 Opmerkingen 2e bezoek  2e bezoek aan de pagina:  De product drop down list wordt getoond  De request parameter “submit” bestaat nu WEL, en de submit-variabele is nu “toevoegen”.  De request bevat ook nog het produkt.  Beide parameters worden automatisch in de karbean gezet o.a. m.b.v. deze code:

Internetapplicaties - V Sessies40 Opmerkingen 2e bezoek (vervolg)  De karbean wordt aangevuld met het produkt (processRequest), gekozen tijdens het 1e bezoek.  De arraylist die de strings van produkten bevat wordt doorlopen. Voor elk produkt wordt een extra rij toegevoegd aan de html-tabel van produkten. Stel, de gebruiker klikt op de ’verwijderen’-link naast ‘danioke‘ in de productentabel… Stel, de gebruiker klikt op de ’verwijderen’-link naast ‘danioke‘ in de productentabel…  De url wordt naar de server gestuurd.

Internetapplicaties - V Sessies41 3e bezoek

Internetapplicaties - V Sessies42 Opmerkingen 3e bezoek  3e bezoek aan de pagina  De code zorgt nu dat de parameters product=danioke&submit=verwijderen in de karbean worden bewaard zorgt nu dat de parameters product=danioke&submit=verwijderen in de karbean worden bewaard  karbean.processRequest() zal dit keer het gegeven produkt uit de lijst verwijderen  Het feit dat intern de karbean binnen het session-object wordt bewaard, maakt dat doorheen verschillende bezoeken, de winkelkar zijn produkten onthoudt.