Vous êtes sur la page 1sur 5

Java Server Pages Gestion de session

Java Server Pages Gestion de session

Plan

JSP et gestion des sessions dans JavaEE


Architecture Web 2/5 Louis Gesbert
ISIAG-IUP MIAGE Paris XII

Java Server Pages Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets Gestion de session Contexte Fonctionnement des sessions M ethodes de suivi

2006

Architercture web, 2006

JSP, sessions

1/21

Architercture web, 2006

JSP, sessions

2/21

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Quest-ce quil y a dedans

Principe
Fichier .jsp pr esent directement dans le r epertoire de lapplication Compil e dynamiquement lors du premier acc` es, devient une servlet Dispose donc de la m eme puissance

Programmer des servlets pour tout le contenu statique peut etre p enible. JSP ore une couche dabstraction suppl ementaire.

Contenu dune JSP


Contenu statique Format HTML standard Contenu dynamique Balises sp eciques : similaire ` a PHP
Inclusion de code Java Appel ` a des servlets ou dautres JSP D enition de balises utilisateur

Comparaison
Acc` es facilit e (pas besoin de lier dans web.xml) Ecriture plus rapide Moins souple Pas pratique pour des fonctions importantes JavaEE ore donc une interaction facile entre les deux.

Architercture web, 2006

JSP, sessions

4/21

Architercture web, 2006

JSP, sessions

5/21

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Exemple
<% @ page import =" java . util .*" errorPage ="/ error . jsp " % > < > < > < > Une magnifique JSP </ > </ < > < > Bonjour </ > <% = new Date (). toString () % > </ > </

Syntaxe de JSP
Directives : contr ole sur la g en eration du servlet Inclusion brute <%@ include file="fichier.jspf" %> Param` etres servlet <%@ page import="..." contentType="..." Scripts D eclarations <%! int i = 3; %> Scriptlets <% int x = "chaine"; out.println(x); %> Expressions <%= "variable = " + var.toString() %> Actions JSP Inclusion JSP <jsp:include page="autrepage.jsp" > Param` etres de requ ete <jsp:param name="nparam" value="val" > Redirection JSP <jsp:forward page="autrepage.jsp" > Tags utilisateur (taglibs) Taglib Blip <blip:untag>
6/21 Architercture web, 2006 JSP, sessions

>

%>

Bonjour
Mon Sep 18 22:44:35 CEST 2006

Architercture web, 2006

JSP, sessions

7/21

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Transformations des JSP


Ces transformations sont faites automatiquement lors du premier acc` es ` a la JSP, ou si elle est modi ee.

Scripts

Traduction
D enition des m ethodes de base dune servlet (service(), ici
_jspService())

Commentaire D eclaration Scriptlet Expressions

<%-- texte --%>

(di erent du commentaire HTML) M ethodes et variables dinstance de

<%! int x = 3; %>

Appel ` a des m ethodes Java pour l ecriture du code statique (write()) Code de r ecup eration des erreurs (try...
catch)

la servlet Traitements eectu es par la servlet (code de la m ethode service())


<% code %> <%= expression %> string

Compilation
Identique ` a celle dune servlet, mais automatique. On peut toutefois la faire davance pour eviter un d elai sur le serveur.
Architercture web, 2006 JSP, sessions 8/21

(sans ;) Expression evalu ee en et int egr ee directement dans la page

Architercture web, 2006

JSP, sessions

9/21

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Exemple
<% @ page isErrorP a ge =" false " errorPage ="/ error . jsp " % > <% ! private int userCoun te r = 0; private int hitCounte r () { return ++ userCount e r ; } %> < > < > < > Une JSP un peu plus complexe </ > </ > < > < > Deuxieme exemple de page </ > Vous etes le <% = hitCounte r () % > < >e </ > visiteur sur cette page ! <% for ( int i =0; i < userCoun te r ; i ++) { % > :) <% } % > </ > < >
Architercture web, 2006 JSP, sessions 10/21

Variables pr ed enies
` lint A erieur des balises <% code %> et <%= expression %> (i.e. dans la m ethode service()), certaines variables famili` eres sont pr ed enies :
request

(de type

HttpServletRequest ) HttpServletResponse )

response out

(de type

(de type

JspWriter,

sous-type de

PrintWriter )

session

(de type

HttpSession ) ServletContext )

application config

