La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Combe Pierre Coin Cyrille Jehanno Mathieu. Présentation de JAXB Présentation de STRUTS² Présentation de létude de cas Conclusion Cyrille Coin, Pierre.

Présentations similaires


Présentation au sujet: "Combe Pierre Coin Cyrille Jehanno Mathieu. Présentation de JAXB Présentation de STRUTS² Présentation de létude de cas Conclusion Cyrille Coin, Pierre."— Transcription de la présentation:

1 Combe Pierre Coin Cyrille Jehanno Mathieu

2 Présentation de JAXB Présentation de STRUTS² Présentation de létude de cas Conclusion Cyrille Coin, Pierre Combe, Mathieu Jehanno

3 Java Architecture for XML Binding Cyrille Coin, Pierre Combe, Mathieu Jehanno

4 API Java de Sun Gestion de la persistance en XML Framework utilisant le Data Binding Cyrille Coin, Pierre Combe, Mathieu Jehanno

5 Le Data Binding est une technologie permettant d'automatiser la transformation d'un modèle de données en un modèle de données objets dans un langage de programmation JAXB permet de convertir les fichiers XML en instances de classes Java Cyrille Coin, Pierre Combe, Mathieu Jehanno

6 L'utilisation de JAXB implique trois étapes : La génération de classes à partir du schéma XML Le rassemblement des données La redistribution des données Cyrille Coin, Pierre Combe, Mathieu Jehanno

7

8

9 Réalisée à laide dun schéma XSD Utilisation du Compilateur JAXB XJC xjc [-options …] Liste des options sur le site de SUN : https://java.sun.com/webservices/docs/2.0/tutori al/doc/JAXBUsing2.html#wp https://java.sun.com/webservices/docs/2.0/tutori al/doc/JAXBUsing2.html#wp Cyrille Coin, Pierre Combe, Mathieu Jehanno

10 contact.xml contact.xsd Cyrille Coin, Pierre Combe, Mathieu Jehanno

11 XML SchémaJAXB Binding (package schema.repertoire) ListeContacts.java protected List contact; public List getContact() ContactType.java Contient les 4 attributs + getters et setters - ObjectFactory.java Pour cette étude de cas, le compilateur XJC génère 3 classes Java : Cyrille Coin, Pierre Combe, Mathieu Jehanno

12 Cet objet contient lensemble des méthodes de construction des objets Java générés par XJC dans le package ObjectFactory permet dinstancier les objets Java représentant « le contenu XML » public ContactType createContactType() public ListeContacts createListeContacts() public JAXBElement createContacts(ListeContacts value) JAXBElement est un objet du type complexe qui encapsule la racine du document XML Cyrille Coin, Pierre Combe, Mathieu Jehanno

13 Facilite lutilisation du compilateur XJC Installation Site web : https://jaxb- workshop.dev.java.net/plugins/eclipse/xjc- plugin.htmlhttps://jaxb- workshop.dev.java.net/plugins/eclipse/xjc- plugin.html Copier le répertoire dans le répertoire plugins dEclipse Redémarrer Eclipse Cyrille Coin, Pierre Combe, Mathieu Jehanno

14

15 Le rassemblement des données (unmarshall en anglais) permet d'instancier les classes précédemment créées avec les données contenues dans les fichiers XML XML => JAVA Pour cela, il faut utiliser un rassembleur (unmarshaller). Ce dernier va vérifier que les données qu'il reçoit sont bien celles attendues (sinon exceptions levées) Cyrille Coin, Pierre Combe, Mathieu Jehanno

16 Package javax.xml.bind.* La création des objets nécessite la création d'un objet de type JAXBContext en utilisant la méthode statique newInstance() Lobjet Unmarshaller va permettre de transformer un document XML en un ensemble d'objets. Une telle instance est obtenue en utilisant la méthode createUnmarshaller() de la classe JAXBContext La méthode unmarshal() de la classe Unmarshaller se charge de traiter un document XML et retourne un objet du type complexe qui encapsule la racine du document XML Cyrille Coin, Pierre Combe, Mathieu Jehanno

