Beruflich Dokumente
Kultur Dokumente
Plan
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
JSP, sessions
1/21
JSP, sessions
2/21
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
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.
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.
JSP, sessions
4/21
JSP, sessions
5/21
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
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
JSP, sessions
7/21
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
Scripts
Traduction
D enition des m ethodes de base dune servlet (service(), ici
_jspService())
Appel ` a des m ethodes Java pour l ecriture du code statique (write()) Code de r ecup eration des erreurs (try...
catch)
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
JSP, sessions
9/21
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
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
ServletConfig ) PageContext )
pageContext page
( equivalent ` a this)
JSP, sessions
11/21
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
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
page) page)
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
JSP, sessions
12/21
JSP, sessions
13/21
Quest-ce quune JSP ? Scripts Autres types de balises Interaction entre JSP et servlets
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
JSP, sessions
14/21
JSP, sessions
16/21
Principe
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()
JSP, sessions
20/21
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