Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.

Slides:



Advertisements
Verwante presentaties

Advertisements

LRP PASTORALE EENHEID release 2.1 Koos Willemse.
Databases via internet
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
OGO Markten en sociale organisatievormen voor technologie en innovatie 0A412 1 Markten en sociale organisatievormen voor technologie en innovatie feedback.
Van domeinklasse tot implementatie
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Hoofdstuk 2 Hallo, C# !.
Les 2 Basisbouwstenen (deel 1)
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Oefeningen Hoofdstuk 3.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
6.1 Inleiding HOOFDSTUK 6 METHODEN
Lezing door Kick de Wolff
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
CSA, week 31 CSA week 3. CSA, week 32 Terugblik opdracht (client)  Stub creëren uitgaande van IOR ( string_to_object ) of stub creëren uitgaande van.
Internetapplicaties - VI Herhaling 1 Internetapplicaties Deel 6: Herhaling.
Internetapplicaties - V Sessies 1 Internetapplicaties Deel 5: Sessies.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XX Hosting 1 Internetapplicaties Deel XX Hosting.
Deel X: JSP + Java + database 1 Internetapplicaties Deel 10: JSP + Java + database: Client Server via http.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Datacommunicatie en netwerken
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
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.
Encapsulatie: Every man is an island upon himself.
Polymorphisme en Interfaces: inleiding
CSA, week 61 CSA week 6. CSA, week 62 Aspecten van opdracht 6 zReeds bekend: yCORBA inclusief Naming Server yApplets yInterBase met InterClient/InterServer.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
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.
Let’s go! ›Beginnerspresentatie ›Starten met prospero ›Verschil CMS en web navigator ›Nieuwe content > nieuwe folder aanmaken ›Bestanden uploaden ›Linkobject.
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: De essentie van een web applicatie (webapp) Protocol van een webapp Talen van het web Java Servlets & Containers.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
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? %>
Java & het Web Programma: JSTL Uitgebreide demo. JSP....herhaling Standard actions en (E)xpression (L)anguage: -Standard actions hebben de syntax:
Codetuts Academy Les 2 Module 2a Php Fundamentals 1.
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.
GUI & classes Een Gui in een class steken en het object gebruiken.
Windows applicatieontwikkeling
Objectgeoriënteerd Programmeren (2)
Training: Cliëntsessies
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Methoden
Gameprogrammeren: Herhalingen
Gameprogrammeren: Properties
Tinpro015b-les4 Klassen.
Gameprogrammeren: Abstracte klassen
Unified Modeling Language
Gameprogrammeren: Klassen en objecten
Training: Cliëntsessies
ASP.NET MVC Web Development
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety

Taken van de container Een servlet verblijft/draait in een servlet container (of gewoon 'container'). De container staat ten dienste van de servlets in de container. De container heeft veel taken waaronder: Initialiseert een ServletConfig per servlet Initialiseert één ServletContext voor alle servlets Instantieert listeners Coordineert de 'lifecycle' van attributen binnen een bepaalde scope. Uiteraard heeft de container meer taken (zie les 1)

ServletConfig....wat is dat(1)? Wat is een javax.servlet.ServletConfig? Een object, aangemaakt door de container, waarin informatie voor een specifieke servlet kan worden meegegeven. Stel in servlet A wil je in de response een bepaalde naam terug geven om te tonen: protected void doGet(HttpServletRequest req, HttpServletResponse res)...{... out.println("Mijn naam is Piet");... } De naam 'Piet' staat nu hard gecodeerd in de servlet en kan alleen veranderd worden door deze te wijzigen en de servlet opnieuw te compileren.

ServletConfig....wat is dat(2)? In web.xml: hello test.HelloServlet name Piet hello /hello In servlet uitlezen met: getServletConfig().getInitParameter("name");

ServletContext....wat is dat? Wat is een javax.servlet.ServletContext? Een object, aangemaakt door de container, waarin informatie voor alle servlets in de webapp kan worden meegegeven. In web.xml: name Piet <servlet Aanroep: getServletContext().getInitParameter("name");

ServletConfig & ServletContext ServletContext ServletConfig: elke servlet/JSP z'n eigen ServletConfig Servlet A Servlet B Servlet CJSP

ServletContext & ServletConfig De ServletContext en ServletConfig worden slechts één keer geladen, bij het initialiseren van de servlet. Je kunt deze parameters dus niet wijzigen zolang de webapp draait. De parameters zijn altijd String objecten wat nu als je bijv. een DataSource object wil initialiseren?