17 public void load(String filename) { try { // Création d'une instance des classes générées à partir du schéma JAXBContext jc = JAXBContext.newInstance(schema.repertoire); // Création d'un objet Unmarshaller Unmarshaller u = jc.createUnmarshaller(); // Demander la validation du document unmarshaller.setValidating(true); // Chargement de l'arbre à partir du xml "filename" JAXBElement contacts = (JAXBElement ) u.unmarshal(new FileInputStream(filename)); ListeContacts repertoire = contacts.getValue(); } catch (JAXBException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } Cyrille Coin, Pierre Combe, Mathieu Jehanno

18 Elle consiste à récupérer le contenu de chaque instance de classe et de les insérer dans les fichiers XML JAVA => XML Comme pour le rassemblement, pour la redistribution, nous disposons d'un distributeur (marshaller). Ce dernier est chargé de vérifier l'intégrité des données qu'il transporte. Si une erreur intervient, il pourra lever des exceptions Cyrille Coin, Pierre Combe, Mathieu Jehanno

19 Package javax.xml.bind.* La création du document nécessite la création d'un objet de type JAXBContext en utilisant la méthode statique newInstance() Il faut ensuite créer un objet de type Marshaller à partir du contexte et d'appeler sa méthode marshall pour générer le document. Cyrille Coin, Pierre Combe, Mathieu Jehanno

20 public void save(String filename) { try { PrintStream out = new PrintStream(filename); JAXBElement contacts_list = of.createContacts(repertoire); JAXBContext jc = JAXBContext.newInstance(schema.repertoire); Marshaller m = jc.createMarshaller(); // Pour une indentation plus "lisible" du fichier XML m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.marshal(contacts_list, out); } catch (JAXBException jbe) { System.err.println("Erreur lors de la redistribution des données"); jbe.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } Cyrille Coin, Pierre Combe, Mathieu Jehanno

21 peut être utilisée sur une classe pour préciser que cette classe sera le tag racine du document XML Cyrille Coin, Pierre Combe, Mathieu Jehanno

22 Il est possible de configurer l'ordre = {"nom", "prenom", "taille", "dateNaiss", "a dresses"}) public class Personne { private String nom; private String prenom;... Cyrille Coin, Pierre Combe, Mathieu Jehanno

23

24

25 Télécharger Struts2 à ladresse suivante et dézipper le: Un fichier nommé struts2-blank-2.x.x.war est présent dans le dossier dézippé. Télécharger Tomcat à ladresse suivante et installer le: Démarrer Eclipse, puis File/import/WAR file Cyrille Coin, Pierre Combe, Mathieu Jehanno

26 Voici ici un projet Struts2 nommé présentation. Vous pouvez démarrer HelloWorld.jsp et vous apprécierez Struts2!!! Cyrille Coin, Pierre Combe, Mathieu Jehanno

27 Formulaire Struts² En Entête de la jsp: Formulaire de Login Mémoriser le nom de laction ainsi que Cyrille Coin, Pierre Combe, Mathieu Jehanno

28 Un fichier struts.xml a été crée lors de limport. Afin dintercepter laction de demande de login, nous rajoutons une action dont le nom est doLogin, dont le contrôleur est dans le package net.roseindia.Login. Enfin, dans les balises « result », on traite les différents cas possibles. Cyrille Coin, Pierre Combe, Mathieu Jehanno

29 On crée un contrôleur Login.java dans le package net.roseindia, classe qui « extends » ActionSupport. On doit créer deux attributs, username et password, ainsi que les getters et setters. (Attention, les attributs doivent avoir le même nom que dans le formulaire de la jsp) Cyrille Coin, Pierre Combe, Mathieu Jehanno

30 Lors de lappel dun getter, Struts2 fait le lien entre le nom des textfield et les méthodes getXXX(). (le textfield nommé username sera récupéré par getUsername() La fonction execute() est appelée automatiquement. Dans cette fonction et à laide des méthodes getUsername() et getPassword(), on contrôlera la bonne saisie des données. Cyrille Coin, Pierre Combe, Mathieu Jehanno

31 Valeur de retour Si le couple login/mot de passe est correct, alors on retourne SUCCESS. Sinon, on crée un addActionError("Invalid user name or password! Please try again!"); et on retourne ERROR. Dans la jsp, nous avons parlé dun, cest à cet endroit quapparaitra le message derreur dans la jsp. Cyrille Coin, Pierre Combe, Mathieu Jehanno

32 Via un XML Créer un XML ayant comme nom : NomDeLaClasse-validation.xml Dans notre exemple, le XML sera Login-validation.xml Voici le contenu: Username et password sont requis Cyrille Coin, Pierre Combe, Mathieu Jehanno

33 Via un validator dans la classe Importer dans la classe Login: import com.opensymphony.xwork2.validator.annotations.Requir edStringValidator; Puis juste au dessus de getter dont la saisie est obligatoire puis le message à afficher si lutilisateur ne saisit pas le champ. Le message apparaitra dans la jsp à lendroit de la balise: Cyrille Coin, Pierre Combe, Mathieu Jehanno

34 Via le contrôleur, dans la fonction execute() if(getUsername().equals("") || getPassword().equals("")){ addActionError("Données manquantes "); return ERROR; } Cyrille Coin, Pierre Combe, Mathieu Jehanno

35


Télécharger ppt "Combe Pierre Coin Cyrille Jehanno Mathieu. Présentation de JAXB Présentation de STRUTS² Présentation de létude de cas Conclusion Cyrille Coin, Pierre."

Présentations similaires


Annonces Google