(de type (de type

(de type

ServletConfig ) PageContext )

pageContext page

( equivalent ` a this)

Architercture web, 2006

JSP, sessions

11/21

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Directives
<%@directive param=valeur [param=valeur...] %>

Actions JSP
<jsp:tag param=valeur [param=valeur...] >...</jsp:tag> <jsp:tag param=valeur [param=valeur...] />

Param etrage de la page pour la traduction et la compilation include (param` etre : file) : Inclut le texte brut (ex : header http) page : Contr ole des attributs de la page et du servlet. Param` etres :
type de contenu (text/html) import Classes Java ` a utiliser errorPage Page ` a acher en cas derreur isErrorPage Si la page est une page derreur session Si la page fait partie dune session
contentType

jsp:include (param` etre : sous-page/servlet jsp:forward (param` etre : sous-page/servlet

page) page)

: appelle une : passe la main ` a une

jsp:useBean, jsp :setProperty, jsp:getProperty : int egrer des composants r eutilisables jsp:plugin : utiliser une applet jsp:param : utilis e dans include ou forward, ajoute des param` etres ` a la requ ete

taglib : biblioth` eques de tags ` a charger

Architercture web, 2006

JSP, sessions

12/21

Architercture web, 2006

JSP, sessions

13/21

Java Server Pages Gestion de session

Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets

Java Server Pages Gestion de session

Contexte Fonctionnement des sessions M ethodes de suivi

Passage de contr ole

Probl` eme

Gr ace ` a jsp:forward et jsp:include, une JSP peut passer la main ` a un servlet. Linverse est possible ` a laide des RequestDispatcher :
R e q u e s t D i s p a t c h e r dispat = g e t S e r v l e t C o n t e x t (). g e t R e q u e s t D i s p a t c h e r ( " URL " ); dispat . include ( request , response ); // ou bien dispat . forward ( request , response );

HTTP fonctionne par requ etes : pas de connexion permanente Un serveur HTTP peut supporter un tr` es grand nombre dutilisateurs Il faut donc un m ecanisme pour Identier un utilisateur dapr` es sa requ ete M emoriser la session de cet utilisateur La d etruire apr` es usage

Architercture web, 2006

JSP, sessions

14/21

Architercture web, 2006

JSP, sessions

16/21

Java Server Pages Gestion de session

Contexte Fonctionnement des sessions M ethodes de suivi

Java Server Pages Gestion de session

Contexte Fonctionnement des sessions M ethodes de suivi

Dur ees de vie dans une application web


Quatre scopes possibles :

Principe

Vie dune session


cr e ee par le servlet lors dune premi` ere requ ete port ee page request session application accessible depuis page courante pages incluses, redirig ees s erie de requ etes toute lapplication dur ee de vie jusqu` a la n du traitement par la servlet jusqu` a lenvoi de la r eponse session de lutilisateur application identi ee dans la r eponse au client signal ee lors de la nouvelle requ ete du client Identier les utilisateurs permet : de rendre des objets persistants (acc` es bdd. . .) de g erer les pr ef erences de pr e-remplir les formulaires Les sessions orent une solution interm ediaire bas ee sur lutilisateur
Architercture web, 2006 JSP, sessions 17/21 Architercture web, 2006 JSP, sessions 18/21

Java Server Pages Gestion de session

Contexte Fonctionnement des sessions M ethodes de suivi

Java Server Pages Gestion de session

Contexte Fonctionnement des sessions M ethodes de suivi

Attributs de session
HttpSession session = request.getSession(true); Cr ee ou r ecup` ere la session. On peut ensuite cr eer ou r ecup erer des objets dans la session, qui fonctionne comme une hashtable. session.setAttribute(name,value); Ajoute une paire clef/valeur ` a la session. attention : value doit etre serializable. Object x = session.getAttribute(name); R ecup` ere un objet stock e dans la session. session.removeAttribute(name); String[] l = session.getAttributeNames(); Exceptions lev ees : java.lang.IllegalStateException
Architercture web, 2006 JSP, sessions 19/21

Gestion de la session

session.isNew() Est-ce que la session est nouvelle (non encore accept ee par le client). session.invalidate() Supprimer la session session.getCreationTime() session.getAccessedTime()

Architercture web, 2006

JSP, sessions

20/21

Java Server Pages Gestion de session

Contexte Fonctionnement des sessions M ethodes de suivi

M ethodes de suivi
Les cookies
Le plus simple pour le programmeur Le serveur communique un identiant au client Le client se charge de lint egrer dans les requ etes D ependant du client Dur ee de vie et persistance param etrables

La r e ecriture dURL
Param` etres ajout es dans le chemin dacc` es Meilleure compatibilit e Oblige ` a syst ematiquement appeller encodeURL() d` es quon pose un lien dans une page.
Architercture web, 2006 JSP, sessions 21/21