SPRING. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

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

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

Transcription

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

2 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

3 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

4 J2EE Spécification Manques (EJB1-2) Lourdeurs Difficultés (sécurité) = Spring pour pallier Robustesse Extensibilité Réutilisabilité Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

5 SPRING : Framework de développement Développé en Java, basé sur la notion de conteneur léger V3.* Open Source, communauté Modulaire = Chaque brique est indépendante Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

6 SPRING : Boîte à tout faire JSP / Servlet JSF Struts Grails RMI JUnit JDBC Hibernate = Interopérabilité frameworks "Conteneur léger" Pas d implémentation d interface nécessaire Infrastructure d un serveur d application JEE Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

7 SPRING : Super fabrique d objets Mode transactionnel Gestion d EJBs Persistance des objets Interface Web WebServices Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

8 SPRING : La pile de services Spring ORM Spring Web Spring AOP (Aspect) Ibatis, Hibernate JDO Spring DAO Gestion des TXs Support JDBC Support DAO Utilitaires Spring Context exposé par JNDI Support EJB Remoting Spring MVC Spring CORE Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

9 SPRING : Application Web n-tiers Interface utilisateur Métier DAO Spring Moteur de servlets Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

10 SPRING : Applications Serveur / Client lourd Client lourd Spring Spring remoting Métier DAO Spring Moteur de servlets Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

11 SPRING : Applications réparties Client lourd Spring Spring remoting Métier Spring Spring remoting DAO Spring Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

12 SPRING : EJB Client Spring EJB Spring Serveur d'applications Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

13 SPRING : Mise en place Librairies du framework : core, beans... Fichier(s) de configuration = applicationcontext.xml Gestion de beans Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

14 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

15 JavaBeans : rappels Classe "Serializable" sauvegarder/restaurer l état d instances constructeur sans paramètre accesseurs GET/SET des attributs privés Classe non "final" Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

