Patrons de conception [Krakowiak06]

Dimension: px
Commencer à balayer dès la page:

Download "Patrons de conception [Krakowiak06]"

Transcription

1 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Patrons de conception [Krakowiak06] 284 Définition ensemble de règles (définitions d éléments, principes de composition, règles d usage) permettant de répondre à une classe de besoins spécifiques dans un environnement donné Propriétés d un patron élaboré à partir de l expérience acquise capture des éléments de solution communs à des classes de problèmes définit des principes de conception (pas des implantations) fournit une aide à la documentation (par ex. terminologie, ou description formelle)

2 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Patrons de conception (2) 285 Définition d un patron contexte: situation qui donne lieu à un problème de conception, doit être aussi générique que possible problème: spécifications, propriétés souhaitées pour la solution, contraintes de l environnement solution: aspects syntaxiques: composants, liens entre composants (diagramme de classe ou de collaboration) aspects dynamiques: comportement à l exécution, cycle de vie (diagramme de séquence ou d état) Catégories de patrons conception: petite échelle, structures usuelles récurrentes architecture: grande échelle, organisation structurelle

3 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Exemples 286 Proxy patron de conception: représentant pour accès à distance Factory patron de conception: création d objet Wrapper [Adapter] patron de conception: transformation d interface Interceptor patron d architecture: adaptation de service

4 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Proxy (mandataire) 287 Contexte applications constituées d objets répartis, client qui accède à des services potentiellement distants Problème définir le mécanisme d accès: masquer au client le protocole, l emplacement du service propriétés souhaitables: accès sûr et efficace, programmation simple, pas de différence entre local et distant contraintes: environnement réparti (pas d adressage unique) Solution représentant local du service distant («servant») interface identique pour représentant et servant

5 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Proxy: mise en œuvre 288 Client Proxy (local) Servant (distant) Demande service Pré-traitement Interface Pré-traitement Demande service Résultat Post-traitement Interface Résultat Appel distant

6 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Factory (usine) 289 Contexte application vue comme un ensemble d objets Problème créer dynamiquement des instances d une classe d objets propriétés souhaitables: instances paramétrables, évolution facile (pas de décisions en «dur») contraintes: environnement réparti (pas d adressage unique) Solutions abstract factory: interface et organisation génériques pour la création d objets, création effective déléguée à des usines concrètes, implantée par des méthodes de création redéfinies dans les sous-classes factory factory: le créateur est lui-même paramétré

7 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Factory: mise en œuvre 290 Client Factory Créer avec paramètres Factory Factory Demande de création Objet Créer Facultatif envoi réf. objet Délégation possible vers une usine concrète Demande destruction X Facultatif

8 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Complément à Factory: Pool 291 Idée: réduire le coût de la gestion de ressources Solution: réutiliser des exemplaires existants Réserve Créer: si réserve non vide sortir une instance de la réserve nettoyer/initialiser sinon créer une nouvelle instance Détruire: placer instance dans la réserve

9 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Pool: mise en œuvre 292 Gestion de la mémoire réserve (pool) de zones (plusieurs tailles possibles) évite le coût du ramasse-miettes évite les copies inutiles (chaînage de zones) Gestion des activités réserve de threads évite le coût de la création Gestion de la communication réserve de connexions Gestion des composants

10 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Wrapper (ou Adpater) 293 Contexte des clients utilisent des services fournis par des servants, et définis par des interfaces Problème réutiliser un servant existant en modifiant son interface propriétés souhaitables: efficacité, adpatabilité, réutilisabilité Solutions le wrapper isole le servant en interceptant les appels de méthodes vers l interface de celui-ci un appel est précédé d un prologue et suivi par un épilogue les paramètres et les résultats peuvent être convertis

11 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Wrapper: mise en œuvre 294 Client Wrapper Servant (distant) Demande service Pré-traitement Interface A Pré-traitement Demande service Résultat Post-traitement Interface B Résultat

12 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Interceptor (intercepteur) 295 Contexte fourniture de services: C/S, P2P, hiérarchique; uni- ou bidirectionnel, synchrone/asynchrone Problème transformer le service (ajout de nouvelles fonctions): en interposant une nouvelle couche de traitement (cf. Wrapper) en changeant conditionnellement la destination de l appel contraintes: le client et le serveur ne doivent pas être modifiés, les services sont ajoutés/supprimés dynamiquement Solutions créer des objets d interposition (statiquement ou dynamiquement): interception, insertion traitement, redirection,

13 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Interceptor: mise en œuvre 296 Client Interceptor Servant Infrastructure Créer Demande service Pré-traitement Interface A Interface A Service annexe Résultat Post-traitement

14 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Comparaison des patrons de base 297 Wrapper vs. Proxy: structure similaire Proxy préserve l interface, Wrapper la transforme Proxy utilise (pas toujours) l accès à distance, Wrapper est local Wrapper vs. Interceptor: fonction similaire Wrapper transforme l interface Interceptor transforme la fonction Proxy vs. Interceptor: Proxy est une forme simplifiée d Interceptor ajout d un intercepteur à un proxy pour obtenir un smart proxy (proxy intelligent)

