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" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <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 333 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 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);! } }

JSP JAVA SERVER PAGES

JSP JAVA SERVER PAGES JSP JAVA SERVER PAGES JSP Objectif : simplifier l'écriture de servlets : Servlets = "HTML inside Java" JSP = "Java inside HTML" Avertissements : JSP = servlet Similaire à Javascript/AJAX-JQuery On est

Plus en détail

JSTL. (Java server pages Standard Tag Library) JSTL : Java server page Standard Tag Library.

JSTL. (Java server pages Standard Tag Library) JSTL : Java server page Standard Tag Library. JSTL (Java server pages Standard Library) Philippe GENOUD UJF Février 2005 1 Introduction JSTL : Java server page Standard Library. http://java.sun.com/products/jsp/jstl/ Ensemble standard d'actions personnalisées

Plus en détail

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

Possibilité de définir ses propres tags basés sur XML : tags personnalisés (custom tags) regroupés dans des bibliothèques de tags (taglibs)

Possibilité de définir ses propres tags basés sur XML : tags personnalisés (custom tags) regroupés dans des bibliothèques de tags (taglibs) Tags personnalisés Possibilité de définir ses propres tags basés sur XML : tags personnalisés (custom tags) regroupés dans des bibliothèques de tags (taglibs) Objectifs Déporter dans des classes dédiées

Plus en détail

Bibliothèques de balises personnalisées : motivations... Dans les pages JSP, on remarque qu il y a mélange entre le code Java et le code HTML

Bibliothèques de balises personnalisées : motivations... Dans les pages JSP, on remarque qu il y a mélange entre le code Java et le code HTML Bibliothèques de balises personnalisées : motivations... Dans les pages JSP, on remarque qu il y a mélange entre le code Java et le code HTML Le développeur a tendance à mettre trop de codes dans un document

Plus en détail

Introduction Les Tags La librairie JSTL Le langage EL. Java Server Pages. Claude Duvallet 1/51

Introduction Les Tags La librairie JSTL Le langage EL. Java Server Pages. Claude Duvallet 1/51 Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com http://litis.univ-lehavre.fr/ duvallet/ Claude Duvallet 1/51

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

Programmation servlet

Programmation servlet Programmation servlet Olivier Aubert 1/23 Références http://developer.java.sun.com/developer/onlinetraining/servlets/fundamenta http://www.servlets.com http://java.sun.com/products/jsp/index.html http://www.servletcentral.com/

Plus en détail

Introduction Fonctionnement L API Servlet SERVLET. Claude Duvallet 1/32

Introduction Fonctionnement L API Servlet SERVLET. Claude Duvallet 1/32 Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com http://litis.univ-lehavre.fr/ duvallet/ Claude Duvallet 1/32

Plus en détail

Syntaxe JSP. B. Mermet

Syntaxe JSP. B. Mermet Syntaxe JSP B. Mermet Préambule 2 syntaxes possibles Syntaxe "JSP" Syntaxe "XML" Choix fait : on ne présente que la syntaxe JSP Syntaxe de base Scriptlet (code de base) Syntaxe : ou ...

Plus en détail

MVC / Les Tags JSP et JSTL

MVC / Les Tags JSP et JSTL MVC / Les Tags JSP et JSTL A.-E. Ben Salem LRDE and LIP6 17 Octobre 2011 1 / 18 Plan 1 Architecture MVC 2 Rappel JSP 3 JSTL (JSP Standard Tag Library) 4 Tags JSP pour gérer les Beans 5 Tags JSP d action

Plus en détail

Applications Web. Cours 2: Introduction J2EE Servlets et JSP. Khaled Khelif

Applications Web. Cours 2: Introduction J2EE Servlets et JSP. Khaled Khelif Applications Web Cours 2: Introduction J2EE Servlets et JSP Khaled Khelif 1 Rappel Web statique vs. Web dynamique Principe des applications web Protocole HTTP : requêtes en mode texte Développement d applications