16 SPRING : types de bean Singletons création d une instance unique à l initialisation (par défaut) Prototypes création à la demande (lors d un appel type : (springfactory.getbean("personne1")) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

17 Etude de cas : personne & véhicule Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

18 SPRING : BeanFactory Fichier de configuration ApplicationContext.xml <beans> <!-- Premiere fabrique --> <bean id="personne" class="metier.personne" /> <!-- Deuxieme fabrique --> <bean id="voiture" class="metier.voiture"> <property name="personne"> <ref bean="personne"> </property> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

19 Propriétés SPRING Déclarer un besoin Valeurs par défaut Initialisations de tableaux/listes Paramètres de configuration Références vers autre bean (IoC) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

20 Propriétés : Exemple d initialisation TP/BEAN/src/applicationContext.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="personne1" class="metier.personne" init-method="init" destroy-method="close"> <property name="nom"> <value>bob</value> </property> <property name="age"> <value>40</value> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

21 Propriétés : Exemple d initialisation TP/BEAN/src/applicationContext.xml <bean id="voiture1" class="metier.voiture" init-method="init" destroy-method="close"> <constructor-arg index="0"> <value>peugeot</value> </constructor-arg> <constructor-arg index="1"> <value>307</value> </constructor-arg> <constructor-arg index="2"> <ref bean="personne1" /> </constructor-arg> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

22 Utilisation dans une application Java TP/BEAN/src/Main.java // Recherche du fichier de configuration de Spring ClassPathResource cpr=new ClassPathResource("applicationContext.xml"); // Initialisation de la fabrique SPRING, les singletons sont charges ListableBeanFactory bf = new XmlBeanFactory(cpr); // Initialisation de la methode getbean en parametrant le nom du bean // pour creer ou recuperer un bean declare dans le fichier de // configuration Personne personne1 = (Personne) bf.getbean("personne1"); // Affichage des donnees de personne1 System.out.println("personne1 : " + personne1.tostring()); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

23 Utilisation dans une application Web web.xml <context-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/applicationcontext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.contextloaderlistener </listener-class> </listener> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

24 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

25 IOC : Inversion Of Control (injection de dépendance) Classe A Dépendance Classe B Design Pattern casser les dépendances Se base sur la notion d abstraction commune (interface java) = le framework qui a la charge d injecter les dépendances nécessaires Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

26 IOC : Inversement des rôles Classe A Interface I Classe B Dépendance Sans IOC : application appelle le framework Avec IOC : le framework appelle l application Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

27 IOC : Procédure d injection Module A Module B Module C Framework Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

28 IOC : Etude de cas simple Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

29 IOC : Etude de cas simple Sans Spring Une personne veut louer un véhicule : voiture ou camion Lorsque le véhicule est loué, l action réalisée est l affichage du véhicule loué IVehicule louer() Personne louer_vehicule() Voiture louer() Camion louer() Associations Généralisations Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

30 IOC : Etude de cas simple / code TP/NO_IOC/src/metier/IVehicule.java package metier; public interface IVehicule { public String louer(); } TP/NO_IOC/src/metier/Voiture.java package metier; public class Voiture implements IVehicule{ public String louer(){ return "Je loue une voiture"; } } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

31 IOC : Etude de cas simple / code public class Personne { TP/NO_IOC/src/metier/Personne.java private IVehicule vehicule; public Personne(){} // Initialisation du vehicule, ici : une Voiture public void affectation_vehicule(){ vehicule=new Voiture(); //vehicule=new Camion(); } // Location du vehicule public void louer_vehicule() { System.out.println(vehicule.louer()); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

32 IOC : Etude de cas simple / code import metier.personne; TP/NO_IOC/src/Main.java public class Main { public static void main(string[] args) { Personne p=new Personne(); // Affectation du vehicule dans le code de la methode p.affectation_vehicule(); // Execution p.louer_vehicule(); } } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

33 IOC : Etude de cas simple / problèmes Fort couplage de l architecture Création d instances DAO Modifications de choix de DAO dans le code Comment tester quand les classes implémentant les DAO (voiture ou camion) ne sont pas développées? Faire fonctionner des classes DAO différentes suivant le contexte d exécution (développement, production...) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

34 IOC : Etude de cas simple / intégration de Spring Spring injecte les dépendances nécessaires Container IVehicule louer() Personne louer_vehicule() setvehicule() Voiture louer() Camion louer() Associations Généralisations Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

35 IOC : Etude de cas simple / Spring code TP/IOC/src/applicationContext.xml <beans> <bean id="voiture" class="metier.voiture" /> <bean id="camion" class="metier.camion" /> <bean id="personne" class="metier.personne"> <property name="vehicule"> <!-- le changement de vehicule se fait ici --> <ref local="camion"/> </property> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

36 IOC : Etude de cas simple / Spring code TP/IOC/src/metier/Personne.java public class Personne { private IVehicule vehicule; } // Injection par mutateur public void setvehicule(ivehicule vehicule) { this.vehicule = vehicule; } // Location du vehicule public void louer_vehicule() { System.out.println(vehicule.louer()); } // Constructeur par defaut public Personne(){} Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

37 IOC : Etude de cas simple / Spring code TP/IOC/src/Main.java public static void main(string[] args) { // Recherche du fichier de configuration de Spring ClassPathResource cpr = new ClassPathResource( "applicationcontext.xml"); } // Initialisation de la fabrique SPRING ListableBeanFactory bf = new XmlBeanFactory(cpr); // Recuperation du bean Personne Personne p = (Personne) bf.getbean("personne"); // Execution p.louer_vehicule(); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

38 IOC : 3 types d injection Par constructeur Object construitcomposant(string pnom){ Class c=recherchelaclassquiimplemente(pnom) ; String[] dep= recherchelesdependance(pnom) ; Params[] parametresdeconstructeur; Pour chaque element (composant) de dep Faire Object o= construitcomposant(composant) ; Rajouter o a la liste de parametresdeconstructeur ; Fin Faire construireclasse( c, parametresdeconstructeur) } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

39 IOC : 3 types d injection Par mutateurs(setter) Object construitcomposant(string pnom){ Class c=recherchelaclassquiimplemente(pnom) ; Object composant=new c() ; String[] dep= recherchelesdependance(pnom) ; Params[] parametresdeconstructeur; Pour chaque element (composant) de dep Faire Object o= construitcomposant(composant) ; composant.setnommembre(o) ; Fin Faire } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

40 IOC : 3 types d injection Par interface Object construitcomposant(string pnom){ Class c=recherchelaclassquiimplemente(pnom) ; Object composant=new c() ; String[] dep= recherchelesdependance(pnom) ; Params[] parametresdeconstructeur; Pour chaque element (composant) de dep Faire Object o= construitcomposant(composant) ; composant.methodeinjection(o) ; Fin Faire } public interface IInjectMethode{ public void methodeinjection(object o) ; } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

41 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

42 Programmation classique Journaux Objet Méthode Logique métier Sécurité Implications Enchevêtrement du code Faible réutilisabilité complexité Baisse de qualité Difficultés à faire évoluer Cache Préoccupations mélangées Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

43 Programmation par aspect Objet Sécurité Journaux Cache Méthode Solutions Décomposer en aspect Programmer la partie métier Recomposer les aspects Logique métier = Ajouter du comportement sans modification de code Préoccupations séparées Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

44 AOP : Utilisation de Spring Découplage des modules Maintenance accrue Meilleure réutilisation Gain de productivité Qualité du code améliorée Code non intrusif Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

45 AOP : 2 types de programmations Statique : au début ou à la fin Dynamique : au moment de l exécution (plus lent) = reconfiguration sans compilation Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

46 AOP : Vocabulaire Point de jonction (Joinpoint) Point d actions (pointcut) Conseil / greffon (advice) Aspect Trammeur / tisseur (Weaver) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

47 Exemple : gestion des journaux sans aspect public class Personne { private String nom; private int age; TP/AOP/src/metier/Personne.java // Affichage des informations de l individu public String tostring() { String s="nom=["+this.nom+"], age=["+this.age+"]"; // Affichage d un log System.out.println(s); return s; } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

48 Exemple : gestion des journaux sans aspect TP/AOP/src/applicationContext.xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans <bean id="personne1" class="metier.personne"> <property name="nom"> <value>bob</value> </property> <property name="age"> <value>40</value> </property> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

49 Exemple : gestion des journaux sans aspect public void testpersonne() { // Recherche du fichier de configuration de Spring ClassPathResource cpr = new ClassPathResource( "applicationcontext.xml"); ListableBeanFactory bf = new XmlBeanFactory(cpr); // Recherche du bean et execution Personne personne1 = (Personne) bf.getbean("personne1"); String resultat=personne1.tostring(); } = nom=[bob], age=[40] Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

50 Exemple : gestion des journaux via AOP TP/AOP/src/applicationContext_with_aop.xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemalocation="http://www.springframework.org/schema/beans <bean id="monlogger" class="aop.monlogger"/> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

51 Exemple : gestion des journaux via AOP TP/AOP/src/applicationContext_with_aop.xml <aop:config> <aop:pointcut id="servicepointcut" expression="execution(* metier.personne.*(..))"/> <aop:aspect ref="monlogger"> <aop:before method="logdebutmethode" pointcut-ref="servicepointcut"/> <aop:after-returning method="logfinmethode" returning="result" pointcut-ref="servicepointcut"/> <aop:around method="injectaround" pointcut-ref="servicepointcut" /> </aop:aspect> </aop:config > Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

52 Exemple : gestion des journaux via AOP MonLogger TP/AOP/src/aop/MonLogger.java // Methode est appelee a chaque fois (et avant) qu une methode du // pointcut est interceptee public void logdebutmethode(joinpoint joinpoint) { Object[] args = joinpoint.getargs(); // Nom de la methode interceptee String name = joinpoint.getsignature().tolongstring(); StringBuffer sb = new StringBuffer(name + " called with: ["); // Liste des valeurs des arguments recus par la methode for(int i = 0; i < args.length; i++) { Object o = args[i]; sb.append(" "+o+" "); sb.append((i == args.length - 1)? "" : ", "); } sb.append("]"); System.out.println(sb); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

53 Exemple : gestion des journaux via AOP MonLogger TP/AOP/src/aop/MonLogger.java // Methode appelee a chaque fois (et apres) qu une methode du // pointcut est interceptee. Elle recoit en argument result //qui est le retour de la methode interceptee public void logfinmethode(staticpart staticpart, Object result) { // Nom de la methode interceptee String name = staticpart.getsignature().tolongstring(); System.out.println(name + " returning: [" + result + "]"); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

54 Exemple : gestion des journaux via AOP MonLogger TP/AOP/src/aop/MonLogger.java // Methode avant ET apres qu une methode du pointcut est // interceptee. public Object injectaround(proceedingjoinpoint pjp) throws Throwable { // Exemple de traitement avant execution de la methode System.out.println("INJECT BEFORE!"); // Execution de la methode Object retval = null; try { retval = pjp.proceed(); } catch (Exception e) {} } // Exemple de traitement apres execution de la methode System.out.println("INJECT AFTER!"); return retval; Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

55 Exemple : gestion des journaux via AOP Tests public void testpersonnewithaop() { // Recherche du fichier de configuration de Spring ApplicationContext bf = new ClassPathXmlApplicationContext( new String[]{"applicationContext_with_aop.xml"} ); } // Recherche du bean et execution Personne personne1 = (Personne) bf.getbean("personne1"); personne1.tostring(); Resultats public java.lang.string metier.personne.tostring() called with: [] INJECT BEFORE! nom=[bob], age=[40] public java.lang.string metier.personne.tostring() returning: [nom=[bob], age=[40]] INJECT AFTER! Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

56 JDBCTemplate Hibernate Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

57 JDBCTemplate Hibernate Design Pattern DAO : principe général Application ObjetMétier 1 ObjetMétier 1 ObjetMétier 1 DAO 1 DAO 2 DAO 1 Couche persistance Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

58 JDBCTemplate Hibernate Design Pattern DAO : structure générale utilise ObjetMétier DAO encapsule Source de données Obtient / Modifie Créé / utilise ObjetTransfert Création d'un objet DAO par classe métier (non par objet) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

59 JDBCTemplate Hibernate DAO et SPRING Faire une abstraction par rapport à la méthode d accès à la base de données (framework de mapping, jdbc...) Offrir un système de management des transactions Offrir un système d accès aux données Offrir une hiérarchie d exceptions génériques Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

60 JDBCTemplate Hibernate DAO et SPRING Spring Invariable Spécifique - Ouvrir / fermer les connexions - Initialiser les ressources - Exécuter une requête - Récupérer le résultat Template Callback Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

61 JDBCTemplate Hibernate DAO / SPRING / TEMPLATES DAO Support Template Framework de persistance Application DAO BD Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

62 JDBCTemplate Hibernate DAO / SPRING / TEMPLATES DAO Template DAO Callback 1. Initialisation des ressources 2. Ouverture d'une transaction 3. Exécution de la requête 5. Commit / rollback 6. Fermeture de la connexion 4. Envoi du résultat Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

63 JDBCTemplate Hibernate Exemple de travail : stockage Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

64 Exemple JDBC classique TP/JDBC/src/bdd/Derby.java JDBCTemplate Hibernate public class Derby { String connectionurl = "jdbc:derby://localhost:1527/location;user=location;password=mdp"; Statement statement = null; public List<Personne> findall() { ArrayList liste=new ArrayList(); try { // Load the Driver class. Class.forName("org.apache.derby.jdbc.ClientDriver"); //Create the connection using the static getconnection method Connection con = DriverManager.getConnection(connectionURL); //Create a Statement class to execute the SQL statement statement = con.createstatement(); //Execute the SQL statement and get the results in a Resultset ResultSet rs = statement.executequery( "select * from location.personne"); //... Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

65 JDBCTemplate Hibernate Exemple JDBC classique } TP/JDBC/src/bdd/Derby.java // Recuperation des donnes while (rs.next()) { Personne p=new Personne(rs.getString("nom"),rs.getInt("age")); liste.add(p); } } catch (Exception e) { e.printstacktrace(); } finally { if (statement!= null) { try { statement.close();} catch (Exception ex) { ex.printstacktrace();} } } return liste; Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

66 Exemple JDBC classique Insertion TP/JDBC/src/bdd/Derby.java JDBCTemplate public int updateagepersonne(string nom, int age) { int resultat = 0; try { Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection con = DriverManager.getConnection(connectionURL); statement = con.createstatement(); resultat = statement.executeupdate("update "+ "location.personne set age="+age+" where "+ "nom= "+nom+" "); } catch (Exception e) { e.printstacktrace(); } finally { if (statement!= null) { try { statement.close();} catch (Exception ex) { ex.printstacktrace();} } } return resultat; } Hibernate Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

67 JDBCTemplate Hibernate Exemple JDBC classique Problèmes Les tests ne sont pas effectués (existence d attribut, test alphabétique ou numérique, quantité négative...) Maintenabilité? Testabilité? code peu résistant Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

68 JDBCTemplate Hibernate Exemple JDBC classique Améliorations TP/JDBC/src/bdd/Derby.java public int updateagepersonne2(string nom, int age) throws PersonneNotFoundException, AgeNegativeException{ int resultat = 0; try { if (age<0) {throw new AgeNegativeException();} Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection con = DriverManager.getConnection(connectionURL); statement = con.createstatement(); // Recherche de l existence de la personne ResultSet rs=statement.executequery( "select * from "+ "location.personne where nom= "+nom+" "); if (rs==null!rs.next()){ throw new PersonneNotFoundException(); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

69 JDBCTemplate Hibernate Exemple JDBC classique Améliorations } } TP/JDBC/src/bdd/Derby.java // Update resultat = statement.executeupdate("update "+ "location.personne set age="+age+" where "+ "nom= "+nom+" "); } catch (Exception e) { e.printstacktrace(); } finally { if (statement!= null) { try { statement.close();} catch (Exception ex) { ex.printstacktrace();} } } return resultat; Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

70 JDBCTemplate Hibernate Intérêts de SPRING Gérer les connexions Définir les paramètres de connexion Ouvrir la connexion Spécifier les statements Préparer et exécuter les statements Établir la boucle permettant de parcourir les résultats (si il y en a) Faire le travail pour chaque itération Traiter n importe quelle exception Se charger des transactions Fermer la connexion Découpler les couches métiers / accès aux données Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

71 JDBCTemplate Découpler les couches métiers / accès aux données TP/JDBC/src/metier/IPersonneMetier.java package metier; import exceptions.agenegativeexception; import exceptions.personnenotfoundexception; public interface IPersonneMetier { public int updateagepersonne(string nom, int age) throws PersonneNotFoundException, AgeNegativeException; } Hibernate package dao; import entite.personne; TP/JDBC/src/dao/IPersonneDao.java public interface IPersonneDao { public boolean personneexiste(string nom); public int updatepersonne(string nom, int age); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

72 JDBCTemplate Hibernate Implémentation classe DAO TP/JDBC/src/dao/PersonneDao.java public class PersonneDao implements IPersonneDao { } private JdbcTemplate jdbctemplate; public void setdatasource(datasource datasource) { this.jdbctemplate = new JdbcTemplate(datasource); } public boolean personneexiste(string nom) { String sql="select count(*) from location.personne where nom=?"; int count=jdbctemplate.queryforint(sql,new Object[]{nom}); return count > 0? true : false; } public int updatepersonne(string nom, int age) { String sql="update location.personne set age=? where nom=?"; return jdbctemplate.update(sql,new Object[]{age,nom}); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

73 JDBCTemplate Hibernate Implémentation classe métier TP/JDBC/src/metier/PersonneMetier.java public class PersonneMetier implements IPersonneMetier { IPersonneDao personnedao; public void setpersonnedao(ipersonnedao personnedao){ this.personnedao=personnedao; } public int updateagepersonne(string nom, int age) throws PersonneNotFoundException, AgeNegativeException{ } } // Tests if (age<0) {throw new AgeNegativeException();} if (!personnedao.personneexiste(nom)) { throw new PersonneNotFoundException(); } // Update return personnedao.updatepersonne(nom,age); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

74 JDBCTemplate Hibernate Configuration de Spring TP/JDBC/src/applicationContext.xml <!-- Objets DAO --> <bean id="personnedao" class="dao.personnedao"> <property name="datasource" ref="derbydatasource" /> </bean> <!-- Objets Metier --> <bean id="personnemetier" class="metier.personnemetier"> <property name="personnedao" ref="personnedao" /> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

75 JDBCTemplate Hibernate Configuration de Spring TP/JDBC/src/applicationContext.xml <!-- Source de donnees Derby --> <bean id="derbydatasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname"> <value>org.apache.derby.jdbc.clientdriver</value> </property> <property name="url"> <value>jdbc:derby://localhost:1527/location</value> </property> <property name="username"> <value>location</value> </property> <property name="password"> <value>mdp</value> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

76 JDBCTemplate Hibernate Exécution public void testjdbctemplate() { ListableBeanFactory bf; bf = new XmlBeanFactory( new ClassPathResource("applicationContext.xml")); IPersonneMetier m=(ipersonnemetier)bf.getbean("personnemetier"); } try { System.out.println(m.updateAgePersonne("michael",-2)); } catch (AgeNegativeException e){} catch (PersonneNotFoundException e){} Age incorrect Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

77 JDBCTemplate Hibernate Hibernate : Rôles / intérêts Gérer la persistance d objets Java Offrir des outils de mapping Objet / Relationnel Lazy loading Abstraction de la couche JDBC (HQL...) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

78 JDBCTemplate Hibernate Configuration de Spring / Connexion TP/HIBERNATE/src/applicationContext.xml <bean id="derbydatasource" class="org.apache.commons.dbcp.basicdatasour <property name="driverclassname"> <value>org.apache.derby.jdbc.clientdriver</value> </property> <property name="url"> <value>jdbc:derby://localhost:1527/location</value> </property> <property name="username"> <value>location</value> </property> <property name="password"> <value>mdp</value> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

79 JDBCTemplate Hibernate Configuration de Spring / Factory TP/HIBERNATE/src/applicationContext.xml <bean id="sessionfactorybean" class="org.springframework.orm.hibernate3.localsessionfactory <property name="datasource"> <ref bean="derbydatasource" /> </property> <property name="hibernateproperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.derbydialect< <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.cglib.use_reflection_optimizer">false</prop> </props> </property> <property name="mappingresources"> <list> <value>entite/personne.hbm.xml</value> </list> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

80 JDBCTemplate Hibernate Configuration de Spring / DAO TP/HIBERNATE/src/applicationContext.xml <bean id="personnedao" class="dao.personnedao"> <property name="sessionfactory"> <ref bean="sessionfactorybean" /> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

81 JDBCTemplate Hibernate Implémentation TP/HIBERNATE/src/dao/PersonneDao.java public class PersonneDao extends HibernateDaoSupport implements IPersonneDao { public List findpersonnes() { return gethibernatetemplate().find("from entite.personne"); } public void deletepersonne(personne p) { gethibernatetemplate().delete(p); } public void updatepersonne(personne p) { gethibernatetemplate().update(p); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

82 JDBCTemplate Hibernate Implémentation } TP/HIBERNATE/src/dao/PersonneDao.java public Personne findpersonne(string nom) { List l = gethibernatetemplate().find( "from entite.personne p where p.nom= " + nom + " "); if (l.size() > 0) { return (Personne) l.get(0); } else { return null; } } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

83 Sommaire Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

84 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Spring Security Solution complète pour les applications J2EE Configurer toute la sécurité sur l ensemble du système Indépendant de l environnement Sécuriser n importe quel ressource : url, méthode, objet Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

85 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Concepts de sécurité Authentification : vérifier l identité d une entité Valider l authenticité Ex : login/mdp Autorisation : Rôles Droits Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

86 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Principe de fonctionnement Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

87 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Principe de fonctionnement Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

88 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Etude de cas : sécuriser une application web Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

89 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration du descripteur de déploiement TP/SECURITY/web/WEB-INF/web.xml <listener> <listener-class>org.springframework.security.web.session.httpsessioneventpublisher</listen </listener> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <context-param> <param-name>contextconfiglocation</param-name> <param-value> classpath:applicationcontextsecure.xml classpath:applicationcontext.xml </param-value> </context-param> <filter> <filter-name>springsecurityfilterchain</filter-name> <filter-class>org.springframework.web.filter.delegatingfilterproxy</filter-class> </filter> <filter-mapping> <filter-name>springsecurityfilterchain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

90 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration de Spring Security TP/SECURITY/src/java/applicationContextSecure.xml <?xml version="1.0" encoding="utf-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans <http auto-config= true > <intercept-url pattern="/**" access="role_user" /> </http> <authentication-manager> <authentication-provider> <user-service> <user name="admin" password="admin" authorities="role_user, ROLE_ADMIN" /> <user name="user" password="user" authorities="role_user" /> </user-service> </authentication-provider> </authentication-manager> </beans:beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

91 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Utilisation de l API log4j Hautement configurable (fichiers, syslog, mail...) Différents niveaux FATAL : erreur grave pouvant mener à l arrêt prématuré de l application ERROR : erreur qui n empêche cependant pas l application de fonctionner WARN : avertissement (incohérence dans la configuration), l application peut continuer à fonctionner mais pas forcément de la façon attendue INFO : messages à caractère informatif (nom des fichiers...) DEBUG : messages pouvant être utiles au débogage TRACE : niveau le plus fin utile au débogage Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

92 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration de log4j TP/SECURITY/src/java/log4j.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration xmlns:log4j= > <appender name="ca" class="org.apache.log4j.consoleappender"> <layout class="org.apache.log4j.patternlayout"> <param name="conversionpattern" value="%-4r [%t] %-5p %c %x - %m%n" /> </layout> </appender> <root> <level value="debug" /> <appender-ref ref="ca" /> </root> </log4j:configuration> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

93 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration du descripteur de déploiement TP/SECURITY/web/WEB-INF/web.xml <context-param> <param-name>log4jconfiglocation</param-name> <param-value>classpath:log4j.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.log4jconfiglistener</listener-class> </listener> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

94 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Personnalisation du formulaire d authentification TP/SECURITY/web/login.jsp contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>login</title> </head> <body> <h1>bienvenue</h1> <form method="post" action="j_spring_security_check"> Identifiant :<input name="j_username" value="" type="text" /> <br/> Mot de passe :<input name="j_password" type="password" /> <input value="valider" type="submit" /> </form> </body> </html> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

95 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration du formulaire d authentification TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <intercept-url pattern="/login.jsp" access="is_authenticated_anonymously" /> <intercept-url pattern="/**" access="role_user" /> <form-login login-page= /login.jsp default-target-url= /index.jsp always-use-default-target= true /> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

96 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Page d échec d authentification Page login-failure.jsp TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <intercept-url pattern="/login.jsp" access="is_authenticated_anonymously" /> <intercept-url pattern="/login-failure.jsp" access="is_authenticated_anonymously" /> <intercept-url pattern="/**" access="role_user" /> <form-login login-page= /login.jsp default-target-url= /index.jsp always-use-default-target= true authentication-failure-url="/login-failure.jsp"/> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

97 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Page d accès interdit Page accessdenied.jsp TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true access-denied-page="/accessdenied.jsp">... </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

98 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Page de déconnexion Page logout.jsp Ajouter le lien : <a href="logout">déconnexion</a> TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <logout logout-success-url="/logout.jsp" invalidate-session="true" logout-url="/logout" delete-cookies="jsessionid" />... </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

99 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Utilisation de HTTPs TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <intercept-url pattern="/login.jsp" access="is_authenticated_anonymously" requires-channel="https"/> <intercept-url pattern="/**" access="role_user" requires-channel="any" /> <form-login login-page= /login.jsp default-target-url= /index.jsp always-use-default-target= true /> <port-mappings> <port-mapping http="8080" https="8181"/> </port-mappings> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

100 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Détection des timeouts Page sessiontimeout.html TP/SECURITY/src/java/applicationContextSecure.xml <http>... <session-management invalid-session-url="/sessiontimeout.html" /> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

101 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Limiter le nombre de sessions ouvertes TP/SECURITY/web/WEB-INF/web.xml <listener> <listener-class> org.springframework.security.web.session.httpsessioneventpublisher </listener-class> </listener> TP/SECURITY/src/java/applicationContextSecure.xml <http>... <session-management invalid-session-url="/login-denied.jsp"> <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" /> </session-management> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

102 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Taglib Sécurisation des pages Web tag d authentification récupérer l identifiant de l utilisateur tag d autorisation afficher/cacher des fragments de JSP en fonction des rôles de l utilisateur connecté ifallgranted : teste si l utilisateur a tous les rôles indiqués ifanygranted : teste si l utilisateur a un des rôles indiqués ifnotgranted : teste si l utilisateur n a aucun des rôles indiqués TP/SECURITY/web/index.jsp taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>... Utilisateur: <sec:authentication property="principal.username"/>... <ul> <sec:authorize ifallgranted="role_user"> <li> utilisateur simple </li> </sec:authorize> <sec:authorize ifallgranted="role_admin"> <li> administrateur </li> </sec:authorize> </ul>... Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

103 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Authentification via JDBC Récupérer les informations d une base de données 2 tables : utilisateurs autorisations requetes.sql CREATE SCHEMA gestion; CREATE TABLE gestion.users ( username VARCHAR(50) NOT NULL PRIMARY KEY, password VARCHAR(50) NOT NULL, enabled numeric ); CREATE TABLE gestion.authorities ( username VARCHAR(50) NOT NULL, authority VARCHAR(50) NOT NULL ); INSERT INTO gestion.users (USERNAME, PASSWORD, ENABLED) VALUES ( admin, admin, 1); INSERT INTO gestion.users (USERNAME, PASSWORD, ENABLED) VALUES ( user, user, 1); INSERT INTO GESTION.AUTHORITIES (USERNAME, AUTHORITY) VALUES ( user, ROLE_USER ); INSERT INTO GESTION.AUTHORITIES (USERNAME, AUTHORITY) VALUES ( admin, ROLE_ADMIN ); INSERT INTO GESTION.AUTHORITIES (USERNAME, AUTHORITY) VALUES ( admin, ROLE_USER ); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

104 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration Spring Connexion Jdbc Spring Security TP/SECURITY/src/java/applicationContextSecure.xml <authentication-manager> <authentication-provider> <jdbc-user-service data-source-ref="derbydatasource" users-by-username-query="select username,password,enabled FROM gestion.users WHERE username =?" authorities-by-username-query="select username,authority FROM gestion.authorities WHERE username =?"/> </authentication-provider> </authentication-manager> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

105 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

106 Conclusion Très ouvert et ne limite pas les comportements : pour un même problème, il existe plusieurs solutions déroutant Spring facilite l intégration et l utilisation de librairies tierces, mais la connaissance et la compréhension de ces librairie restent nécessaires. Le comportement générique n est pas forcément adapté aux besoins. Spring est structurant et améliore de façon significative la productivité et la maintenabilité des applications. Il n y a pas là d invention géniale mais plutôt un ensemble cohérent qui, bien que puissant, est simple et relativement intuitif à mettre en œuvre. Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

107 Bibliographie http ://www.springframework.org/ http ://java.sun.com/blueprints/corej2eepatterns/patt erns/dataaccessobject.html Spring par la pratique, Eyrolles, 2006 Spring par l exemple, PEARSSON, 2008 http ://www.martinfowler.com/articles/injection.html Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

SPRING. Master Informatique 2ème année 2011-2012. Michael Fortier fortier@univ-paris13.fr

SPRING. Master Informatique 2ème année 2011-2012. Michael Fortier fortier@univ-paris13.fr SPRING Master Informatique 2ème année 2011-2012 Michael Fortier fortier@univ-paris13.fr 1 SPRING Concepts Bean Injection Of Control (IoC) Exemple classique Aspect Oriented Programming (AOP) Data Access

Plus en détail

M2PLS - M2EID TP SPRING

M2PLS - M2EID TP SPRING M2PLS - M2EID TP SPRING Référence du document : Http://www-lipn.univ-paris13.fr/M2PLS/tp_spring.pdf Dernière modification : 25/11/11 Type de document : Travaux pratiques Rédacteur : Fortier Michael fortier@univ-paris13,fr

Plus en détail

TP SPRING. https ://lipn.univ-paris13.fr/ fortier/enseignement/spring/tp/

TP SPRING. https ://lipn.univ-paris13.fr/ fortier/enseignement/spring/tp/ Institut Galilée Année 2015-2016 TP SPRING Programmation et Logiciels sûrs Master 2 PLS Résumé L objectif de ce TP est d être capable de réaliser une application Java de gestion de location de véhicules,voiture

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

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

Formation développement Java, Spring et Hibernate

Formation développement Java, Spring et Hibernate L institut de formation continue des professionnels du Web Formation développement Java, Spring et Hibernate Référence formation : Durée : Prix conseillé : DJSH 10 jours (70 heures) 4 500 HT (hors promotion

Plus en détail

Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications.

Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications. Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications. VUE D ENSEMBLE Considérer comme une alternative /remplacement au modèle Enterprise

Plus en détail

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

Java EE Approfondi - Cours 2. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» Java EE Approfondi - Cours 2 Cours de 2 e année ingénieur Spécialisation «Génie Informatique» Présentation Lier l'orienté objet et la base de données relationnelle peut être lourd et consommateur en temps.

Plus en détail

Une (petite) introduction à Spring

Une (petite) introduction à Spring Une (petite) introduction à Spring 1 Introduction Le framework Spring 1 est une boite à outils très riche permettant de structurer, d améliorer et de simplifier l écriture d application JEE. Spring est

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

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

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX

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

Spring par la pratique

Spring par la pratique Spring par la pratique 2 e édition Spring 2.5 et 3.0 Arnaud Cogoluègnes Thierry Templier Julien Dubois Jean-Philippe Retaillé avec la contribution de Séverine Templier Roblou et de Olivier Salvatori Groupe

Plus en détail

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand 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

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

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 3 Base de données, JDBC et Mapping Objet-relationnel L'objectif de ce TP est de vous faire pratiquer l'api JDBC qui permet d'accéder à une base de données

Plus en détail

TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète

TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète Nous allons écrire une application J2EE qui permet dans un navigateur web de gérer des contacts. Pour cela, nous allons suivre

Plus en détail

JAVA. (Java-sans objet) (Dernière édition) Programme de formation. et (Java - Hibernate &Spring) France, Belgique, Suisse, Roumanie - Canada

JAVA. (Java-sans objet) (Dernière édition) Programme de formation. et (Java - Hibernate &Spring) France, Belgique, Suisse, Roumanie - Canada JAVA (Java-sans objet) et (Java - Hibernate &Spring) (Dernière édition) Programme de formation Microsoft Partner France, Belgique, Suisse, Roumanie - Canada WWW.SASGROUPE.COM Formez vos salariés pour optimiser

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

Short-Circuit Introduction a Spring. Cours Spring. Spring utilise certaines technologies comme :

Short-Circuit Introduction a Spring. Cours Spring. Spring utilise certaines technologies comme : Cours Spring 1 Présentation Générale Historique Framework créé en 2002 par Rod Johnson, afin de proposer une réelle alternative technique aux EJB s, alors gouffre de performance en terme d applications

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

http://www.sigl.epita.net Struts Struts Romain Couturier Aurélia Fermé Frédéric Lung Tung Matthieu Nicolas 17/06/2002 17/06/2002 ACO slide 1

http://www.sigl.epita.net Struts Struts Romain Couturier Aurélia Fermé Frédéric Lung Tung Matthieu Nicolas 17/06/2002 17/06/2002 ACO slide 1 http://www.sigl.epita.net Romain Couturier Aurélia Fermé Frédéric Lung Tung Matthieu Nicolas slide 1 Plan Rappels Servlet JSP JavaBean MVC (1 & 2) Présentation Vue Contrôleur Modèle Exemple d application

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

Servlets, beans, base de données

Servlets, beans, base de données Institut Galilée E-services Année 2014-2015 Master 2 T.P. 2 Servlets, beans, base de données L objectif de ce TP est de mettre en place un site web pour l administration et la commande de pizzas : une

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

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

J2EE. A.-E. Ben Salem. 09 Octobre 2011. LRDE and LIP6 1 / 15

J2EE. A.-E. Ben Salem. 09 Octobre 2011. LRDE and LIP6 1 / 15 J2EE A.-E. Ben Salem LRDE and LIP6 09 Octobre 2011 1 / 15 Plan 1 J2EE 2 Architecture Client/Serveur HTTP 3 Différence entre Web Statique et Web Dynamique 4 Web Dynamique avec un Serveur d applications

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

8. Java et les bases de données. Olivier Curé - UMLV [page 206 ]

8. Java et les bases de données. Olivier Curé - UMLV [page 206 ] 8. Java et les bases de données Olivier Curé - UMLV [page 206 ] Java et les BD Plusieurs manières d'écrire du code Java accédant à une BD: Statement Level Interface (SLI) Solutions : SQLJ (SQL92) Call

Plus en détail

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe

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

PROJET «ESUP-EMPRUNT-ID» Centre de Ressources Informatiques. Administration de l'application «ESUP-EMPRUNT-ID»

PROJET «ESUP-EMPRUNT-ID» Centre de Ressources Informatiques. Administration de l'application «ESUP-EMPRUNT-ID» PROJET «ESUP-EMPRUNT-ID» Centre de Ressources Informatiques Administration de l'application «ESUP-EMPRUNT-ID» Date de création : 9 septembre 2008 Dernière modification : 10 septembre 2008 Rédacteur : Fabien

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

Java Avancé - Cours 1

Java Avancé - Cours 1 Java avancé - cours 1 1/8 Java Avancé - Cours 1 Plan 1 Recevoir et émettre des données simples 1 1.1 Comment récupérer une page Web.......................................... 1 1.2 Socket : l objet qui

Plus en détail

MVC avec. Lens 21-o2-o6 Duquesnoy G.

MVC avec. Lens 21-o2-o6 Duquesnoy G. MVC avec Lens 21-o2-o6 Duquesnoy G. Références www.springframework.org C. Walls & R. Breindenbach : «Spring in action», Manning 2oo5 Plan MVC Exemple Type WEB-INF JSP Composants MVC Définition Modèle structurant

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

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

Java Spring Le socle technique des applications JEE

Java Spring Le socle technique des applications JEE Avant-propos 1. Préambule 15 2. Introduction 17 3. Organisation du livre 19 4. Public visé 19 5. Pourquoi Spring 20 6. Prérequis pour aborder sereinement la lecture de ce livre 20 7. Objectifs du livre

Plus en détail

Internet et applications dans l entreprise (3) Serveur Tomcat et pages JSP

Internet et applications dans l entreprise (3) Serveur Tomcat et pages JSP Licence professionnelle «Management des organisations» Option «Systèmes d information et Réseaux» Internet et applications dans l entreprise (3) Serveur Tomcat et pages JSP O. Auzende 2010-2011 Servlets

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1ère partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Introduction 2 les étapes de la connexion

Plus en détail

Java EE. Grégory Cuellar, Julien Goullon. 1 er octobre 2007. gregory.cuellar@bull.net. julien.goullon@9business.fr

Java EE. Grégory Cuellar, Julien Goullon. 1 er octobre 2007. gregory.cuellar@bull.net. julien.goullon@9business.fr Grégory Cuellar Julien Goullon gregory.cuellar@bull.net julien.goullon@9business.fr 1 er octobre 2007 1 Généralité 2 / 54 Pourquoi? Historique Les alternatives Les composants 2 Architecture n-tiers 3 JEE

Plus en détail

Tp2 Emacs Développement Web

Tp2 Emacs Développement Web Tp2 Emacs Développement Web Les indications ci-dessous donnent les grandes lignes du développement. 1/ Evenement Ajax Jquery: Le code javascript jquery suivant permet d afficher un message dans un span

Plus en détail

INTRODUCTION À JAVA EE. Cours Master 2 - Java EE

INTRODUCTION À JAVA EE. Cours Master 2 - Java EE INTRODUCTION À JAVA EE 1 LA NÉBULEUSE JAVA Java Micro Edition (JME) développement d applications embarquées Java Standard Edition (JSE) développement d applications classiques Java Enterprise Edition (JEE)

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

Apache Tomcat 8 Guide d'administration du serveur Java EE 7 sous Windows et Linux

Apache Tomcat 8 Guide d'administration du serveur Java EE 7 sous Windows et Linux Avant-propos 1. À qui s adresse ce livre? 11 2. Les pré-requis 12 Préambule 1. Rappel sur les architectures Internet/Intranet/Extranet 13 1.1 Le protocole HTTP 14 1.1.1 Les méthodes HTTP 16 1.1.2 Les codes

Plus en détail

Compétence (niveau moyen) Java J2EE - 2014

Compétence (niveau moyen) Java J2EE - 2014 Compétence (niveau moyen) Java J2EE - 2014 «Mars-Mai 2014. Réf : JAVA J2EE Version 1 Page 1 sur 23 Sommaire CONTEXTE DE LA REMISE A NIVEAU JAVA J2EE EN AUTOFORMATION... 3 1. UTILISATION DE ECLIPSE KEPLER

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

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

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

Architecture des applications

Architecture des applications Architecture des applications Table des matières 1 Introduction 1 2 Les classes valeurs 2 2.1 Les Javaeans............................................. 2 2.2 Les différents types de Javaeans...................................

Plus en détail

Applications Web et servlets Java

Applications Web et servlets Java Département de génie logiciel et des TI LOG660 - Base de données haute performance Applications Web et servlets Java Application Web Une application Web répartie sur trois couches (three-tier Web application)

Plus en détail

Livre Blanc FRAMEWORK OPEN SOURCE

Livre Blanc FRAMEWORK OPEN SOURCE Livre Blanc FRAMEWORK OPEN SOURCE Mise en oeuvre de Tapestry, Spring et Hibernate Version 1 - Avril 2006 TABLE DES MATIÈRES 1 AVANT PROPOS...3 2 PRÉSENTATION...4 2.1 Objectifs du framework...4 2.2 Architecture

Plus en détail

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI Institut Galilée Année 2014-2015 TP WEBSERVICES Programmation et Logiciels sûrs Master 2 PLS Résumé Ce TP s appuie sur le cours de C. Fouqueré traitant des Environnements et Langage Évolués, ainsi que

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

APPLICATIONS JAVA. JDBC (Java DataBase Connectivity) JSP SQL (rappel) Architecture Java-JDBC-SGBD. JDBC et JSP IvMad - 2012 2

APPLICATIONS JAVA. JDBC (Java DataBase Connectivity) JSP SQL (rappel) Architecture Java-JDBC-SGBD. JDBC et JSP IvMad - 2012 2 APPLICATIONS JAVA JDBC (Java DataBase Connectivity) JSP SQL (rappel) JDBC et JSP IvMad - 2012 2 Architecture Java-JDBC-SGBD JDBC et JSP IvMad - 2012 3 Architecture Java-JDBC-SGBD Les composants de la connexion

Plus en détail

Java EE Cours 1. Présentation Générale. Cours de 2 e année ingénieur

Java EE Cours 1. Présentation Générale. Cours de 2 e année ingénieur Java EE Cours 1 Présentation Générale Cours de 2 e année ingénieur 1 Présentation du cours Objectifs Développement d applications Web robustes «Ne pas réinventer la roue» utilisation d un framework 1 Apprentissage

Plus en détail

Licence Professionnelle Développeur Web Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)

Licence Professionnelle Développeur Web Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr) Grenoble 1 IMA Informatique & Mathématiques Appliquées UNIVERSITE JOSEPH FOURIER Sciences, Technologie, Médecine Licence Professionnelle Développeur Web Programmation Orientée Objets Gestion de comptes

Plus en détail

Inf340 Systèmes d information. Deuxième site : approche MVC

Inf340 Systèmes d information. Deuxième site : approche MVC Inf340 Systèmes d information Deuxième site : approche MVC Objectifs Objectif : Reprendre le site précédent en utilisant le patron de conception Modèle Vue Contrôleur. Comprendre l apport d un framework

Plus en détail

Architecture des Applications Réticulaires

Architecture des Applications Réticulaires Architecture des Applications Réticulaires Revision : 61 Christian Queinnec Université Paris 6 Deuxième vague 2008-2009 UPMC NI584-2008nov c C.Queinnec 2/25 Plan et tests 1 Maven Spring 2 Tests 3 Sécurité

Plus en détail

Plan. Outils et tests. Architecture des Applications Réticulaires. Outils. Maven. Revision : 53. Maven Spring. Christian Queinnec

Plan. Outils et tests. Architecture des Applications Réticulaires. Outils. Maven. Revision : 53. Maven Spring. Christian Queinnec UPMC NI584-2008fev c C.Queinnec 3/25 UPMC NI584-2008fev c C.Queinnec 4/25 Plan Architecture des Applications Réticulaires Revision : 53 Christian Queinnec Université Paris 6 1 Maven Spring 2 Tests et tests

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

Pasquier Barthelémy Ticula Omont

Pasquier Barthelémy Ticula Omont Pet Store Un magasin de vente en ligne générique basé sur: Le Kit de Développement Logiciel de Java 2, Edition Entreprise (J2EE) Pasquier Barthelémy Ticula Omont lundi 9 mars 2009 1/16 1) Objectif de l

Plus en détail

Création d une Application Web / JSF

Création d une Application Web / JSF Création d une Application Web / JSF Rédacteurs : Alexandre Baillif, Philippe Lacomme et Raksmey Phan Date : juillet 2010 Avertissement : ce document est une reprise d une partie d un document écrit par

Plus en détail

Micro guide Struts. par Jérémy Buget

Micro guide Struts. par Jérémy Buget Micro guide Struts par Jérémy Buget Table des matières 1) Introduction...2 2)Définitions...3 2) Déroulement...4 3) Schéma récapitulatif...5 4) Code des différents composants sus-cités... 6 5)Liens utiles...

Plus en détail

Documentation technique

Documentation technique MEEVY Documentation technique Juillet 200 MEEVY a pour but de fournir aux artistes des outils pour promouvoir leur musique sur internet et proposer à l auditeur une plateforme de musique en ligne gratuite

Plus en détail

Interface Java Oracle : JDBC

Interface Java Oracle : JDBC Interface Java Oracle : JDBC Christine Bonnet Sommaire Démarche globale JDBC --- 6 Accès s en consultation --- 9 Accès s en modification --- 13 Ordres dynamiques --- 19 Procédures stockées --- 24 I-2 Christine

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Développement Web. Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. 24 janvier 2011

Développement Web. Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. 24 janvier 2011 1 / 56 Développement Web Le modèle MVC Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer 24 janvier 2011 2 / 56 Objectif Objectif du cours Se familiariser avec

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

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

625 Programmation JDBC INTRODUCTION ARCHITECTURES

625 Programmation JDBC INTRODUCTION ARCHITECTURES 625 Programmation JDBC INTRODUCTION API (Framework) permettant d'accéder virtuellement à toute source de données tabulaire ; respecte la philosophie de la plate-forme Java: Write once, run everywhere ;

Plus en détail

TP6 EJB : Création d'un EJB3 Entité

TP6 EJB : Création d'un EJB3 Entité TP6 EJB : Création d'un EJB3 Entité Objis : nous allons vous faire aimer JAVA - www.objis.com 1 Table des matières Formation EJB - TP 'Développement EJB3 entity avec Eclipse' Propriété du document...3

Plus en détail

Document d analyse. Architecture d une application Java Hibernate

Document d analyse. Architecture d une application Java Hibernate Document d analyse Architecture d une application Java Hibernate Date création du document 31/10/2007 Date de dernière mise à jour 22/09/2010 Version V1.1 Sommaire Présentation du document.... 3 Organisation

Plus en détail

Plan Rappels sur les patrons de conception Contexte Annuaire JNDI Conception d Applications Hétérogènes Distribuées

Plan Rappels sur les patrons de conception Contexte Annuaire JNDI Conception d Applications Hétérogènes Distribuées Conception d Applications Hétérogènes Distribuées Master 2 Traitement de l Information Lionel Médini Septembre-novembre 2015 du cours Outils de programmation avancés Retour sur les patrons de conception

Plus en détail

Atelier 5 A. Le Framework Hibernate

Atelier 5 A. Le Framework Hibernate Atelier 5 A Le Framework Hibernate Introduction Hibernate est un Framework Java de persistance qui permet de faire correspondre des tables de base de données relationnelles avec des objets java simples

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

TP N 4 Création d un projet Web Avec EJB JSF et Glassfish

TP N 4 Création d un projet Web Avec EJB JSF et Glassfish TP N 4 Création d un projet Web Avec EJB JSF et Glassfish I. Les objectifs :... 1 II. L architecture de l atelier... 1 III. Rappel... 1 IV. L environnement de développement... 2 V. Création d un projet

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

Développement OSGi dans Eclipse

Développement OSGi dans Eclipse B Développement OSGi dans Eclipse L objectif de cette annexe est de venir en complément des chapitres de la partie V afin de décrire la manière d utiliser l outil Eclipse afin de développer et de tester

Plus en détail

Interfaçage de programmation. c Olivier Caron

Interfaçage de programmation. c Olivier Caron Interfaçage de programmation 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. L aspect

Plus en détail

625 Programmation JDBC LES PRINCIPALES CLASSES ET LEUR EMPLOI INTRODUCTION ARCHITECTURES. Connection. Statement instruction

625 Programmation JDBC LES PRINCIPALES CLASSES ET LEUR EMPLOI INTRODUCTION ARCHITECTURES. Connection. Statement instruction 625 Programmation INTRODUCTION JDBC API (Framework) permettant d'accéder virtuellement à toute source de données tabulaire ; respecte la philosophie de la plate-forme Java: Write once, run everywhere ;

Plus en détail

Travaux Pratiques : Connexion et accès à la Base De Données

Travaux Pratiques : Connexion et accès à la Base De Données MODULE : Intégration des données Professeur : Mr Tallard Travaux Pratiques : Connexion et accès à la Base De Données Kamissi MOHAMED Sommaire 1. Présentation de l énoncé... 3 2. Connexion à la base de

Plus en détail

Tutoriel d installation de Hibernate avec Eclipse

Tutoriel d installation de Hibernate avec Eclipse Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création

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

Pooling de connexions. Olivier Curé - UMLV [page 1 ]

Pooling de connexions. Olivier Curé - UMLV [page 1 ] Pooling de connexions Olivier Curé - UMLV [page 1 ] Introduction Une connexion à une base de données est une ressource rare et coûteuse qui ne peut être partagée par des threads. Il faut donc réfléchir

Plus en détail

Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception

Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception Plan 231 Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception JDBC - Rappels 232 JDBC: API qui permet de stocker,

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

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

Mapping Objet/Relationnel

Mapping Objet/Relationnel Mapping Objet/Relationnel I. Mougenot (isabelle.mougenot@univ-montp2.fr) Faculté des Sciences Université Montpellier 2 2014 Mougenot (UM2) FMIN362 Cours2 2014 1 / 14 Les limites du relationnel 1 Première

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

1. Avec un script php. 2. En utilisant phpmyadmin

1. Avec un script php. 2. En utilisant phpmyadmin Université Lumière - Lyon 2 Master d Informatique M1 - Année 2006-2007 Programmation Web - TDs n 8 9 : PHP - Mysql L. Tougne (http ://liris.cnrs.fr/laure.tougne), 20/11/06 L objectif de ce TD est d utiliser

Plus en détail

Accès aux bases de données

Accès aux bases de données 13 Accès aux bases de données Les bases de données fournissent un mécanisme de stockage persistant pour les données d application et dans bien des cas, elles sont essentielles au fonctionnement des applications.

Plus en détail

Site Web de paris sportifs

Site Web de paris sportifs Conception Nom HENAUD Benoît Numéro d auditeur 05-39166 Version V1.1 Date de mise à jour 15/05/2008 1/18 Table des matières 1. Objectif du document... 3 2. Architecture... 4 2.1. Contraintes techniques...

Plus en détail

Présentation Framework J2EE

Présentation Framework J2EE Présentation Framework J2EE JSF & Castor JSF Présentation du Framework Configuration Avantages Inconvénients JSF : Présentation du Framework Framework MVC : Basé sur des composants côté présentation 2

Plus en détail

Web services en Java (services Web) JMF (Tous droits réservés) 1

Web services en Java (services Web) JMF (Tous droits réservés) 1 Web services en Java (services Web) JMF (Tous droits réservés) 1 Web services (services web) : qu'est ce? Une architecture orientée objet et distribuée où les messages sont en syntaxe XML Ce n'est pas

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