Rapport tp2 j2ee

494 vues

Publié le

Rapport TP2 J2EE

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
494
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
21
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Rapport tp2 j2ee

  1. 1. DEUXIEME RAPPORT EN JAVA EE  Suivi de Session  L’objet HTTPSession  Définition  Fonctionnement d’une session  Méthode utilisées  Cycle de vie d’une session  Travaux Pratique Encadré Par : M Mohamed NAYA Préparé par Soukaina NAJIHI Soukaina BOUJADI d’une session ratique :
  2. 2. 2 2 2 DEUXIEME RAPPORT EN JAVA EE Sommaire : Remerciements..………………………………………………………..….……4 Suivi de session………..……………………….…………………………...…...5 L’objet HTTPSession……………………….……………………………..…...5 Définition d’une session……………………….…………………………..…...5 Fonctionnement d’une session………………….………………………...…...5 Méthode utilisées……………………….……………………………………...6 Cycle de vie d’une session……………………….………………………..…...6 Travaux Pratique……………………….…………………………….…..…...7 Suivi de session pour un compteur dynamique……..........….…..……..…7 Suivi de session pour un compteur statique……..........….………….……10 Récapitulations …………………………………………………….…...……12
  3. 3. 3 3 3 DEUXIEME RAPPORT EN JAVA EE Remerciement Au terme de ce travail, Nous tenons à remercier notre Cher professeur Monsieur Mohamed NAYA , pour ses précieuses directives et son suivi continu et pour tous les efforts qu'il a fournis en classe et qui ont porté leur fruits, et surtout pour son soutien continue et inconditionnel. Du fond du coeur, merci
  4. 4. 4 DEUXIEME RAPPORT EN JAVA EE Le protocole HTTP est un protocole non connecté (on parle aussi de protocole sans états, en anglais stateless protocol requête est traité indépendamment des autres et qu'aucun historique des différentes requêtes n'est conservé. Ainsi le serveur web ne peut pas se « souvenir » de la requête précédente, ce qui est dommageable dans des utilisat lequel le serveur doit mémoriser les achats de l'utilisateur sur les différentes pages. Il s'agit donc de maintenir la cohésion entre l'utilisateur et la requête, c'est-à-dire reconnaître les requêtes provenant du même utilisateur, associer un profil à l'utilisateur, connaître les paramètres de l'application (nombre de produits vendus, ...). On appelle ce mécanisme de gestion des états le « suivi de session » (en anglais session tracking). Le protocole http en bref  Le protocole HTTP est un protocole sans le serveur ignore qu'une s provient d'un m  En mode HTTP, pour le serveur, 2 requ successives d'un m  Le serveur En effet une adresse IP n'est pas suffisante pour identifier un utilisateur e protocol), cela signifie que chaque utilisations telles que le e-commerce, pour : séquence de requ même client . requêtes même client sont indépendantes HTTP voit les requêtes, pas les clients. 4 4 ), état => quence requêtes tes pendantes . tes,
  5. 5. 5 5 5 DEUXIEME RAPPORT EN JAVA EE L'objet HttpSession L'objet HttpSession permet de mémoriser les données de l'utilisateur, grâce à une structure similaire à une table de hachage, permettant de relier chaque id de session à l'ensemble des informations relatives à l'utilisateur. Ainsi en utilisant un mécanisme tel que les cookies, permettant d'associer une requête à un id, et l'objet HttpSession, permettant de relier des informations relatives à l'utilisateur à un id, il est possible d'associer facilement une requête aux informations de session ! Definition d’une session • Une session = Une suite d’interactions entre un client et Un serveur Web – Elle couvre plusieurs requêtes HTTP sur une période donnée • On peut utiliser les sessions pour – Mémoriser les actions d’un utilisateur unique – Exemples • achats en ligne (panier de commande) • examens à distance Fonctionnement d’une session  A la première requête vers une application web :  Un objet HttpSession est créé.  Ainsi qu’un identifiant unique pour cet objet.  L’identifiant est en général sauvegardé par un cookie appelé JSESSIONID seul l’identifiant de session est envoyé au client.  Grâce à cet identifiant, le serveur détermine l’objet session correspondant à la requête courante.  A toute nouvelle requête émise par l’utilisateur, le cookie est transmis via le serveur web et accédé par la méthode :
  6. 6. 6 DEUXIEME RAPPORT EN JAVA EE public String HttpSession.getId() Méthodes utilisées API de suivi de session HttpSession  Méthodes de création liées à la requête (HttpServletRequest)  HttpSession getSession() : retourne la session associée à l’utilisateur  HttpSession getSession(boolean p) : création selon la valeur de p  Gestion d’association (HttpSession)  Enumeration getAttributNames() : retourne les noms de tous les attributs  Object getAttribut(String name) : retourne l’objet associé au nom  setAttribut(String na, Object va) : modifie na par la valeur va  removeAttribut(String na) : supprime l’attribut associé à  Destruction (HttpSession)  invalidate() : expire la session  logout() : termine la session getAttribut("nom") renvoie un objet de type Object, qu’il faut donc caster. Cycle de vie d’une session  A sa création, une période de temps est affectée à la session.  Elle expire automatiquement à la fin de cette période (par défaut 30mns avec Tomcat).  Elle peut être invalidée explicitement par la servlet (HttpSession.invalidate()). Permet de fermer une session.  A l’expiration (invalidation), les données de l’objet session (HttpSession) sont retournées au moteur de servlets.  Les sessions ne sont donc pas invalidées à la fermeture du navigateur. 6 6 na
  7. 7. 7 7 7 DEUXIEME RAPPORT EN JAVA EE Travaux Pratique : 1- Suivi de session pour un compteur dynamique Dans cet exemple, nous allons savoir comment nous pouvons realiser un programme qui gardera la trace combien de fois la servlet a été consultée. Pour rédiger ce programme tout d'abord nous devons créer une classe CounterServlet . Le nom de la classe doit suivre la convention de nommage. N'oubliez pas de garder le nom de la classe de telle sorte qu'il devient facile de comprendre ce que le programme va faire juste en voyant le nom de la classe. Après avoir fait une classe définit un compteur de variable qui va garder une trace de combien de fois le servlet a été consultée. Maintenant, utilisez la méthode soit doGet () ou doPost () pour écrire une logique du programme. Notre logique du programme est simple. Nous devons tout simplement incrémenter la valeur du compteur de 1. Pour afficher la sortie utiliser la méthode de l'objet de la réponse qui sera à son tour renvoyer l'objet de la classe PrintWrite méthode getWriter (). Maintenant, afficher la valeur du compteur. Le code du programme est donné ci-dessous: import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = {"/CounterServlet"}) public class CounterServlet extends HttpServlet { int counter = 0; public void doGet(HttpServletRequest req, HttpServletResponseres) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter pw = res.getWriter(); counter++; pw.println(" à present le nombre du compteur est : " + counter); } }
  8. 8. 8 DEUXIEME RAPPORT EN JAVA EE configuration dans web.xml <?xml version="1.0" encoding="UTF <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web id="WebApp_ID" version="2.5"> <display-name>CounterServlet</display <servlet> <servlet-name>CounterServlet</servlet <servlet-class>CounterServlet</servlet </servlet> <servlet-mapping> <servlet-name>CounterServlet</servlet <url-pattern>/CounterServlet</url </servlet-mapping> <welcome-file <welcome-file>in </welcome-file </web-app> Dans notre cas le fichier web.xml n'est pas créer par netbeans et on doit l'ajouter clique droit sur l'application '' ApplicationWeb_SousUbuntu'', Nouveau , Autre / Web, StandardDeployementDescriptor(web.xml) UTF-8"?> XMLSchema-xmlns=" web-app_2_5.xsd" display-name> servlet-name> servlet-class> servlet-name> url-pattern> file-list> index.jsp</welcome-file> file-list> 8 8 -instance" web-xsi:
  9. 9. 9 9 9 DEUXIEME RAPPORT EN JAVA EE Apres creation et configuration de web.xml vous pouvez exécuter la servlet .
  10. 10. 10 10 10 DEUXIEME RAPPORT EN JAVA EE 2- suivi de session pour un compteur satatique Implémenter la méthode doGet pour gérer le suivi de session: Affiche un compteur qui est incrémenté à chaque accès sur cette servlet pendant une session.
  11. 11. 11 DEUXIEME RAPPORT EN JAVA EE Cette servlet recupere d'abord l'objet HttpSession associé au client courant. En passant true à getSession() , elle demande la reation d'une session si nécessaire. LA servlet obtient ensuite un objet Integer lié au nom tracker.count. Si cet objet n'existe pas , la servlet démarre un nouveau compteur .sinon ,elle remplace l'Integer par un nouveau dont la valeur a été incrémentée de 1 . Enfin , la servlet affiche le compteur courant et toutes les paires nom/valeur de la session . 11 11
  12. 12. 12 12 12 DEUXIEME RAPPORT EN JAVA EE  Mécanisme très puissant permettant de stocker des objets et non de simples chaînes de caractères comme les cookies.  Méthode de création (de HttpServletRequest) :  HttpSession getSession() : retourne la session associée à l’utilisateur.  Gestion d’association (de HttpSession) :  Enumération getAttributNames() : retourne les noms de tous les attributs.  Object getAttribut(String name) : retourne l’objet associé au nom.  setAttribut(String na, Object va) : donne la valeur va à l’attribut na.  removeAttribut(String na) : supprime l’attribut de nom na.  Destruction (de HttpSession) :  logout() : termine la session.

×