Plus en détail

SERVLET (2/2) Maintien de l'état. Champs cachés et réécriture d'url. Cookies

SERVLET (2/2) Maintien de l'état. Champs cachés et réécriture d'url. Cookies Maintien de l'état SERVLET (2/2) Le protocole HTTP est un protocole sans état impossibilité de garder des informations d une requête à l autre impossibilité d'identifier un client d un autre entre 2 requêtes

Plus en détail

Plan. Environnement Client/Serveur. Cours 7 JavaServer Pages (1) JSP. Programmation Web coté serveur

Plan. Environnement Client/Serveur. Cours 7 JavaServer Pages (1) JSP. Programmation Web coté serveur Plan Environnement Client/Serveur Cours 7 JavaServer Pages (1) kn@lri.fr 7.1 Principe 7.2 Rappels HTTP 7.3 Le serveur web Tomcat Programmation Web coté serveur JSP 2/28 (rappel) génération de pages-web

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

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique - 2010-2011

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique - 2010-2011 1 / 34 Développement Web - Servlet Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer L3 Pro Informatique - 2010-2011 2 / 34 Plan Plan 1 Introduction 2 Servlet

Plus en détail

«Anatomie» d une application web Servlets - JDBC

«Anatomie» d une application web Servlets - JDBC «Anatomie» d une application web Servlets - JDBC Patrick REIGNIER - Philippe GENOUDUJF Février 2005 1 L application histogramme de notes HistoServlet HistoServlet HistogramModel HistogramModel (objet (objet

Plus en détail

EISTI 2008-2009 Examen Java EE. Q1 : cycle de vie d un servlet (2 points)

EISTI 2008-2009 Examen Java EE. Q1 : cycle de vie d un servlet (2 points) EISTI 2008-2009 Examen Java EE 1h30 Aucun document autorisé NOM : PLACE : PRENOM : GROUPE TD : Q1 : cycle de vie d un servlet (2 points) Donnez le diagramme d état représentant le cycle de vie d un servlet

Plus en détail

Applications Web (Java)

Applications Web (Java) Applications Web (Java) Mohamed Quafafou 4A Polytech'Marseille mohamed.quafafou@univ-amu.fr 1 Servlets [Bases Exemples] 2 Java Servlets Java Servlet est une extension générique de serveur qui signifie

Plus en détail

TD4 : Wikis, Servlets & Projet

TD4 : Wikis, Servlets & Projet Université Bordeaux 1 T.D. License 3 Informatique 2007 2008 TD4 : Wikis, Servlets & Projet L objet de cette séance est de vous familiariser avec les sockets et les servlets, et d introduire le projet.

Plus en détail

Programmation Web Avancée JSP

Programmation Web Avancée JSP 1/50 Programmation Web Avancée JSP Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

Résumé de l'épisode précédent (Les Servlets)

Résumé de l'épisode précédent (Les Servlets) Résumé de l'épisode précédent (Les Servlets) XVII-1 servlet =? Une servlet est un programme (plug-in) à ajouter à un serveur (quel qu'il soit). Ce cours a trait à la programmation Java coté serveur (Java

Plus en détail

Partie 2.2: Servlet et Tomcat

Partie 2.2: Servlet et Tomcat Partie 2.2: Servlet et Tomcat 1 Plan du cours Servlets Présentation Exemple 2 Plan du cours Tomcat Des servlets à Tomcat: pourquoi Tomcat? Architecture Tomcat Installation et configuration de Tomcat Configuration

Plus en détail

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. M2 CDS2I - 4 février 2010

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. M2 CDS2I - 4 février 2010 1 / 24 Développement Web - Servlet Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer M2 CDS2I - 4 février 2010 2 / 24 Plan Plan 1 2 Le modèle MVC 3 Structure

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

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 52

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 52 Java et Objet Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 52 Chapitre 10 Le langage JavaServer Pages (JSP) et le modèle de composants Java (Java beans) Amélie Lambert 2014-2015 2 / 52 Plan du

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

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application.

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application. Introduction Nous allons parler, dans ce document consacré aux architectures multi-tiers en environnement J2EE, de 3 des cinq couches les plus représentatives. Faisons tout d'abord un petit rappel sur

Plus en détail

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web PROGRAMMATION PUBLIC Professionnels informatiques qui souhaitent développer des applications et «applets» Java DUREE 4 jours 28 heures OBJECTIF Créer divers «applets» à intégrer dans un site Web dynamique,

Plus en détail

Java - J2EE Java Server Pages (JSP)

Java - J2EE Java Server Pages (JSP) WIDLOCHER Antoine GREYC CNRS UMR 6072 1 Java - J2EE Java Server Pages (JSP) Antoine WIDLÖCHER Master MI3 - M2 Université de Caen 20 mars 2008 WIDLOCHER Antoine GREYC CNRS UMR 6072 2 Plan Principes Structure

Plus en détail

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé Template pour les mails Version 1.0 du 13/04/2010 Etat : Validé SUIVI DES MODIFICATIONS Version Rédaction Description Vérification Date 1.0 A. Lesuffleur création du document 13/04/10 Document validé dans

Plus en détail

Applications orientées données (NSY135)

Applications orientées données (NSY135) Applications orientées données (NSY135) 4 Applications Web Dynamiques Auteurs: Raphaël Fournier-S niehotta et Philippe Rigaux (philippe.rigaux@cnam.fr,fournier@cnam.fr) Département d informatique Conservatoire

Plus en détail

Les servlets Le langage Java Les Servlets XVII-1 JMF

Les servlets Le langage Java Les Servlets XVII-1 JMF Les Servlets XVII-1 servlet =? Une servlet est un programme (plug-in) à ajouter à un serveur (quel qu'il soit). Ce cours a trait à la programmation Java coté serveur (J2EE ) Pour l'instant les serveurs

Plus en détail

Bypass et filtre sur les requêtes destinées à la servlet W4

Bypass et filtre sur les requêtes destinées à la servlet W4 Note technique W4 Engine Bypass et filtre sur les requêtes destinées à la servlet W4 Cette note technique décrit le filtre de contrôle du bypass de la servlet W4. Versions de W4 Engine concernées : 5.0

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

AP-5 TD n 2 J2EE 5 novembre 2013

AP-5 TD n 2 J2EE 5 novembre 2013 Objectifs Prérequis Gestion des informations temporaires, sessions et cookies JSP et servlets, mise en place d un contrôleur Java Runtime Environnement (http://www.java.com/fr/download/) (JRE Java 7) IDE

Plus en détail

Le Suivi de session sous J2EE

Le Suivi de session sous J2EE J2EE : Suivi de Sessions Jean-Noël Sorenti. Année 2002/2003 Le Suivi de session sous J2EE ISI 1022 : 1 J2EE : Suivi de Sessions Une application Web peut avoir besoin de conserver des informations avec

Plus en détail

Environnements de Développement

Environnements de Développement Institut Supérieur des Etudes Technologiques de Mahdia Unité d Enseignement : Environnements de Développement BEN ABDELJELIL HASSINE Mouna m.bnaj@yahoo.fr Développement des systèmes d Information Syllabus

Plus en détail

Les formations. Développeur Logiciel. ENI Ecole Informatique

Les formations. Développeur Logiciel. ENI Ecole Informatique page 1/5 Titre professionnel : Reconnu par l Etat de niveau III (Bac), inscrit au RNCP (arrêté du 12/10/07, J.O. n 246 du 23/10/07) (32 semaines) Unité 1 : Structurer une application 6 semaines Module

Plus en détail

C est quoi JSP? JSP = Java Server Pages

C est quoi JSP? JSP = Java Server Pages JSP = Java Server Pages C est quoi JSP? Une JSP est un fichier contenant du code HTML et des fragments de code Java exécutés sur le moteur de Servlets Comparable aux langages côtés serveur de type PHP,

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

DÉVELOPPEMENT WEB ET JAVA

DÉVELOPPEMENT WEB ET JAVA DÉVELOPPEMENT WEB ET JAVA Faire du web en Java On va voir dans les séances suivantes La base : les servlets Du pur java La page web est créée directement en Java avec des println Le JSP : dissocier le

Plus en détail

Travaux Pratiques (Licence Pro) Servlet/JSP (MVC) & Web Services. --- Site Web d un club de tennis

Travaux Pratiques (Licence Pro) Servlet/JSP (MVC) & Web Services. --- Site Web d un club de tennis Travaux Pratiques (Licence Pro) Servlet/JSP (MVC) & Web Services --- Site Web d un club de tennis ETAPE 1 : Services locaux ( servlets / JSP ) Services offerts par le site web a chaque adhérent du club

Plus en détail

pac4j : la librairie de sécurité pour Java par Jérôme LELEU

pac4j : la librairie de sécurité pour Java par Jérôme LELEU pac4j : la librairie de sécurité pour Java par Jérôme LELEU www.parisjug.org Copyright @ 2014 ParisJug. Licence CC - Creatve Commons 2.0 France Paternité - Pas d'utlisaton Commerciale - Partage des Conditons

Plus en détail

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Java EE Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Introduction aux JSP JSP Les servlets facilitent le traitement avec java des requêtes

Plus en détail

Traitement et navigation

Traitement et navigation 12 Traitement et navigation Au chapitre précédent, nous avons vu comment créer des pages web avec différentes technologies (HTML, JSP, JSTL, etc.) en insistant sur le fait que JSF est la spécification

Plus en détail

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique 2010-2011

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique 2010-2011 1 / 32 Développement Web - JSP + EL Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer L3 Pro Informatique 2010-2011 2 / 32 Plan Plan 1 Préambule 2 3 Mise en

Plus en détail

MIF13 Programmation Web

MIF13 Programmation Web MIF13 Programmation Web TECHNOLOGIES CÔTÉ SERVEUR (HTTP ET SERVEUR WEB) L I O N E L M É D I N I S E P T E M B R E - D É C E M B R E 2 0 1 4 Plan du cours Application Web Retour sur la définition Différents

Plus en détail

RICM 4 ème année 12/1/2012

RICM 4 ème année 12/1/2012 RICM 4 ème année 12/1/2012 Examen de Systèmes Répartis Durée : 2h, Documents autorisés à l exception des livres. Le barème est indicatif. Partie A Applications Web Question 1. Dans un répertoire contenant

Plus en détail

TP 2 : programmation côté serveur À rendre pour le mardi 6 mai 2008

TP 2 : programmation côté serveur À rendre pour le mardi 6 mai 2008 Université Claude Bernard Lyon 1 UFR d informatique avril 2006 MIAG soir Systèmes d Information Méthodes Avancées TP 2 : programmation côté serveur À rendre pour le mardi 6 mai 2008 Introduction Dans ce

Plus en détail

Spring MVC. Implémentation du pattern MVC de type 2 dans Spring

Spring MVC. Implémentation du pattern MVC de type 2 dans Spring 7 Spring MVC La mise en pratique du patron de conception MVC (Model View Controller) offre une meilleure structuration du tiers de présentation des applications Java EE en dissociant les préoccupations

Plus en détail

Ala Eddine BEN SALEM. T.P. 2 Servlet

Ala Eddine BEN SALEM. T.P. 2 Servlet EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 2 Servlet 1. Création d'un projet Web: A l'aide d'eclipse, créer un nouveau projet «sampleservlet» avec comme environnement d'exécution le serveur Tomcat installé

Plus en détail

Java EE Cours 6. JSTL et EL. Cours de 2 e année ingénieur

Java EE Cours 6. JSTL et EL. Cours de 2 e année ingénieur Java EE Cours 6 JSTL et EL Cours de 2 e année ingénieur Expression Language (EL) Depuis la version 2.0 des JSP, il est possible de placer à n'importe quel endroit d'une page JSP des expressions qui sont

Plus en détail

Technologies du Multimédia et du Web

Technologies du Multimédia et du Web 3 ème Année Licence appliquée Technologies du Multimédia et du Web MoezBEN HAJ HMIDA ISSAT Sousse 2009/2010 Plan Les systèmes e-services Évolution des architectures d applications Les architectures client/serveur

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

Java EE - Cours 3. Cours de 2 e année ingénieur Spécialisation «Génie Informatique»

Java EE - Cours 3. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» Java EE - Cours 3 Cours de 2 e année ingénieur Spécialisation «Génie Informatique» 1 Problème d une Servlet : 1. C est laid! HTML dans Java out.println(doctype); out.println(""); out.println("\nclock\n");

Plus en détail

TME 1 JAVASCRIPT (2 SEANCES)

TME 1 JAVASCRIPT (2 SEANCES) TME 1 JAVASCRIPT (2 SEANCES) 1. EXERCICES DE BASE Créez des fonctions javascript pour : - faire un jeu «plus petit plus grand» qui tire un nombre au hasard que l utilisateur doit trouver en entrant des

Plus en détail

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr

Java EE. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Java EE Cours de 2 e année ingénieur Spécialisation «Génie Informatique» fabien.romeo@fromeo.fr http://www.fromeo.fr Présentation du cours Pôle GL-I2 «Génie logiciel avancé» 20h sur 8 semaines Objectifs

Plus en détail

WWW - Intérêts du Web

WWW - Intérêts du Web WWW - Intérêts du Web client universel facilité d'emploi standards ouverts intégration des autres services Internet extensibilité du système faibles coûts logiciel et réseau utilisation au sein d'une entreprise

Plus en détail

Institut Supérieur De Gestion De Tunis 3 ème LFIG BAYOUDHI Chaouki

Institut Supérieur De Gestion De Tunis 3 ème LFIG BAYOUDHI Chaouki Exemple JSF EJB et Bean géré I. Enoncé : Cet exemple est une petite application web proposant deux pages web : L une qui affiche un formulaire afin de pouvoir ajouter un livre (AjoutLivre.xhtml), L autre

Plus en détail

Cours 8 : développement d'applications Web

Cours 8 : développement d'applications Web Cours 8 : développement d'applications Web Typologie des applications Web Architecture 3-tiers Composants J2EE : servlets, JSP, XML Terminologie : serveurs Web, d'applications, de servlets,... Le protocole

Plus en détail

Problématique. Développement Web 2. Problématique. Jetty Création d un serveur Web

Problématique. Développement Web 2. Problématique. Jetty Création d un serveur Web Communication client/serveur Comet Problématique Problématique Développement Web 2 Problématique : Nous souhaitons réaliser un tchat Les clients se connectent au serveur; Les clients peuvent discuter;

Plus en détail

Modèle Client-Serveur Partage du serveur entre clients

Modèle Client-Serveur Partage du serveur entre clients Modèle Client-Serveur Partage du serveur entre clients Un serveur peut servir plusieurs clients Vu d un client particulier client requête réponse serveur Vu du serveur Gestion des requêtes (priorité) Exécution

Plus en détail

Objectifs. Comprendre l architecture typique d une application web Exemple: Expérimenter avec:

Objectifs. Comprendre l architecture typique d une application web Exemple: Expérimenter avec: Cedric Dumoulin Objectifs Comprendre l architecture typique d une application web Exemple: Application permettant de lister un catalogue d articles, et de créer des articles Expérimenter avec: EJB, JPA

Plus en détail

Spécification du profil UML d assemblage cible EJB (version 1)

Spécification du profil UML d assemblage cible EJB (version 1) Spécification du profil UML d assemblage cible EJB (version 1) Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti) Référence : Livrable 2.2 Date : 31 mai 2002

Plus en détail

Architecture des systèmes d information répartis

Architecture des systèmes d information répartis Architecture des systèmes d information répartis L architecture multi-tiers Sorina Ionica 1 Présentation du cours Répartition des cours Cours + TD Services web Cours + TD J2EE Contrôle des connaissances

Plus en détail

SQLI. Solution Santé. IdeoSSO - Intégration d'un client IdeoSSO 22/10/2007. Confidentiel SQLI Solution Santé 28/03/2008 P 1/35

SQLI. Solution Santé. IdeoSSO - Intégration d'un client IdeoSSO 22/10/2007. Confidentiel SQLI Solution Santé 28/03/2008 P 1/35 SQLI Solution Santé IdeoSSO - Intégration d'un client IdeoSSO 22/10/2007 Confidentiel SQLI Solution Santé 28/03/2008 P 1/35 Historique Historique des versions du document Version / Date Auteur Commentaire

Plus en détail

NOUVELLES TECHNOS DU WEB INTRODUCTION. LI385 - Nouvelles Technologies du web

NOUVELLES TECHNOS DU WEB INTRODUCTION. LI385 - Nouvelles Technologies du web NOUVELLES TECHNOS DU WEB INTRODUCTION LI385 - Nouvelles Technologies du web Me contacter Jean-Loup Guillaume Jean-loup.guillaume@lip6.fr 0144278844 Les supports sur : http://jlguillaume.free.fr/www/ Contenu

Plus en détail

Tp1 Ema EMACS Développement Web

Tp1 Ema EMACS Développement Web Tp1 Ema EMACS Développement Web 1/ Description de l application : Notre première application Web a pour objectif de gérer une liste de todo (truc à faire) : Diagramme de classe simplifié : Application

Plus en détail

La plate-forme J2EE LPRO CMSII. Olivier Flauzac. olivier.flauzac@univ-reims.fr

La plate-forme J2EE LPRO CMSII. Olivier Flauzac. olivier.flauzac@univ-reims.fr La plate-forme J2EE LPRO CMSII Olivier Flauzac olivier.flauzac@univ-reims.fr Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 1 / 71 Plan 1 Java? 2 Architecture des applications

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 38 NFP111 Systèmes et Applications Réparties Cours 11 - Les Enterprise Java Beans (Introduction aux Enterprise Claude Duvallet Université du Havre UFR Sciences

Plus en détail

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15 Table des matières Au sujet de l auteur 1 Introduction 3 édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe

Plus en détail

PHP OO et Pear DB. Olivier Perrin IUT Nancy-Charlemagne Département Informatique Université Nancy 2. Olivier.Perrin@loria.fr

PHP OO et Pear DB. Olivier Perrin IUT Nancy-Charlemagne Département Informatique Université Nancy 2. Olivier.Perrin@loria.fr PHP OO et Pear DB Olivier Perrin IUT Nancy-Charlemagne Département Informatique Université Nancy 2 Olivier.Perrin@loria.fr Classes et objets en PHP Une classe PHP regroupe des variables d instance, représentés

Plus en détail

CORBA. Cycle de développement

CORBA. Cycle de développement CORBA Cycle de développement Projet MIAGe Toulouse Groupe 2 1 Le cycle de développement (1/3) On s intéresse au développement selon le mode statique, c est à dire en utilisant les talons (stub, skeleton,

Plus en détail

Module B9-1 : sensibilisation à l UML

Module B9-1 : sensibilisation à l UML Module B9-1 : sensibilisation à l UML Olivier Habart : habart.olivier@gmail.com ENSTA B9-1 UML (Olivier Habart) Septembre 14 Diapositive N 1 Session 2 : Vue statique Sommaire Diagramme de classes Diagrammes

Plus en détail

La plate-forme J2EE. Master Informatique 2ème année. Olivier Flauzac. olivier.flauzac@univ-reims.fr

La plate-forme J2EE. Master Informatique 2ème année. Olivier Flauzac. olivier.flauzac@univ-reims.fr La plate-forme J2EE Master Informatique 2ème année Olivier Flauzac olivier.flauzac@univ-reims.fr Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 1 / 64 Plan 1 Java? 2 Architecture

Plus en détail

LANGAGES & DéVELOPPEMENT. Une équipe à vos côtés pour toutes vos montées en compétences

LANGAGES & DéVELOPPEMENT. Une équipe à vos côtés pour toutes vos montées en compétences LANGAGES & DéVELOPPEMENT Une équipe à vos côtés pour toutes vos montées en compétences ASP.NET OPTION VB.NET OU C# 5 jours Permettre aux participants de mieux appréhender ce qu est la programmation pour

Plus en détail

Guide de Migration. Intégration de Spring. Version x.y du 28/03/2008. Etat : xxx

Guide de Migration. Intégration de Spring. Version x.y du 28/03/2008. Etat : xxx Intégration de Spring Version x.y du 28/03/2008 Etat : xxx SUIVI DES MODIFICATIONS Version Rédaction Description Vérification Date 1.0 G.PICAVET C.ROCHETEAU K.COIFFET Première version 28/03/08 Document

Plus en détail

Plan. La plate-forme J2EE. Plan J2SE. Standard Edition. Master Informatique 2ème année. Olivier Flauzac. olivier.flauzac@univ-reims.

Plan. La plate-forme J2EE. Plan J2SE. Standard Edition. Master Informatique 2ème année. Olivier Flauzac. olivier.flauzac@univ-reims. Plan La plate-forme J2EE Master Informatique 2ème année Olivier Flauzac olivier.flauzac@univ-reims.fr Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 1 / 64 Olivier Flauzac (URCA)

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

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 42

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 42 Java et Objet Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 42 Chapitre 8 Développement d applications Web Amélie Lambert 2014-2015 2 / 42 Plan du cours Typologie des applications Web Architecture

Plus en détail

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Servlets (fin) Accès aux paramètres GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Masqué par l'api Méthode getparameter(), getparametervalues() [page de forumulaire]

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

framework MVC pour applications Web Servlets JSP Philippe GENOUD UJF Février 2010 1

framework MVC pour applications Web Servlets JSP Philippe GENOUD UJF Février 2010 1 framework MVC pour applications Web Servlets JSP Philippe GENOUD UJF Février 2010 1 Rappel Architecture MVC Serveur Internet (Serveur HTTP + Serveur Servlet/JSP) Serveur SGBD Requête HTTP Controleur Controleur

Plus en détail

Échange et mise à jourde documents XML via le Web p.1/46

Échange et mise à jourde documents XML via le Web p.1/46 Échange et mise à jour de documents XML via le Web Échange et mise à jourde documents XML via le Web p.1/46 CGI : Common Gateway Interface Principe : on déclenche une action (un programme) sur la machine

Plus en détail

Architectures à composants

Architectures à composants Interaction requête/réponse Architectures à composants!communication par requête/réponse client requête réponse serveur Gaël Thomas gael.thomas@lip6.fr Université Pierre et Marie Curie Master Informatique

Plus en détail

L exemple qui est mis à votre disposition a pour but de rechercher les données contenues dans un fichier services.xml fourni :

L exemple qui est mis à votre disposition a pour but de rechercher les données contenues dans un fichier services.xml fourni : TP n 9 Xml/Json 1) Exemple d application analysant un fichier XML L exemple qui est mis à votre disposition a pour but de rechercher les données contenues dans un fichier services.xml fourni : Ce fichier

Plus en détail

TP2. Mail et servlet. Quel port utilise smtp? A quoi servent les commandes HELO, MAIL FROM:, RCPT TO:, DATA?

TP2. Mail et servlet. Quel port utilise smtp? A quoi servent les commandes HELO, MAIL FROM:, RCPT TO:, DATA? Université Paris 7 M2 II Protocole Internet 1 Protocole SMTP TP2 Mail et servlet 1. Le protocole SMTP est définit dans la RFC 821 (mise à jour dans la RFC 2821). Le format des messages est spécifié dans

Plus en détail

HTML, pour aller plus loin

HTML, pour aller plus loin HTML, le langage du WEB Applets, Servlets,, JSP & J2EE / EJB IFT 6802 Commerce électronique Par Laurent Magnin Le Web se compose d'un maillage de pages, hébergées sur différents sites, reliées entre elles

Plus en détail

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web PHP & Bases de données La quantité de données utilisée par certains sites web nécessite l'utilisation d'une base de données Il faut donc disposer d'un SGBD (mysql, postgresql, oracle, ) installé sur 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

Cours Serveurs d application. et Java avancé. Introduction au cours Serveurs d application. et Java avancé. Prérequis / Objectifs.

Cours Serveurs d application. et Java avancé. Introduction au cours Serveurs d application. et Java avancé. Prérequis / Objectifs. Cours Serveurs d application et Java avancé Introduction au cours Serveurs d application et Java avancé ITU Université de Nice Richard Grin Version O 1.0.1 12/4/14 20 h de cours et TPs Richard Grin, université

Plus en détail

Programmation Réseau RMI. Jean-Baptiste.Yunes@univ-paris-diderot.fr armand@informatique.univ-paris-diderot.fr. ! UFR Informatique

Programmation Réseau RMI. Jean-Baptiste.Yunes@univ-paris-diderot.fr armand@informatique.univ-paris-diderot.fr. ! UFR Informatique Programmation Réseau RMI Jean-Baptiste.Yunes@univ-paris-diderot.fr armand@informatique.univ-paris-diderot.fr UFR Informatique 2014 Les RMI de Java Les applications RMI sont des applications bâties sur

Plus en détail

Les formations. Développeur Logiciel. ENI Ecole Informatique

Les formations. Développeur Logiciel. ENI Ecole Informatique page 1/8 Titre professionnel : Inscrit au RNCP de Niveau III (Bac + 2) (J.O. du 19/02/13) 24 semaines + 8 semaines de stage (uniquement en formation continue) Développer une application orientée objet

Plus en détail

Architecture Logicielle

Architecture Logicielle Architecture Logicielle Les applications d'entreprise exemple : La technologie JEE Année universitaire 2013/2014 Semestre 1 Introduction Une application d'entreprise a généralement les caractéristiques

Plus en détail

Java EE Aspects Avancés. Architecture d une application web (JEE)

Java EE Aspects Avancés. Architecture d une application web (JEE) École Supérieure de Management D Informatique et de Télécommunication Java EE Aspects Avancés Jamal ES-SAHEL j.essahel@gmail.com Architecture d une application web (JEE) 1 JEE Aspects Avancés Framwork?

Plus en détail

JSF 2 avec Eclipse Développement d'applications web avec Java Server Faces (2ième édition)

JSF 2 avec Eclipse Développement d'applications web avec Java Server Faces (2ième édition) Applications web, servlets et JSP 1. Introduction 15 2. Rappels sur la notion d'application web 15 2.1 Éléments constitutifs d'une application 15 2.2 Vie d'une application 16 3. Les servlets 16 3.1 Présentation

Plus en détail

Tp1 Ema EMACS Développement Web

Tp1 Ema EMACS Développement Web Tp1 Ema EMACS Développement Web 1/ Description de l application : Notre première application Web a pour objectif de gérer une liste de todo (truc à faire) : Diagramme de classe simplifié : Application

Plus en détail

Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com. Java EE. Tomcat

Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com. Java EE. Tomcat Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com Java EE Tomcat Licence Creative Commons Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative

Plus en détail