Académique Documents
Professionnel Documents
Culture Documents
Pr-requis
Langage Java : codage Langage UML : conception des tudes de cas raliser Quelques connaissances en dveloppement web (HTML, navigateur, )
J2SDK
J2SDK est une plate-forme ou un kit de dveloppement java. Un kit de dveloppement ou trousse de dveloppement logiciel est un ensemble d'outils permettant aux dveloppeurs de crer des applications de type dfini (par exemple pour Android ou J2EE). Les kits de dveloppement logiciels sont souvent dsigns par le sigle anglais SDK (Software Development Kit)
J2SDK comprend 3 ditions : le Kit de dveloppement standard : J2SE le kit enterprise edition : J2EE le kit de dveloppement micro edition : J2ME J2SDK contient les outils ncessaires au dveloppement, compilation et excution des programmes : un JDK et un JRE
J2SE
J2SE contient : le noyau (langage sur lequel se base la plate-forme) : le langage Java Un ensemble dAPIs permettant le dveloppement dapplications API : Une interface de programmation (Application Programming Interface ou API) est une interface fournie par un programme informatique, et permet l'interaction des programmes les uns avec les autres (rutilisation dun programme par un autre).
Une API dfinit la manire dont un composant informatique peut tre invoqu par un autre. Il sagit dun ensemble de fonctions, procdures ou classes que lon peut utiliser et appeler. Une API est un package = ensemble de classes
J2SE
Les APIs de Java SE consistent en des technologies de base, des technologies de bureau (ou clientes), et dautres technologies. Les composantes de base fournissent des fonctionnalits essentielles pour criture des programmes puissants, telles que l'accs aux bases de donnes, la scurit, Remote Method Invocation (RMI), et les communications rseaux TCP/IP. Les composants du bureau ajoutent un ventail complet de fonctionnalits, telles que lAPI de modlisation des composants JavaBeans, et une interface utilisateur graphique tel que lAPI Swing. Dautres composants.
J2SE
http://www.oracle.com/technetwork/java/javase/tech/index.html
J2SE
java.lang : toutes les classes de base pour le langage (String, Thread) java.util : divers utilitaires (Date, Vector, Hashtable) java.math : si les fonctions mathmatiques sont dj implmentes dans le package java.lang, ce package permet les calculs sur des numriques de trs grande taille java.io : toutes les entres/sorties (console, fichiers, filtres, pipelines) java.awt : ddie la cration dinterfaces graphiques, au dessin de graphiques et dimages java.applet : le support des applets java.sql : laccs aux bases de donnes (JDBC : Java DataBase Connector) java.beans : La construction de composants JavaBeans java.rmi : linvocation de mthodes dobjets distants (RMI : Remote Method Invocation) au-dessus du protocole IIOP de CORBA java.net : le support du rseau TCP/IP (sockets, UDP) javax.swing : mme rle que l'API AWT javax.naming : API JNDI, fournit un accs aux services de nommage ou annuaires de faon uniforme: consultation et recherche. DNS, LDAP. (utilis gnralement avec les EJB, RMI, JMS) Javax.xml : API pour la manipulation des documents
Prsentation de J2EE
Java 2 Platform Enterprise Edition est sorti officiellement en 1998 en mme temps que les Enterprise JavaBeans.
Concrtement, J2EE est un ensemble de plus dune vingtaine de spcifications destines aux applications dentreprises, chacune faisant lobjet dune description dans un document. Raliser une application J2EE peut consister assembler ces spcifications. J2EE peut tre vu comme une extension du langage Java, afin de faciliter la cration dapplications rparties, robustes, performantes et haute disponibilit. J2EE est compos de plusieurs couches, et J2SE constitue la couche de base. Il est n de besoins grandissant des entreprises pour dvelopper des applications complexes distribues et ouvertes sur lInternet.
J2EE
ensemble d'API qui peut tre obtenu et utilis sparment. ensemble de spcifications pour une infrastructure dans laquelle s'excutent les composants crits en Java : un tel environnement se nomme serveur d'application.
un
Prsentation de J2EE
composants mtiers
accder divers services de messageries. permet d'envoyer et de recevoir des messages de manire asynchrone entre applications ou composants Java. JMS sappuie sur les MOMs (Message Oriented Middleware) Envoie et rception demails. support des protocoles pour le courrier lectronique (SMTP, POP3, IMAP) accder un service de transactions rpartis. JTS spcifie limplmentation dun gestionnaire de transaction qui supporte la spcification JTA
JavaMail: javax.mail
Java Transaction (JTA) : javax.transaction Fournit les interfaces entre le gestionnaire de transaction et les diffrentes parties impliques dans un systme de transactions distribues.
Technologies J2EE
Les API de J2EE peuvent tre regroupes en trois grandes catgories : Technologies composants Contient la partie la plus importante de l'application : la logique mtier 3 types de composants : les JSP, les Servlets et les EJB Technologies de services fournissent aux composants de l'application des services connexes leur permettant de sinterfacer et communiquer avec dautres systmes: JDBC, JTA/JTS, JNDI, JCA (intgration avec des systmes autres que J2EE: C++, COBOL), JAAS (scurit:
authentification)
Technologies de communication prvoient les mcanismes de communication entre les diffrentes parties de l'application, qu'elles soient locales ou distantes: RMI-IIOP, JMS, Java Mail
Technologies J2EE
Technologies composants Quelle que soit l'application, le but essentiel est de modliser la logique mtier ncessaire en utilisant les composant, units rutilisables au niveau applicatif Donc, mme si linfrastructure (serveur dapplication) est en mesure de fournir l'environnement d'excution, la couche de communication ainsi que de nombreux services, la cration des composants applicatifs incombe au dveloppeur Toutefois, ces composants dpendront de leurs serveurs dapplication pour de nombreux services, tels que la gestion du cycle de vie, le threading, la scurit... => Ceci permet de se consacrer uniquement aux mthodes mtier sans s'appesantir sur la smantique de bas niveau du conteneur
La plate-forme J2EE
Environnement d'excution de J2EE J2EE propose des spcifications pour une infrastructure dans laquelle s'excutent les composants.
J2EE prsente les spcifications l'aide dun ensemble dAPIs qui spcifient un certain nombre de fonctionnalits que doivent implmenter l'environnement d'excution: =>J2EE noffre pas une infrastructure prte lemploi: il donne juste une spcification, ensuite implante par les diteurs logiciels qui mettent au point les serveurs d'applications. J2EE fait abstraction de linfrastructure d'excution
La plate-forme J2EE
Infrastructure J2EE :
J2EE introduit la notion de conteneur, et via les API J2EE, il labore un contrat entre le conteneur et les applications
Pour excuter les composants de natures diffrentes, J2EE dfini des conteneurs pour chacun de ces composants. Il dfinit pour chaque composant des interfaces qui leur permettront de dialoguer avec les autres composants lors de leur excution. Les conteneurs permettent aux applications d'accder aux ressources et aux services en utilisant les API. Les appels aux composants se font par des clients via les conteneurs. Les clients n'accdent pas directement aux composants mais sollicitent le conteneur pour les utiliser. C'est le vendeur du conteneur qui se charge de mettre en uvre les services pour les dveloppeurs d'applications J2EE, dans le respect des standards (spcifications J2EE)
Architecture J2EE
Les conteneurs assurent la gestion du cycle de vie des composants qui s'excutent en eux. Un composant est un lment de base d'un ensemble plus complexe (structur ou composite), lequel est un assemblage de composants souvent diffrents. Un composant informatique est un lment d'un systme rendant un service prdfini et capable de communiquer avec d'autres composants. Cycle de vie dun composant: instanciation (cration), activation, destruction Les conteneurs fournissent des services qui peuvent tre utiliss par les applications lors de leur excution. La plate-forme J2EE est constitue de quatre environnements de programmation baptiss conteneurs (moteurs) :
Quelques services du conteneur Gestion de la dure de vie des composants applicatifs Cette gestion implique la cration de nouvelles instances de composants applicatifs ainsi que le pooling (rassemblement) et la destruction de ces composants lorsque les instances ne sont plus ncessaires
Clustering sur plusieurs machines Rpartition de charge ou "Load Balancing" Scurit ...
Le container Applet
Le container Web
Le conteneur web est une implmentation des spcifications servlets et des spcifications des JSP. Ce type de conteneur est compos de deux lments majeur : un moteur de servlets (servlets engine) et un moteur de JSP (JSP engine).
Il fournit un environnement pour le dveloppement, le dploiement et la gestion de lexcution des Servlets et des JSP: gestion des requtes HTTP et renvoi des rponses aux clients.
JMS
JAF
JTA
Le container EJB
Il fournit lenvironnement d excution des clients J2EE, comportant des interfaces bases sur AWT et Swing. Depuis la premire version de J2EE, il existe un conteneur web et un conteneur EJB. Le conteneur Application-Client a t cr dans le J2EE5 pour apporter les mmes services pour les applications standalone : scurit, service de nommage JNDI, Il sagit essentiellement de Java 2 Standard Edition (J2SE). Les application-client sont similaires aux applications autonomes Java2 SE; exception, les application-client dpendent du conteneur application-client pour fournir l'accs des ressources et des installations sur un serveur distant J2EE. D'un point de vue pratique, le conteneur application-client permet aux dveloppeurs de crer des applications Java robustes qui ont galement accs des ressources J2EE tels que les sources de donnes ou les EJB.
Si une application Swing est excute en dehors dun conteneur ACC, elle ne peut pas utiliser le mcanisme dinjection et doit raliser les lookups JNDI elle-mme. Les composants sexcutant dans des conteneurs web ou EJB peuvent toujours utiliser le mcanisme dinjection. Grce au mcanisme dinjection, le dveloppeur na plus besoin de faire des appels explicites JNDI. Le conteneur ApplicationClient injecte une rfrence linterface distante invoque. Le code est ainsi allg parce quil ny a plus dinvocations directes des classes de lAPI JNDI.
En gnral, pour raliser des application-client, on suit les constructions de ralisation d'applications standards J2SE. Toutefois, les application-client exploitent galement les facilits J2EE offertes par le conteneur application-client (ACC) et qui ne sont pas disponibles dans le cas des applications standards J2SE.
Sans lACC:
Avec lACC:
Annotation @EJB private Catalog catalog (il faut avoir dclar le nom et chemin du Bean Catalog dans le fichier de configuration)
Annotation: permet de marquer ou annoter des lments afin de leur ajouter une proprit particulire. Ces annotations sont utilises lors de la compilation ou lexcution pour automatiser certaines tches (ex. appels de JNDI)
Exemple : un systme de gestion des commandes base d'EJB, avec une interface swing.
Interfaces Swing
RMI/IIOP
Architecture J2EE
Architecture J2EE
Les serveurs d'applications peuvent fournir un conteneur web uniquement (exemple : Tomcat) ou un conteneur d'EJB uniquement (exemple : JBoss, Jonas, ...) ou les deux (exemple : Websphere, Weblogic, GlassFish ...).
Avantages de J2EE
Informatique distribue "traditionnelle" = souvent problmes lis non pas la logique propre l'application mais la mise en uvre de services complexes (threading, transactions, scurit) (pas de standards et dAPIs qui grent ces services) Pour les diteurs de serveurs: compatibilit entre les serveurs (mme spcifications) Pour les dveloppeurs : implmenter des produits compatibles J2EE nest pas un simple regroupement d APIs (Interfaces de programmation), il dfinit galement un environnement de programmation bas sur une architecture dexcution Offre de plusieurs services de scurit et de gestion Le programmeur n'a plus se soucier que de la rdaction de la logique mtier de son application : se concentrer sur le business au lieu de rsoudre les problmes dintgration augmenter ka productivit
Architecture en couches
Larchitecture logicielle dcrit dune manire schmatique les diffrents lments dun systme informatique, leurs interrelations et leurs interactions: image physique organise du systme. Une AL capture la structure "brute" dun systme :
Comment celui-ci est compos de parties en interaction Comment les interactions ont lieu
Contrairement aux spcifications produites par lanalyse fonctionnelle, le modle d'architecture, produit lors de la phase de conception, ne dcrit pas ce que doit raliser un systme informatique mais plutt comment il doit tre conu de manire rpondre aux spcifications. Lanalyse dcrit le quoi faire alors que larchitecture dcrit le comment le faire .
Architecture en couches
Composant : unit de calcul/stockage Connecteur : unit dinteraction Configuration : assemblage de composants et de connecteurs
Architecture en couches
Raliser des applications en utilisant les technologies J2EE ncessite de dcouper les applications en plusieurs couches: afin dorganiser et placer les composants
Larchitecture en couches : les composants de la couche suprieure utilisent ceux de la couche infrieure et ainsi de suite. Lapplication tend donc devenir une sorte d'empilement de composants. Larchitecture en couches est reprsente avec le diagramme de paquetages dUML. Les diagrammes de paquetages sont la reprsentation graphique des relations existant entre les paquetages composant un systme
Architecture deux-tiers
Rseau
Administration difficile lorsque la logique mtier doit tre modifie. Transgression de la scurit en altrant un processus business. (modification des traitements sur le client) Application lie un seul type de prsentation Client lourd
Tiers Interface
Tiers Mtier
Tiers Donnes
Rseau
Rseau
Tiers Interface
Tiers Mtier
Tiers Donnes
Ordinateur Client
Affichage
Application Web
Meilleure rpartition de la charge Meilleure performance, scurit et gestion de l application. Modification et adaptation facile de la logique mtier : + volutif Possibilit de crer plusieurs types de client pour la mme application Client lger (tche unique daffichage; ressources du poste client peuvent tre sollicites pour dautres tches)
JDBC
Composants Mtiers
Poste Client
Serveur Mtier
RMI
IIOP
Applet/ HTML
Application Web/JSP
Larchitecture J2EE nimpose pas que toutes les couches dune application fonctionnent sur des machines diffrentes : le partitionnement est logique et non pas physique.
Il est possible de pousser plus loin le processus de partitionnement de lapplication en multipliant le nombre de couches fonctionnelles de plus en plus fines : Architecture N-tiers. Toutefois, on atteint rapidement un point au-del duquel lintrt de cette division est contrebalanc par la diminution des performances entraine par la multiplication des communications sur le rseau entre les divers composants.
Les
servlets
Les servlets
HTML et HTTP sont utiliss pour permettre aux clients dinternet daccder facilement aux donnes et ressources : les servlets dfinissent une solution pour rpondre aux requtes HTTP.
Traditionnelement, pour permettre un utilisateur de modifier les donnes dune base de donnes, ce dernier remplit un formulaire, valide avec un bouton. Les donnes sont ensuites envoyes avec un URL qui dit au serveur ce quil doit faire en spcifiant la localisation dun programme (Perl, Python, C, C++, ..) que le serveur fait tourner. Le programme vrifie la validit des donnes du formulaire, procde aux traitements et produit une page HTML retourner au client.
Les servlets
La solution idale est celle qui utilise Java : Portabilit Accs toutes les APIs et bibliothques Java Solution 1 : Utilisation dune applet cot client pour valider et envoyer les donnes Utilisation dune servlet cot serveur pour recevoir et traiter les donnes Inconvnient : les applets posent le problme de version de Java supporte par les navigateurs. Quelques navigateurs ne supportent pas Java.
Solution 2 : Placer tout le traitement cot serveur : Utilisation de servlets : aucun client ne refusera lutilisation de votre site.
Les servlets
Larchitecture de lAPI des servlets consiste en : Un classic fournisseur de service avec la mthode service(), travers laquelle toutes les requtes clientes sont envoyes au serveur Les mthodes du cycle de vie des servlets : init() et destroy(), qui sont appeles uniquement quand la servlet est charge et dcharge (lors du dmarrage du serveur)
public interface Servlet { public void init(ServletConfig config) throws ServletException; public ServletConfig getServletConfig(); public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public String getServletInfo(); public void destroy(); }
Les servlets
Entre chaque requte du client les Servlets persistent sous forme dinstances dobjet Au moment o le code dune Servlet est charg, le serveur ne cre quune seule instance de classe Linstance (unique) traite chaque requte effectue sur la Servlet
Les avantages : Le surcot en temps li la cration dun nouvel objet pour la Servlet est limin La persistance est possible cest--dire la possibilit de conserver ltat de lobjet chaque requte (un exemple: le compteur)
Les servlets
getServletConfig( ) : son but est de retourner un objet ServletConfig qui contient les paramtres dinitialisation et de dmarrage de cette servlet. Cet objet est cr par la mthode init. getServletInfo( ) : retourne une chaine de caractres contenant des informations sur la servlet, comme lauteur, la version, et le copyright.
La classe GenericServlet est une implmentation de cette interface. La classe HttpServlet est une extension de GenericServlet et est dsigne spcialement pour le protocol HTTP. HttpServlet est la classe la plus utilise.
Les servlets
Si on regarde la mthode service( ) dans linterface Servlet , on remarque quelle a deux paramtres: ServletRequest et ServletResponse. Avec la classe HttpServlet ces deux objets sont tendus pour HTTP: HttpServletRequest et HttpServletResponse. Exemple dutilisation de HttpServletResponse:
out.print("<HEAD><TITLE>"); out.print("A server-side strategy"); out.print("</TITLE></HEAD><BODY>"); i++; public class ServletsRule extends HttpServlet { out.print("<h1> Servlets Rule a t appel " int i = 0; // Servlet persistence + i+ " fois"); public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, out.print("</h1></BODY>"); out.close(); IOException { }} res.setContentType("text/html"); PrintWriter out = res.getWriter(); import javax.servlet.http.*; import java.io.*;
Les servlets
Les servlets
ServletsRule reprsente une servlet simple: les servlets doivent hriter de la classe HttpServlet. La servlet est initialise uniquement en appelant la mthode init( ) , en chargeant la servlet aprs le dmarrage du conteneur des servlets. Quand le client fait une requte un URL qui reprsente la servlet, le conteneur de servlet interprte cette requte et fait un appel la mthode service( ), aprs avoir initialis les objets HttpServletRequest et HttpServletResponse. La principale responsibilit de la mthode service( ) est dinteragir avec la requt HTTP que le client a envoy, et de construire une rponse HTTP base sur les attributs contenus dans la requte. ServletsRule manipule uniquement lobjet de rponse sans regarder ce que le client a pu envoy.
Les servlets
Aprs avoir spcifi le type du contenu (texte, image, fichier pdf,) de la rponse (qui doit tre toujours fait avant lappel de getWriter). La mthode getWriter( ) de lobjet de rponse (HttpServletResponse) produit un objet PrintWriter, qui est utilis pour crire une rponse forme par des caractres(alternativement, getOutputStream( ) produit un OutputStream, utilis pour les rponses binaires).
Le reste du programme envoie simplement du HTML au client comme une squence de Strings. Le compteur reprsent par la variable i est automatiquement converti en un String par la mthode print( ).
Les servlets
Quand le programme est tourn, on remarque que la valeur de i est prsrve entre les requtes de la servlet. Ceci est une proprit importante des servlets :
Tant que la servlet nest pas dcharge (le conteneur de servlet nest pas arrt, arrt de lordinateur serveur), nimporte quel champs de la classe servlet devient un objet persistant : Les valeurs peuvent tre maintenues entre les requtes, alors quavec les programmes (C,C++) on doit sauvegarder les valeurs sur le disque (plus de traitement et despace mmoire). Quand le serveur est reboot, les mthodes destroy() et init() sont automatiquement appeles permettant de sauvegarder les donnes pendant le redmarrage du serveur.
Les servlets
A chaque fois quune form est valide vers un servlet, le HttpServletRequest vient pr-charg avec toutes les donnes du form, stock comme des paires cl-valeur. Si vous connaissez les noms des champs, vous pouvez les utiliser directement avec la mthode getParameter( ) pour chercher les valeurs. Vous pouvez galement avoir une numration des noms des champs avec getParameterNames.
Exemple : Si lnumration est vide, il ny a pas de champs (aucun form na t envoy) le form est produit et le bouton de validation va r-appeler la mme servlet. Si les champs existent, ils sont affichs.
Les servlets
Exemple :
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class EchoForm extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); Enumeration flds = req.getParameterNames(); if(!flds.hasMoreElements()) { // Pas de form soumis crer un form: out.print("<html>"); out.print("<form method=\"POST\"" + " action=\"EchoForm\">"); for(int i = 0; i < 10; i++) out.print("<b>Field" + i + "</b> " +
"<input type=\"text\""+ " size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"); out.print("<INPUT TYPE=submit name=submit"+ " Value=\"Submit\"></form></html>"); } else { out.print("<h1>Votre form contenait:</h1>"); while(flds.hasMoreElements()) { String field= (String)flds.nextElement(); String value= req.getParameter(field); out.print(field + " = " + value+ "<br>"); } } out.close(); } }
Une thread (appele aussi processus lger, ou activit, ou unit de traitement) est une suite d'instructions l'intrieur d'un processus. Un programme monothread est un programme cod en squentiel, c'est dire que les instructions sont excutes les unes aprs les autres. Il y a un seul thread pour le processus. Les programmes qui utilisent plusieurs threads en parallle sont dits multithreads: programmation multithreade ou concurrente. (avec un seul processeur, il ya simulation de lexcution parallle).
Le conteneur des servlets possde un pool de threads quil gre fin de traiter les requtes des clients : il est fort probable que deux requtes de clients arrivent en mme temps, donc votre servlet (mthode service()) doit tre capable de les servir en mme temps la mthode service( ) doit tre crite de faon grer le multi-threading : tout accs commun aux ressources (fichiers, base de donnes) doit tre surveill en utilisant les mots-cls synchronized. Exemple : code de servlet
import javax.servlet.http.*; import java.io.*; public class ThreadServlet extends HttpServlet { int count; public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter();
count++; //(variable globale) out.println(cette servlet a t excute " + count + " fois."); out.close; }}
Si deux clients envoient deux requtes en mme temps cette servlet, il yaura un thread pour chaque requte, et lordre dexcution peut tre :
count++ // count++ // out.println // out.println // Thread 1 Thread 2 Thread 1 Thread 2
lincrmentation aura lieu 2 fois de suite, le rsultat sera le mme pour les deux clients.
Solution :
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class ThreadServlet extends HttpServlet { int i; public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); synchronized(this) { count++; //(variable globale) out.println(cette servlet a t excute + count + " fois."); } out.close(); }}
doGet() : traite les requtes GET doPost() : traite les requtes POST
Crez une nouvelle application Crez votre classe servlet Crez votre fichier HTML qui pointera sur la servlet Modifiez le fichier web.xml de votre application pour quil tienne en compte votre nouvelle servlet et la charge son dmarrage : <servlet> <servlet-name>MaServlet</servlet-name> <servlet-class>MaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MaServlet</servlet-name> <url-pattern>/servlets/servlet/MaServlet</url-pattern> </servlet-mapping>
Redmarrez le serveur dapplication
Exemple : login 1- Crer le fichier login.java, le compiler Login.class 2- Crer le fichier login.html 3- Crer votre dossier dapplication
HTTP est un protocol sessionless (sans sessions) vous ne pouvez pas dire d'un serveur un autre si vous avez la mme personne qui interroge plusieurs reprises votre site, ou si cest une personne diffrente. Exemple : Les socits ne peuvent pas faire du e-commerce sans suivre la trace du client et des produits quil achte. Une session est une ou plusieurs requtes de pages par un client vers un site web durant une dure de temps dfinie. Exemple : achat en ligne (la session est active durant la priode dachat). Un objet de session vit du ct serveur ; son rle est de capturer les donnes utiles correspondantes au client qui interagit avec le site web. Il ya plusieurs manires de faire le suivi de sessions (session tracking), mais la plus commune est celle des cookies persistants (partie intgrale des standards dinternet.
Un cookie est simplement une petite portion dinformation (fichier) envoye par un serveur web vers un navigateur. Le navigateur stocke le cookie sur le disque local du client, et chaque fois quun appel est fait vers lURL avec qui le cookie est associ, le cookie est galement envoy avec lappel, fournissant linformation dsire au serveur. Le cookies concernant le site dans lequel un utilisateur navigue, et sont automatiquement envoys dans les en-ttes HTTP lors de chaque requte du client. Cest le serveur qui doit crer et envoyer les cookies au navigateur du client Les clients peuvent dsactiver loption dacceptation des cookies du navigateur. Si votre site doit suivre un client qui a dsactiv les cookies, vous devez ajouter du code manuel votre servlet.
La class Cookie :
LAPI des servlets fournit la classe Cookie (javax.servlet.http.Cookie.class). Cette classe contient tous les dtails des enttes HTTP et permet la mise en place de diffrents attributs des coukies. Utiliser un cookie correspond son ajout lobjet response.
Le constructeur du cookie prend deux arguments : le nom du cookie et sa valeur. Le nom ne peut pas tre chang aprs la cration du cookie. La valeur peut tre change avec setValue(). Les cookies sont ajouts lobjet response avant denvoyer tout contenu: Cookie c1 = new Cookie(id", 18"); //on stocke lidentifiant de la session c1.setValue(20); //on modifie la valeur du cookie c1.setMaxAge(24*3600); res.addCookie(c1);
Les cookies sont rcuprs en appelant la mthode getCookies( ) de lobjet HttpServletRequest, qui retourne un tableau des objets cookie. Cookie[] cookies = req.getCookies(); Cette mthode retourne un tableau contenant l'ensemble des cookies prsents chez le client. Il est ainsi possible de parcourir le tableau afin de retrouver un cookie spcifique grce la mthode getName() de l'objet Cookie(). Vous pouvez ensuite appeler la mthode getValue( ) pour chaque cookie, pour produire un String contenant la valeur du cookie.