15 Architectures Outils Java Servlets État servlet JSP Accès BD Conception MVC2: Contrôleur unique 298 Il est recommandé d utiliser un servlet unique comme contrôleur (en accord avec le patron Front Controller) Ce servlet gère toutes les requêtes, associant celles-ci aux opérations de l application gère la sélection des vues en fonction du modèle et de l état de l application (session, ) gère les aspects sécurité, authentification,

16 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Transformer une requête en opération 299 Le client peut spécifier l opération en tant que paramètre du GET spécifier l opération en utilisant un champ caché d un formulaire et en utilisant POST spécifier l opération en utilisant un suffixe ajouté à l URL La dernière solution est la plus polyvalente

17 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Exécuter une opération sur le modèle 300 Le contrôleur utilise une structure if-then-else... if (command.equals("/recherche.do")) { modele = new Modele();... } else if (command.equals("/selectionne.do")) { modele = (Modele) session.getattribute("modele");... } else if (command.equals("/affiche.do )) { modele = (Modele) session.getattribute("modele");... }... Peut s avérer difficile à lire et à mettre à jour

18 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Exécuter une opération sur le modèle (cont.) 301 Utilisation du patron Command 1. classe abstraite Commande: définit une interface pour exécuter les opérations public abstract class Commande { protected Modele modele; public Commande(Modele modele) { this.modele = modele; } public abstract String getnom(); public abstract Object execute(httpservletrequest req); };

19 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Exécuter une opération sur le modèle (cont.) chaque sous-classe de Commande définit le code nécessaire à la réalisation d une opération particulière public class CreerUtilisateurCommande extends Commande { public CreerUtilisateurCommande(Modele modele) { super(modele); } public String getnom() { return "creerutilisateur"; } } public Object execute(httpservletrequest req) { return modele.creerutilisateur(req.getattribute("utilid"), req.getattribute("mdp")); }

20 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Exécuter une opération sur le modèle (cont.) le contrôleur invoque les opérations en déléguant aux commandes appropriées public class ControleurServlet extends HttpServlet { private HashMap actions; public void init() throws ServletException { // initialise actions pour associer les Commandes à leurs classes } public void dopost(httpservletrequest req, HttpServletResponse resp) throws IOException, ServletException { String op = getoperation(req.getrequesturl()); Commande action = (Commande)actions.get(op); Object resultat = null; try { resultat = action.execute(req); } catch { // erreur: la commande n existe pas } // utilise le résultat pour déterminer la vue } }

21 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Exécuter une opération sur le modèle (cont.) l association entre les requêtes (URLs) et les commandes peut être faite hors du contrôleur (fichier XML par exemple) <url-mapping url="login.do" ecran="login.screen"> <classe-commande> monpackage.controleur.actions.loginaction </classe-commande> </url-mapping> <definitions-ecran> <template>/template.jsp</template> <ecran> <nom-ecran>login</nom-ecran> <parametre cle="titre">bienvenue...</parametre> <parametre cle="pied" value="/pieddepage.jsp"/> </screen> <!-... -> </definitions-ecran>

22 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Diagramme de séquence 305 Client Contrôleur Action Modèle Gestion Vue Template service 1. POST 2. création 3. exécution 4. logique métier 5. sélection vue 6. recherche 7. forward

23 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Frameworks (canevas) 306 Définition squelette de programme réutilisé et adapté pour l application met en œuvre un modèle (pas toujours explicite) pour les LOO, un canevas comprend: ensemble de classes (souvent abstraites) devant être adaptées (surcharge) à un environnement et des contraintes spécifiques ensemble de règles d usage pour ces classes Patrons et canevas deux techniques de réutilisation: les patrons réutilisent un schéma de conception, les canevas réutilisent du code un canevas implante en général plusieurs patrons Exemples: JSF, Struts2, WebWork, RoR, Symfony, Zend,

24 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Utilisation Servlet/JSP 307 Codage en servlet Codage en JSP Simple Du code JSP fait appel à des servlets Beans MVC basé sur Servlet/JSP Tags personnalisés Complexe

25 Plan 308 Tags personnalisés Listeners Filtres

26 Tags personalisés Tags personnalisés 309 Étendre les JSP pour simplifier l écriture Langage pour les auteurs de pages Langage d expression pour éviter le code Java langage d expression pour calculer des valeurs contrôle du flot d exécution validateur de librairie de tags Tag personnalisé peut recevoir des attributs peut accéder aux objets du contexte de la page peut modifier la réponse de la page

27 Tags personalisés JSTL 310 Java Standard Tag Library Composée de Core tags (préfixe: c) sortie, gestion de variables, logique, boucles, conditionnelles, importation de texte XML tags (préfixe: x) parsing, sélection, XSLT, flot de contrôle Database tags (préfixe: sql) connexion, accès, requêtes, mises à jour, transactions Formatage (préfixe: fmt) localisation, internationalisation

28 Tags personalisés Composants d une taglib 311 La classe qui gère le tag c est du code Java qui transforme le tag en code doit implanter l interface javax.servlet.jsp.tagext.tag étend généralement TagSupport ou BodyTagSupport se place dans le même répertoire que les servlets et beans Le fichier de description de la taglib fichier XML qui décrit le nom du tag, et la classe qui l implante se place avec les JSP Le fichier JSP importe la taglib (URL du fichier de description) définit le préfixe du tag utilise les tags

29 Tags personalisés 1. La classe 312 package testtag; public class MonTag extends SimpleTagSupport {! public void dotag() throws JspException, IOException {!! try {!! JspWriter out= this.getjspcontext().getout();!! out.println("salut");!! } catch (Exception e) {!! throw new Error("Ça marche pas...");!! }! } }

30 Tags personalisés 2. Le descripteur du tag 313 TLD: Tag Library Descriptor Document XML + un doctype La racine est un élément <taglib> Chaque tag est défini grâce à un élément <tag> name: le nom du tag tagclass: la classe qui implante le tag bodycontent: vide ou JSP (cf plus tard), optionnel info: description

31 Tags personalisés 2. Le descripteur du tag (2) 314 <?xml version="1.0" encoding="iso "?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" " <taglib>! <tag>!! <name>ntaghtml</name>!! <tagclass>testtag.montag</tagclass>!! <info>affiche bonjour</info>! </tag> </taglib>

32 Tags personalisés 3. Accès depuis une page JSP 315 Importation de la taglib on spécifie le fichier TLD on définit le namespace Utilisation du tag <namespace:tagname /> le nom provient du TLD l espace de nommage provient de la directive d importation <%@ taglib uri="/tagexemple.tld" prefix="exemple" %> <html> <head><title>testtag</title></head> <body> <h1>test du nouveau tag</h1> <exemple:ntaghtml/> </body> </html>

33 Tags personalisés Un tag avec attributs 316 On peut avoir <namespace:nom att1= val1 att2= val2 /> toujours pas de body Gestion dans la classe un attribut nom est géré par la méthode setnom exemple code <namespace:nomtag attribut1="test" /> public void setattribut1(string valeur1) {! traitement(valeur1); }

34 Tags personalisés Un tag avec attributs (2) 317 Ne pas oublier la méthode void release() { } Pourquoi? les serveurs peuvent réutiliser les instances des tags pas nécessaire si l attribut est obligatoire Dans le TLD élément <taglib> <attribute>! <tag> name:!! <name>ntaghtml</name> nom de l attribut required:!! <tagclass>testtag.montag</tagclass> obligatoire ou non (true ou false)!! <info>blabla</info> rtexprvalue:!! <attribute> l attribut peut être une expression JSP (<%= %>).!!! <name>nom</name> False par défaut!!! <required>false</required>!! </attribute>! </tag> </taglib>

35 Tags personalisés Tag avec body 318 Tag simple: <namespace:nomtag /> Tag avec attributs: <namespace:nomtag att= val1 /> Tag avec du contenu <namespace:nomtag> contenu JSP </namespace:nomtag> <namespace:nomtag att1= val1 > contenu JSP </namespace:nomtag>

36 Tags personalisés Tag avec body (2) 319 La classe qui gère le tag Deux méthodes dostarttag renvoie généralement EVAL_BODY_INCLUDE plutôt que SKIP_BODY doendtag il faut définir cette méthode si on veut effectuer une action après la gestion du body renvoie EVAL_PAGE

37 Tags personalisés Exemple 320 package testtag; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; public class HeadingTag extends TagSupport {! private String bgcolor;! private String color = null;!...! public void setbgcolor(string bgcolor) {!! this.bgcolor = bgcolor;! }! public void setcolor(string color) {!! this.color = color;! }...

38 Tags personalisés Exemple (2) 321 public int dostarttag() {! try {!! JspWriter out = pagecontext.getout();!! out.print("<table BORDER=" + border + " BGCOLOR=\""!!!!!! + bgcolor + "\"" + " ALIGN=\"" + align + "\"");!! if (width!= null) {!!! out.print(" WIDTH=\"" + width + "\"");!! }! } catch(ioexception ioe) {!! System.out.println("Erreur HeadingTag: " + ioe);! }! return(eval_body_include); // Inclusion du body } public int doendtag() {! try {!! JspWriter out = pagecontext.getout();!! out.print("</span></table>");! } catch(ioexception ioe) {!! System.out.println("Error in HeadingTag: " + ioe);! }! return(eval_page);// Continue avec le reste de la page JSP }

39 Tags personalisés Le TLD 322 La seule différence est dans l élément <bodycontent> La valeur doit être JSP au lieu de empty <tag>! <name>...</name>! <tagclass>...</tagclass>! <bodycontent>jsp</bodycontent>! <info>...</info> </tag>

40 Tags personalisés Le TLD (2) <taglib>! <tag>! <name>heading</name>! <tagclass>testtag.headingtag</tagclass>! <info>titre basé sur une table</info>! <attribute>!! <name>bgcolor</name>!! <required>true</required> <!--bgcolor obligatoire -->! </attribute>! <attribute>!! <name>color</name>!! <required>false</required>! </attribute>!...! </tag> </taglib>

41 Tags personalisés Utilisation 324 taglib uri="taglib.tld" prefix="test" %> <test:heading bgcolor="#c0c0c0"> Normal </test:heading> <P> <test:heading bgcolor="black" color="white"> Blanc sur noir </test:heading> <P> <test:heading bgcolor="#ef8429" fontsize="60" border="5"> Bord large </test:heading> <P> <test:heading bgcolor="cyan" width="100%"> Pleine largeur </test:heading>...

42 Tags personalisés Body optionnel 325 Exemple simple dostarttag renvoie SKIP_BODY Exemple avec body dostarttag renvoie EVAL_BODY_INCLUDE On peut décider d inclure ou non au moment de la requête un paramètre associé à la requête permet de choisir exemple: debug

43 Tags personalisés Exemple 326 package testtag; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; import javax.servlet.*; public class DebugTag extends TagSupport {! public int dostarttag() {!! ServletRequest request = pagecontext.getrequest();!! String debugflag = request.getparameter("debug");!! if ((debugflag!= null) &&!!!!!!! (!debugflag.equalsignorecase("false"))) {!!! return(eval_body_include);!! } else {!!! return(skip_body);!! }! } }

44 Tags personalisés Exemple (2) 327 TLD... <taglib>! <tag>!! <name>debug</name>!! <tagclass>testtag.debugtag</tagclass>!! <info>inclusion du body ssi le paramètre a une valeur</info>! </tag> </taglib>

45 Tags personalisés Exemple (3) 328 taglib uri="taglib.tld" prefix="test" %> Bla, bla, bla. Tagada, zim, boum. <P> <test:debug> <B>Debug:</B> <UL> <LI>Heure: <%= new java.util.date() %> <LI>Hote: <%= request.getremotehost()%> <LI>Session: <%= session.getid() %> </UL> </test:debug> <P> Bla, bla, bla. Tagada, zim, boum.

46 Tags personalisés Déploiement 329 WEB-INF/tlds/taglib.tld déclaration des classes implantant la taglib WEB-INF/lib/taglib.jar fichier jar contenant les classes d implantation

47 Tags personalisés TagLib disponibles 330 Liste non exhaustive jsp: action standard c: core fmt: internationalisation x: xml sql: bases de données Pour les utiliser, placer la lib lors du déploiement

48 Tags personalisés Taglib jsp 331 jsp:usebean associe une instance d objet Java (bean) jsp:setproperty positionne la valeur de la propriété d un bean jsp:getproperty récupère la valeur de la propriété d un bean jsp:include inclut le contenu de la page jsp:invoke invoque l exécution d un fragment jsp:forward redirige le traitement de la requête à une autre page

49 Tags personalisés Exemple 332 include file= header.jsp %> <jsp:usebean id= madate scope= session class= p.date /> <jsp:setproperty name= madate property= date param= ${param.pdate} /> <c:if test= ${madate.date eq 0} >! <jsp:forward page= error.jsp /> </c:if> <jsp:include page= footer.jsp flush= true />

50 Tags personalisés Taglib c Expression language objets implicites Variables pagecontext, param, paramvalues, header, headervalues, cookie, initparam, pagescope, requestscope, sessionscope, applicationscope catch, out, set, remove Contrôle if, choose (when, otherwise), foreach, fortokens Gestion URL import (paramredirect, param), url (param)

51 Tags personalisés Exemple 334 Arithmétique Comparaison ${3/0}!!!! infinity ${10%4}!!! 2 ${(1==2)?3:4}! 4 ${1<2}!!!!! true ${1 lt 2}!!!! true ${100.0 == 100}!! true ${ hip > hit }! false Objets implicites ${param.nom}!!!! olivier ${header[ host ]}!! localhost:8080 ${header[ accept ]}! image/gif, image/jpeg

52 Tags personalisés Exemple (2) 335 Fonctions taglib prefix= bla uri= %> ${bla:reverse(param.nom)}!!! reivilo ${bla:countvowels(param.nom)}! 4

53 Tags personalisés Taglib c 336 Variables URL <c:set var= moncaddie value= ${sessionscope.caddie} /> <c:set car= livreid value= ${param.remove} /> <% moncaddie.remove(livreid); %> <c:if test= ${moncaddie.numberofitems == 0} >! <c:remove var= caddie scope= session /> </c:if> c:url Contrôle c:foreach c:when c:choose

54 Tags personalisés Taglib fmt 337 Locale setlocale Formatage des messages bundle, setbundle, message Formatage nombres, dates formatnumber, parsenumber formatdate, parsedate, settimezone, timezone Exemple <fmt:formatnumber value= ${livre.prix} type= currency /> <jsp:usebean id= now class= java.util.date /> <fmt:message key= ShipDate /> <fmt:formatdate value= ${now} type= date datestyle= full />

55 Tags personalisés Taglib x 338 XML Expression XPath Core $applicationscope.listlivre/livres/livre[@id=$param:livreid] out, parse, set Contrôle <x:if>, <x:choose>, Transformation transform

56 Plan 339 Tags personnalisés Listeners Filtres

57 Listeners Listeners 340 Motivations répondre à des événements dans le cycle de vie de l application par exemple, un attribut est supprimé/ajouté/modifié dans le contexte effectuer des actions sans qu un servlet ou une page JSP en ait la responsabilité insérer des informations dans le contexte avant qu un servlet ou une page JSP ne soient chargés conserver la trace d une modification en dehors de tout servlet ou de toute page JSP 4 types de listeners Rappel sur le contexte

58 Listeners Rappel 341 Rappels sur ServletContext objet permettant au servlet de communiquer avec le container obtenu grâce à Servlet.getContext() Principales méthodes Object getattribute(string name) renvoie la valeur d un attribut du contexte void setattribute(string name, Object value) ajoute ou remplace un objet dans le contexte String getinitparameter(string name) renvoie un paramètre d initialisation de l application void log(string msg) ajoute un message dans le log du servlet container

59 Listeners Rappel (2) 342 Contexte paramètres d initialisation utilisation <context-param>! <param-name>database</param-name>! <param-value>testdb</param-value>! <description>le nom de la base</description> </context-param> getinitparameter() getinitparameternames()

60 Listeners Rappel (3) 343 ServletConfig Objet utilisé par le container pour passer des valeurs lors de l initialisation du servlet Obtenu avec Servlet.getServletConfig() Méthodes String getinitparameter(string name) ServletContext getservletcontext() String getservletname() Implanté par HttpServlet

61 Listeners Listeners 344 Les listeners sont des objets dont les méthodes sont invoqués en fonction du cycle de vie d un servlet création/destruction d un contexte (une application) javax.servlet.servletcontextlistener création/modification/destruction d un attribut du contexte javax.servlet.servletcontextattributelistener création/suppression/timeout d une session javax.servlet.httpsessionlistener création/modification/suppression d un attribut de la session javax.servlet.httpsessionattributelistener

62 Listeners Servlet Context 345 La classe ServletContextListener prend en charge l initialisation et la destruction du contexte du servlet en fait, initialisation et terminaison de l application Web proprement dite Utilisé pour fixer les ressources de l application: connexion SGBD, lire des valeurs initiales qui vont être utilisées par plusieurs servlets et/ou pages JSP (indépendamment d un servlet ou d une page JSP particuliers)

63 Listeners Exemple Servlet Context 346 Exemple de listener public class... implements ServletContextListener {! void contextdestroyed(servletcontextevent sce)!! // Notification that the servlet context is about to be shut down.! void contextinitialized(servletcontextevent sce)!! // Notification that the web application is ready to process requests. } Déclaration dans le web.xml ou annotation en JEE 6 <listener> <listener-class>package.listener</listener-class> </listener> Exemple de paramètres d initialisation <context-param> <param-name>name</param-name> <param-value>value</param-value> </context-param>

64 Listeners Servlet Context Attributes 347 Que faire si on veut être prévenu d une modification des valeurs initiales? exemple: la valeur de B dépend de la valeur de A A est modifié! réponse: listener d attribut du servlet context On surcharge une des méthodes attributeadded attributereplaced attributeremoved

65 Listeners Exemple Servlet Context Attributes 348 Exemple public class... implements ServletContextAttributeListener {! void attributeadded(servletcontextattributeevent scab)!! // Notification that a new attribute was added to the servlet context.! void attributeremoved(servletcontextattributeevent scab)!! // Notification that an existing attribute has been removed!! // from the servlet context.! void attributereplaced(servletcontextattributeevent scab)!! // Notification that an attribute on the servlet context has!! // been replaced. } Déclaration identique

66 Listeners Listeners de session 349 Les deux exemples précédents s adressent à des modifications au niveau application Si on veut modifier des données orientées utilisateur? les sessions sont l endroit privilégié pour stocker des informations Si on veut connaître le nombre de sessions ouvertes? Réponse: les listeners de session

67 Listeners Exemple de listener de session 350 Exemple public class... implements HttpSessionListener {! void sessioncreated(httpsessionevent se)!! // Notification that a session was created.! void sessiondestroyed(httpsessionevent se)!! // Notification that a session was invalidated. } Déclaration: classique

68 Listeners Listener d attribut de session 351 Lorsque la session est détruite, les attributs de la session le sont aussi, mais AVANT! Comment faire pour supprimer proprement les attributs, ou pour tracer les valeurs, ou faire un traitement à la suppression? Réponse: les listeners d attribut de session

69 Listeners Exemple listener attribut de session 352 Exemple public class... implements HttpSessionAttributeListener {! void attributeadded(httpsessionbindingevent se)!! // Notification that an attribute has been added to a session.! void attributeremoved(httpsessionbindingevent se)!! // Notification that an attribute has been removed from a session.! void attributereplaced(httpsessionbindingevent se)!! // Notification that an attribute has been replaced in a session. }

70 Listeners Combinaison 353 Dans certains cas, on doit composer plusieurs listeners pour obtenir le comportement souhaité Exemple? Vous voulez tracer le nombre d achat concernant la promo du jour! un listener servlet context pour initialiser l attribut qui gère la promo du jour un listener servlet context attribute pour les modifications concernant cet attribut (date, prix, ) un listener HttpSession attribute pour le compteur

71 Plan 354 Tags personnalisés Listeners Filtres

72 Filtres Filtres 355 Un filtre est un morceau de code exécuté entre la requête et le «endpoint» (servlet, JSP) Cela permet de faire du pré- et post-processing sur la requête lire la requête modifier la requête modifier la réponse retourner des erreurs au client Le cycle de vie est identique à celui d un servlet init / dofilter / destroy

73 Filtres Exemples d utilisation 356 Encapsuler un comportement commun vous avez 30 servlets/jsp qui ont besoin de compresser la réponse un seul filtre compression appliqué au 30 servlets/jsp Séparation entre décisions haut-niveau et présentation vous voulez interdire l accès à certaines adresses IP sans toucher au code un filtre de restriction qui regarde l adresse IP Modification générale de toutes les ressources modification du nom de l entreprise un filtre qui remplace l ancien par le nouveau

74 Filtres Étapes créer la classe qui implante l interface init, dofilter, destroy 2. coder le comportement dans dofilter arguments: ServletRequest, ServletResponse, FilterChain 3. appel de dofilter dans FilterChain appel le filtre suivant 4. enregistre le filtre dans les servlets/jsp concernés dans web.xml, éléments filter et filter-mapping

75 Filtres Exemple simple 358 Structure public void dofilter(servletrequest request,!!!!!!!!!! ServletResponse response,!!!!!!!!!! FilterChain chain)!! throws ServletException, IOException {!...! chain.dofilter(request,response); } Un filtre qui enregistre les accès code source web.xml

76 Filtres Exemple simple (2) 359 public class FiltreReport implements Filter {! public void dofilter(servletrequest request, ServletResponse response,!!!!!!!!!! FilterChain chain)!!!!! throws ServletException, IOException {!! HttpServletRequest req = (HttpServletRequest)request;!! System.out.println("Acces de " + req.getremotehost() + " sur l URL " +!!!!!!!!!! req.getrequesturl() + " le "+ new Date() + ".");!! chain.dofilter(request,response);! }! public void init(filterconfig config) throws ServletException {! }! public void destroy() { } }

77 Filtres Exemple simple (3) 360 <web-app>! <filter>!! <filter-name>reporter</filter-name>!! <filter-class>pack.filters.filtrereport</filter-class>! </filter>! <!-- On applique le filtre Reporter filter à la home page. -->! <filter-mapping>!! <filter-name>reporter</filter-name>!! <url-pattern>/index.jsp</url-pattern>! </filter-mapping>! <!-- On l applique aussi à un servlet OffreDuJour. -->! <filter-mapping>!! <filter-name>reporter</filter-name>!! <servlet-name>offredujour</servlet-name>! </filter-mapping>!... </web-app>

78 Filtres Accès au contexte du servlet 361 dofilter ne fournit pas d accès au ServletContext Solution? stocker le ServletContext dans init public class LogFilter implements Filter {! protected FilterConfig config;! private ServletContext context;! private String filtername;! public void init(filterconfig config) throws ServletException {!! this.config = config;!! context = config.getservletcontext();!! filtername = config.getfiltername();! }! public void dofilter(servletrequest request, ServletResponse response,!!!!! FilterChain chain) throws ServletException, IOException {!! HttpServletRequest req = (HttpServletRequest)request;!! context.log(req.getremotehost() + " a essayé d accéder à " +!!! req.getrequesturl() + " le " + new Date() + ". " +!!! "(" + filtername + ")");!! chain.dofilter(request,response);! } }

Le développement d applications Web

Le développement d applications Web Le développement d applications Web Plan Principes des applications Web Origine et utilité des Servlets Présentation des Servlets Les JSP La Standard TAG Library Servlet, JSP et accès aux SGBD Les technologies

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence

Plus en détail

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation

Plus en détail

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso Le développement d applications Web François Charoy Pascal Molli Pascal Urso License Creative Commons Cette création est mise à disposition selon le Contrat Paternité-Pas d'utilisation Commerciale-Partage

Plus en détail

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ...

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ... HTTP 1.1 Place de http dans le modèle osi : HyperText Transfer Protocol...... TCP IP...... HTTP est un protocole «sans état» : chaque page WEB est transmise dans une connexion séparée (sauf pour les connections

Plus en détail

Cours en ligne Développement Java pour le web

Cours en ligne Développement Java pour le web Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité

Plus en détail

Application Web et J2EE

Application Web et J2EE Application Web et J2EE Servlet, JSP, Persistence, Méthodologie Pierre Gambarotto Département Informatique et Math appli ENSEEIHT Plan Introduction 1 Introduction Objectfis

Plus en détail

Alfstore workflow framework Spécification technique

Alfstore workflow framework Spécification technique Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date

Plus en détail

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13 WEBSERVICES Michael Fortier Master Informatique 2ème année fortier@lipn.univ-paris13.fr A308, Université de Paris 13 https ://lipn.univ-paris13.fr/ fortier/enseignement/webservices/ Sommaire 1 Rappels

Plus en détail

Les architectures 3-tiers Partie I : les applications WEB

Les architectures 3-tiers Partie I : les applications WEB Les architectures 3-tiers Partie I : les applications WEB 1 Evolutions logicielles Des objets aux composants... Objets JavaBeans, Objets ActiveX, Objets COM,... 1 Evolutions logicielles Des objets aux

Plus en détail

Java Naming and Directory Interface

Java Naming and Directory Interface Introduction Java Naming and Directory Interface Gaël Thomas gael.thomas@lip6.fr Université Pierre et Marie Curie Master Informatique M2 Spécialité SAR Java Naming and Directory Interface (JNDI) Java Standard

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Projet Java EE Approfondi

Projet Java EE Approfondi EISTI Projet Java EE Approfondi Manuel d installation du framework Stripes Amaury Languillat, Yann Gonzalez, Arnaud Recher, Vincent Laronde, Anys Mechkar 10 Manuel d installation Téléchargement On part

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean. Plan du cours 2 Introduction générale : fondamentaux : les fondamentaux Michel Buffa (buffa@unice.fr), UNSA 2002, modifié par Richard Grin (version 1.1, 21/11/11), avec emprunts aux supports de Maxime

Plus en détail

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Outil de planification en ligne pour des créations de rendez-vous ou de sondage Outil de planification en ligne pour des créations de rendez-vous ou de sondage Centre de Ressources Informatiques (C.R.I.) d'orléans Université d'orléans 4-6 rue Léonard de Vinci, 45061 Orléans Cedex

Plus en détail

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework L'objectif de ce document est de poser des bases de réflexion sur la modélisation d'un projet réalisé

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

Jahia CMS ET Portal Version 5.0

Jahia CMS ET Portal Version 5.0 Jahia CMS ET Portal Version 5.0 Développer un portlet JSR168 Avec Jahia CMS et Portal Version 5.0 V.1 Français Jahia Ltd Suisse 9, route des jeunes 1227 Carouge p. 2/47 TERMES ET CONDITIONS D UTILISATION

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application

Plus en détail

Composants Logiciels. Le modèle de composant de CORBA. Plan

Composants Logiciels. Le modèle de composant de CORBA. Plan Composants Logiciels Christian Pérez Le modèle de composant de CORBA Année 2010-11 1 Plan Un rapide tour d horizon de CORBA 2 Introduction au modèle de composant de CORBA Définition de composants CORBA

Plus en détail

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT DOCUMENTATION CAS A DESTINATION DES SERVICES TIERS Titre descriptif du document Référence du document REFO-DT-ENTV2-ServeurCAS-v1.2.docx Nom du fichier REFO-DT-ENTV2-ServeurCAS-v1.2.docx Version du document

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

1. Installation d'un serveur d'application JBoss:

1. Installation d'un serveur d'application JBoss: EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 4 EJB3, Serveur d'application JBoss 1. Installation d'un serveur d'application JBoss: télécharger l'archive du serveur JBoss à l'adresse: http://sourceforge.net/projects/jboss/files/jboss/jboss-5.0.0.ga/jboss-5.0.0.ga.zip/download

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Application de lecture de carte SESAM-Vitale Jeebop

Application de lecture de carte SESAM-Vitale Jeebop Application de lecture de carte SESAM-Vitale Jeebop Présentation Le module de lecture de carte SESAM-Vitale Jeebop est une application Java Web Start, c'est à dire une application Java qui se télécharge

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Documentation CAS à destination des éditeurs

Documentation CAS à destination des éditeurs Documentation CAS à destination des éditeurs Sommaire Préambule... 1 Présentation de CAS...2 Intérêt... 2 Fonctionnement de base...2 Synoptique des échanges (1ère connexion)... 2 Synoptique des échanges

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Java pour le Web. Cours Java - F. Michel

Java pour le Web. Cours Java - F. Michel Java pour le Web Cours Java - F. Michel Introduction à JEE 6 (ex J2EE) Historique Qu'est-ce que JEE JEE : Java Entreprise Edition (ex J2EE) 1. Une technologie outils liés au langage Java + des spécifications

Plus en détail

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Messagerie asynchrone et Services Web

Messagerie asynchrone et Services Web Article Messagerie asynchrone et Services Web 1 / 10 Messagerie asynchrone et Services Web SOAP, WSDL SONT DES STANDARDS EMERGEANT DES SERVICES WEB, LES IMPLEMENTATIONS DE CEUX-CI SONT ENCORE EN COURS

Plus en détail

Introduction aux «Services Web»

Introduction aux «Services Web» Introduction aux «Services Web» Sana Sellami sana.sellami@univ-amu.fr 2014-2015 Modalité de contrôle de connaissances Note de contrôle de continu Note projet Evaluation du projet la semaine du 17 novembre

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement Guillaume HARRY l Contenu sous licence Creative Commons CC-BY-NC-ND Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement P. 2 1. Introduction 2.

Plus en détail

Application des Spécifications détaillées pour la Retraite, architecture portail à portail

Application des Spécifications détaillées pour la Retraite, architecture portail à portail Pour Application des Spécifications détaillées pour la Retraite, architecture portail à portail Version 1.0 ON-X S.A. est une société du Groupe ON-X 15, quai Dion Bouton 92816 PUTEAUX cedex. Tél : 01 40

Plus en détail

2 Chapitre 1 Introduction

2 Chapitre 1 Introduction 1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné

Plus en détail

La base de données XML exist. A. Belaïd

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Aspects techniques : guide d interfaçage SSO

Aspects techniques : guide d interfaçage SSO COURDECO Aspects techniques : guide d interfaçage SSO Septembre 2011 Cette annexe présente succinctement le système d'authentification unique (SSO : single sign on, authentification unique) utilisé dans

Plus en détail

Automatisation de l administration système

Automatisation de l administration système Automatisation de l administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des solutions Puppet : gestion de configuration de systèmes Capistrano : déploiement d applications

Plus en détail

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement

Plus en détail

//////////////////////////////////////////////////////////////////// Administration bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page Organisation du cours sur les Servlets Servlets et API Traitement des données de formulaires Architecture de développement Cycle de vie Suivi de session Collaboration de Servlets Sécurité : authentification

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web» Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web» Sana Sellami sana.sellami@lsis.org 2014-2015 Plan Partie 1: Introduction aux Services Web (SW) Partie 2: Vers une

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Dis papa, c est quoi un bus logiciel réparti?

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

Plus en détail

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin Sécurité des sites Web Pas un cours un recueil du net INF340 Jean-François Berdjugin Vulnérabilité Définition (wikipédia) : Dans le domaine de la sécurité informatique, une vulnérabilité est une faiblesse

Plus en détail

Architectures client/serveur

Architectures client/serveur Architectures client/serveur Master Technologies de l'internet 1 ère année Eric Cariou Université de Pau et des Pays de l'adour UFR Sciences Pau Département Informatique Eric.Cariou@univ-pau.fr 1 Tryptique

Plus en détail

Plateforme PAYZEN. Définition de Web-services

Plateforme PAYZEN. Définition de Web-services Plateforme PAYZEN Définition de Web-services Ordre de paiement Version 1.1 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Lyra-Network

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Best Practices : Utilisation des APIs de Lotus Web Content Management

Best Practices : Utilisation des APIs de Lotus Web Content Management Best Practices : Utilisation des APIs de Lotus Web Content Management Agenda Scénarios IBM Lotus Web Content Management Java Server Page (JSP) Introduction Balises JSP Composants JSP Exemples JSP Page

Plus en détail

Groupe Eyrolles, 2003 ISBN : 2-212-11270-X

Groupe Eyrolles, 2003 ISBN : 2-212-11270-X Groupe Eyrolles, 2003 ISBN : 2-212-11270-X 7 Le fichier server.xml Dans le chapitre 3, nous avons abordé les bases de la configuration de Tomcat, informations suffisantes pour vous mettre le pied à l étrier.

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry. : Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA

Plus en détail

SIO-65291 Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

SIO-65291 Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault SIO-65291 Page 1 de 5 1- Objectifs généraux Applications Web dynamiques Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault acquérir les principes et concepts fondamentaux dans le domaine d'applications

Plus en détail

les techniques d'extraction, les formulaires et intégration dans un site WEB

les techniques d'extraction, les formulaires et intégration dans un site WEB les techniques d'extraction, les formulaires et intégration dans un site WEB Edyta Bellouni MSHS-T, UMS838 Plan L extraction des données pour un site en ligne Architecture et techniques Les différents

Plus en détail

Création d une application JEE

Création d une application JEE Création d une application JEE Rédacteurs : Alexandre Baillif, Philippe Lacomme, Raksmey Phan et Michaël PLAN Date : juillet 2010 Mise à jour : Michaël PLAN Date : octobre 2014 Avertissement : - ce document

Plus en détail

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer

Plus en détail

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués Architecture JEE. Objectifs attendus Serveurs d applications JEE Systèmes distribués Architectures JEE Normes JEE couches logicielles, n-tiers framework JEE et design patterns 2007/02/28 Eric Hébert.eheb@yahoo.fr

Plus en détail

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan

Plus en détail

Programmation MacOSX / ios

Programmation MacOSX / ios Programmation MacOSX / ios Master Ingénierie Informatique 2011-2012 Jean-Baptiste.Yunès@liafa.jussieu.fr deux extensions objets de C : C++ (Stroustrup) Objective-C (Cox & Love) ajout de constructions à

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

Définition des Webservices Ordre de paiement par email. Version 1.0

Définition des Webservices Ordre de paiement par email. Version 1.0 Définition des Webservices Ordre de paiement par email Version 1.0 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Historique du document

Plus en détail

A. Architecture du serveur Tomcat 6

A. Architecture du serveur Tomcat 6 Administration du serveur A. Architecture du serveur Tomcat 6 La compréhension de l architecture interne du serveur Tomcat 6 est un pré-requis indispensable pour bien en maîtriser l administration et la

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation ING 01 LANGAGUE JAVA Durée : 21 heures 1090 HT / jour Dates : à définir en 2012 Concevoir et développer des programmes en langage Java Comprendre le fonctionnement de la machine virtuelle S approprier

Plus en détail

Serveur d Applications Web : WebObjects

Serveur d Applications Web : WebObjects Serveur d Applications Web : WebObjects Nicolas Roard 29 avril 2004 Table des matières 1 Introduction 1 2 Historique 1 2.1 Implémentation WebObjects....... 2 2.2 Différences et manques?......... 3 3 Principes

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Java Aspect Components (JAC) http://jac.objectweb.org

Java Aspect Components (JAC) http://jac.objectweb.org Java Aspect Components (JAC) JAC http://jac.objectweb.org 2 Lionel Seinturier Lionel.Seinturier@lip6.fr Université Pierre & Marie Curie 23/2/06 Un framework de programmation par aspect pour Java Projet

Plus en détail

HYPERPLANNING EST UN LOGICIEL INDEX EDUCATION

HYPERPLANNING EST UN LOGICIEL INDEX EDUCATION YPERPLANNING 2011 Cette notice est destinée aux personnes gérant l ENT. HYPERPLANNING cas Ce module est mis en œuvre à l attention des ENT. Aucune assistance n est assurée pour l installation de ce module

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES WEB & DÉVELOPPEMENT LES BASES DU WEB HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES LE LANGAGE HTML STRUCTURE D UNE PAGE En-tête et corps Syntaxe INSÉRER DES CONTENUS Texte : formatage (titre,

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail