INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.

Slides:



Advertisements
Verwante presentaties
Grammar Chapter 4 – G1 What en Which.
Advertisements

Deel XVII: JSP-applicatiearchitectuur 1 Internetapplicaties Deel 17: JSP-applicatiearchitectuur Model 2 = MVC = Model View Controller.
Databases via internet
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
Denken en gewoon doen. Leren is eerder het vuur aansteken dan een emmer vullen.
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
Webapplicaties: de serverkant
OOP met Java Sessie 1.
HTML Les 1: Introductie HTML
Klassen en objecten.
Hoofdstuk 6: Controle structuren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
GWT-RPC Bram Vandeputte. Wat is GWT-RPC Raamwerk voor envoudige client-server uitwisseling van Java Objecten. Gebaseerd op de Java Servlet architectuur.
PLDA – Connectiviteit Rudolf de Schipper Geoffroy Fauveaux 09/11/2004.
Interrogative sentences
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
Inleidend probleem Data structuur (hiërarchie van classes)
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Introductie in: PHP. Groei in webapplicaties Groei in webapplicaties Het ontstaan van PHP Het ontstaan van PHP De client-serverarchitectuur De client-serverarchitectuur.
Woordvolgorde met woorden van tijd
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.
In deze powerpoint vind je basis-grammatica: zaken die je na 3 onderbouwjaren eigenlijk niet onbekend voor mogen komen. Klik op een van onderstaande onderwerpen.
Deel XXI 1 Internetapplicaties Internetprogrammeren Capita Selecta.
Internetapplicaties - V Sessies 1 Internetapplicaties Deel 5: Sessies.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
Windows Applicaties Bouwen met Visual Studio.NET Sijmen Koffeman Development Consultant Microsoft.
JSF cursus deel 1 oefeningen
Joe de Developer Leergierig
The future  vorm 1: een voorspelling doen  Will + hele ww : I will see you soon  Let op: will + not = won't  Shall + hele ww: Shall I help you? 
Inleiding tot programmeren
Deltion College Engels B1 Gesprekken voeren [Edu/008] theme: ‘I have to arrest you, you’ve stolen my heart’ … can-do : kan een eenvoudig face-to-face gesprek.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Datacommunicatie en netwerken
Deltion College Engels B2 Lezen [Edu/004] thema: Scanning, a race against the time can-do: kan snel belangrijke detailinformatie vinden in lange en complexe.
JAVA: een platformonafhankelijke taal
2G 16 November Today’s lesson  Last class  Mull  Puffins  Check homework (ex )  Thursday 9 December: TEST UNIT 2.
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
Deltion College Engels B2 Schrijven [Edu/005] thema: Writing a hand-out can-do: kan een begrijpelijke samenvatting schrijven © Anne Beeker Alle rechten.
Klik op een vlag. Click on a flag Language: Ongewenste Cookies verwijderen Start Wat doen Cookies eigenlijk ? Cookies kunnen gebruikt worden voor het.
Deltion College Engels B1 En Spreken/Presentaties [Edu/003]/ Subvaardigheid lezen Thema: Once upon a time… can-do : kan een verhaal(tje) vertellen © Anne.
Prototyping Week 7 // Tweenlite & API. TweenMax Snel mooie en effectieve animatie.
Client side vs Server side Server side code Code wordt op de webserver uitgevoerd Bewerkt de html die naar de gebruiker gestuurd wordt voordat die verzonden.
WHY ME LORD WAAROM IK HEER. What did I ever done? Wat heb ik ooit gedaan.
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.
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.
Java & het Web Programma: De essentie van een web applicatie (webapp) Protocol van een webapp Talen van het web Java Servlets & Containers.
1 KPN Mobiel – Introductie Repository Object Browser & Designer 10 Designer 10g & Repository Object Browser Maandag 28 februari 2005 Lucas Jellema (AMIS)
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:
Functional Web Applications Implementation and Use of Client-Side Interpreters Jan Martin Jansen.
Loops en errors Array's Random try catch for loop while loop do while loop.
Key Process Indicator Sonja de Bruin
Gameprogrammeren: Lists en interfaces
Object georiënteerd programmeren
Innovatie met IBM Cloud Orchestrator.
OOS Object geOrienteerd Software-ontwerp - 5
English 23 April 2018.
ASP.NET MVC Web Development
Transcript van de presentatie:

INFITT01 - Internettechnologie WEEK 3

Programma Sessies JSP

Stateless vs. Stateful (1) HTTP is stateless … WAT IS STATELESS?

Server: "hi request from client X, nice to meet you" Stateless Stateless vs Stateful (2) Het draait om ‘conversational state’ Server: "hi request from client X, nice to meet you" Request van client X

Server: "hi request from client X, nice to meet you, use label 'xyz' next time you are here" Stateful Stateless vs Stateful (3) Het draait om ‘conversational state’ Server: "I see you've been here! Hello, what can I do for you again" Request van client X Request van client X met label ´xyz´

Client X doet een request P naar servlet A. Container start thread A op. In thread A wordt een attribuut in een HttpSession A gezet (bijv. het resultaat van een zoekopdracht) Client X Container HttpSession A setAttribute() HTTP session Servlet A Thread A

Thread A stuurt een response terug naar client X Client X Container HttpSession A HTTP session Servlet A Thread A

Client X doet een request Q naar servlet A. Container start thread B op. In thread B zoekt de sessie van Client X en zet een attribuut in een HttpSession A (bijv. het resultaat van een andere zoekopdracht) Client X Container HttpSession A setAttribute() HTTP session Servlet A Thread B Zelfde client, zelfde servlet, ander request, andere thread, zelfde sessie

Thread B stuurt een response terug naar client X Client Y Container HttpSession A HTTP session Servlet A Thread B In HttpSession A staan nu de resultaten (als attributen) van twee zoekopdrachten

HttpSession A Client Y doet een request R naar servlet A. Container start thread C op. In thread C zoekt de sessie van Client Y en zet een attribuut in een HttpSession B Client Y Container HttpSession B setAttribute() HTTP session Servlet A Thread C Andere client, ander request, zelfde servlet, andere thread, andere sessie

HttpSession A Client Y doet een request R naar servlet A. Container start thread C op. In thread C zoekt de sessie van Client Y en zet een attribuut in een HttpSession B Client Y Container HttpSession B setAttribute() HTTP session Servlet A Thread C Andere client, zelfde servlet, ander request, andere thread, andere sessie

HTTP session Een stateful http session kan o.a. bereikt worden door: – Session Cookies – URL rewriting

Session cookies & URL rewriting Cookies = ‘mini’ bestandje uitgewisseld tussen server en client bestaat alleen gedurende de sessie wordt door de container gebruikt voor terugvinden van sessie sessie niet meer geldig dan wordt cookie verwijderd als browser geen cookies accepteert dan URL rewriting eind van elke URL een uniek session_id geconcateneerd

HTTP session Het gebruik van cookies is heel eenvoudig: – In bijv. servlet: HttpSession session = request.getSession(); – container creëert een cookie en stuurt dit naar browser – browser stuurt (indien browser cookies accepteert) het met ieder request terug naar de server. Dit is alles, wat je NIET doet: De containter zorgt voor: – HttpSession object instantiëren – Cookie object instantiëren – Uniek sessionID genereren en aan cookie binden – Cookie in de response zetten

HTTP session Sommige gebruikers willen dat hun browser (uit veiligheid overwegingen) geen cookies accepteert. Hoe kun je nu toch een HttpSession opzetten??

HTTP session Oplossing: URL rewriting. Er wordt een uniek sessionID achter elke link geplaatst, bijv: HttpSession session = request.getSession(); out.println(" "); URL rewriting code moet je zelf toevoegen en wordt alleen door server gebruikt als cookies niet geaccepteerd worden.

HTTP session - vraag Hoe weet een container of cookies wel of niet werken en wanneer hij moet overschakelen op URL rewriting?

JSP Probleem – Opmaakcode schrijven (HTML) in een java servlet = lastig – Complexe, omvangrijke HTML (incl. CSS, Javascript, etc.) slecht leesbaar en onderhoudbaar. Een oplossing: JSP (Java Server Page) Een JSP combineert opmaakcode en java in één bron

JSP - voorbeeld Current Date time: of

JSP een JSP is eigenlijk gewoon een servlet!!!!! Bij eerste aanroep JSP (of na aanpassing JSP) – vertaalt container JSP 'MijnJSP.jsp' naar 'MijnJSP_jsp.java‘ – compileert ‘MijnJSP_jsp.java’ naar 'MijnJSP_jsp.class‘ – class geïnstantieerd tot een 'MijnJSP servlet'

JSP Wat is de javacode na vertaling van onderstaande JSP?

JSP package jsp_servlet; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import com.foo.bar; // Imported as a result of import … class _myservlet implements javax.servlet.Servlet, javax.servlet.jsp.HttpJspPage { // Inserted as a // result of int serverInstanceVariable = 1; … public void _jspService( javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response ) throws javax.servlet.ServletException, java.io.IOException { javax.servlet.ServletConfig config = …; // Get the servlet config Object page = this; PageContext pageContext = …; // Get the page context for this request

JSP javax.servlet.jsp.JspWriter out = pageContext.getOut(); HttpSession session = request.getSession( true ); try { out.print( " \r\n" ); out.print( " \r\n" ); … // From int localStackBasedVariable = 1; … out.print( " \r\n" ); … // From out.print( toStringOrBlank( "expanded inline data " + 1 ) ); … } catch ( Exception _exception ) { // Clean up and redirect to error page in … }

JSP directives: scriptlets: of expressions: wordt geconverteerd naar out.println(Counter.getCount()); declarations:

JSP Scriptlets en expressions eindigen altijd in de 'service methode' van het uiteindelijke servlet. Gedeclareerde variabelen zijn dus lokale variabelen. en eindigen als: public class … public void _jspService(HttpServletRequest …) { … int count=1; out.println(++count); }

JSP Declarations eindigen altijd als class instance variabelen eindigt als: public class MijnServlet extends … { int count =1; public void _jspService(HttpServletRequest …) { … }

JSP – impliciete objecten objecten meteen gebruiken zonder zoeken of creëren –JSPWriter - out –HttpServletRequest - request –HttpServletResponse - response –HttpSession - session –ServletContext - application –ServletConfig - config –JSPException - exception –PageContext - pageContext