Listeners...wat zijn dat(1)? Een listener is een object dat geinstantieerd wordt als zich een bepaalde gebeurtenis binnen de webapp voor doet. Bijvoorbeeld, een webapp wordt gedeployed --> dit is een event dat één keer op treedt. javax.servlet.ServletContextListener Dit is een interface die door een class geimplementeerd moet worden. Heeft twee methodes: public void contextInitialized(ServletContextEvent sc); public void contextDestroyed(ServletContextEvent sc);

Listeners...wat zijn dat(2)? Listeners declareer je in de web.xml: com.example.MijnServletContextListener.... Deze class wordt in WEB-INF/classes gezet (vergeet niet de package structuur aan te maken)

Scope....wat is dat(1)? In een webapp zijn 4 soorten scope. Een scope is een bepaald gebied binnen een webapp. Application scope (gehele webapp) Session scope (omvat meerdere requests) Request scope (= threadsafe) Page scope

Scope en attributen...wat is dat(1)? In een scope kunnen zelf gemaakte objecten (attributen) worden gecreëerd welke informatie kunnen doorgeven. Een attribuut is een soort bulletin bord waar informatie op geprikt is om aan een ander (hier servlet) door te geven. De vraag is nu: 1.Wie heeft toegang tot deze attributen? 2.Hoe lang 'leven' deze attributen, m.a.w. wat is de scope van een attribuut?

Scope en attributen...wat is dat(2)? Application scope (Context scope) Servlet A en Servlet B kunnen het application attribute "name" uitlezen. Context attributes attribuut name Servlet A Servlet B

Scope en attributen...wat is dat(3)? Session scope Webapp, container Servlet A Sessie 1 Sessie 2 attribuut naam attribuut Servlet B Als servlet A en Servlet B requests verwerken die in dezelfde sessie zijn gecreeerd als het attribuut 'naam' dan hebben de servlets toegang tot 'naam'

Scope en attributen...wat is dat(4)? Request scope Servlet A geeft een request waarin een attribuut staat door aan servlet B. B heeft toegang tot dit attribuut. Servlet AServlet B Request attribuut adres

Scope en attributen...wat is dat(5)? Application scope: objecten globaal toegankelijk voor alle servlets (en dus ook JSP's) in de webapp. Session scope: objecten toegankelijk voor servlets welke requests 'verwerken' die gecreëerd zijn in dezelfde sessie als de objecten. In principe zolang de gebruiker is ingelogd of bijv. een winkelwagentje Request scope: objecten zijn alleen toegankelijk voor servlets die hetzelfde request verwerken. Zodra het request eindigt in een response wordt het object verwijderd. Page scope: objecten zijn alleen toegankelijk binnen een bepaalde servlet/JSP.

Attributen doorgeven/verkrijgen Doorgeven/zetten: void setAttribute(String lookupName, Object value) bijv. request.setAttribute("mijnreqattribuut", object) Verkrijgen: Object getAttribute(String lookupName) bijv. session.getAttribute("mijnsesattribuut") Verwijderen: void removeAttribute(String lookupName) bijv. application.removeAttribute("mijnappattribuut")

Threadsafety...wat is dat(1)? De container start een nieuwe thread voor elk request. Als meerdere requests dezelfde servlet.doGet() methode aanroepen, dan zijn alle variabelen gedeclareerd binnen de methode threadsafe, d.w.z. deze variabelen kunnen niet door een andere thread gewijzigd worden.

Threadsafety...wat is dat(2)? Alle scopes/variabelen die toegankelijk zijn voor meerdere requests, zijn NIET threadsafe! Voorbeeld: een attribuut in application scope. 1.Jan start roept servlet A aan met de request parameter 'getal' met waarde=10. In de application scope staat al de waarde '2' 2.Via een berekening (bijv. 2*10) in de servlet wordt er een response teruggegeven met de waarde 20. De uitkomst wordt in de application scope gezet. Daar staat nu dus '20' 3.Piet doet ook een request met getal=5. In de application scope komt nu '100' te staan. 4.Jan doet weer een request met getal=1. Hij zou nu '20' verwachten, maar krijgt '100' terug. De thread van Piet heeft de waarde gewijzigd. Vraag is de session scope threadsafe?

Threadsafety...wat is dat(4)? Sessies zijn nog niet behandeld, maar ze zijn er om 'conversational state' tot stand te brengen tussen één client en een server. Dus één request per keer dus geen andere thread die een object in jouw sessie kan wijzigen...dus threadsafe....toch? Is het mogelijk om vanaf één client meerdere requests tegelijkertijd naar de servlet te sturen?

Threadsafety....wat is dat(5)? Alleen de request scope is threadsafe!