Présentation JAXB et STRUTS²

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

La programmation orientée objet avec Java L3-MIAGE Plan
Le struts validator – framework de validation
JEE Approfondi Frameworks : Maverick (MVC) JiBX (Persistance XML)
CASTEL Dennis SARZEAUD Floriane TAKAHASHI Atsushi.
Transformation de documents XML
TOUQUET Arnaud ▪ GI05 BLONDEEL Igor ▪ GM05
Le mécanisme des exceptions
Introspection et Réflexion Manipulation dynamique de code Java.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Programmation Web Les JSP.
Formation Didapages C.A.H.M Avant de débuter un livre Avoir une bonne idée de ce que lon veut créer. Enregistrer mes fichiers selon ce qui.
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
1 Les technologies XML Cours 3 : Les Web Services – Implémentation – JAX-WS Février Version 1.0 -
Programmer en JAVA par Tama
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Design Pattern MVC En PHP5.
Environnement Premier projet.
Servlet JAVA.
1 Le mécanisme des exceptions Qu'est-ce qu'une exception? Comment définir et signaler des exceptions? Comment récupérer des exceptions?
JSP 2 Crash Course Michel Buffa UNSA
Présentation des frameworks pour Java EE
Introduction aux Web Services Partie 1. Technologies HTML-XML
API Présentation Comment ajouter des pages. Vous voici dans notre site « laboratoire » pour la démonstration RAJOUTER UNE PAGE.
Sécurité Informatique
PROJET HANDICAPS Certificat de Qualification Professionnelle
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Forum JEE: framework STRUTS 1 et iBATIS
Etude des Technologies du Web services
Présentation Installation Fonctionnement
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Présentation Struts1-JaxB
SERVLETS PRESENTATION
Tapestry - Eclipse Link
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Principes de programmation (suite)
28 novembre 2012 Grégory Petit
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Création d'un projet Web avec Netbeans
Manipulation de formulaires en Javascript
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
JSP (Java Server Pages)
COURS DE PROGRAMMATION ORIENTEE OBJET :
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
BOUSQUET Alexis - GUILLEMIN Vincent - PETIT Cédric
Date : Juillet 2014 Formation : TAI Formateur : Tayeb BENDJELTI
© 1 Taglibs Applications Struts Taglibs. © 2 Applications Struts Les Tags Libraries Struts Bean : Accès aux JavaBean, aux ressources Html : Gestion des.
Découverte des Framework : SPRING & JAXB
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Tutorat en bio-informatique
12/04/ Les exceptions Cours 11 Cours 11.
S'initier au HTML et aux feuilles de style CSS Cours 5.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Struts.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Héritage Conception par Objet et programmation Java
Les Java Server Pages Dans ce chapitre, nous allons :
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Transcription de la présentation:

Présentation JAXB et STRUTS² Combe Pierre Coin Cyrille Jehanno Mathieu

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

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

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

Data Binding (association de données) 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

Présentation (2) 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

Principe Cyrille Coin, Pierre Combe, Mathieu Jehanno

Principe (2) Cyrille Coin, Pierre Combe, Mathieu Jehanno

Génération des classes Java (1) Réalisée à l’aide d’un schéma XSD Utilisation du Compilateur JAXB XJC xjc [-options …] <schema> Liste des options sur le site de SUN : https://java.sun.com/webservices/docs/2.0/tutori al/doc/JAXBUsing2.html#wp150369 Cyrille Coin, Pierre Combe, Mathieu Jehanno

Génération de classes Java – Exemple (1) contact.xml contact.xsd <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Contacts> <Contact mail="pico07@hotmail.fr" prenom="Pierre" nom="Combe"/> <Contact mail= " mj@eisti.fr" numTel= " 068984356" prenom="Mathieu" nom="Jehanno"/> </Contacts> <xsd:element name="Contacts" type="ListeContacts"/> <xsd:complexType name="ListeContacts"> <xsd:sequence> <xsd:element name="Contact" type="ContactType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ContactType"> <xsd:attribute name="nom" type="xsd:string"/> <xsd:attribute name="prenom" type="xsd:string"/> <xsd:attribute name="numTel" type="xsd:int"/> <xsd:attribute name="mail" type="xsd:string"/> Cyrille Coin, Pierre Combe, Mathieu Jehanno

Génération de classes Java - Exemple (2) Pour cette étude de cas, le compilateur XJC génère 3 classes Java : XML Schéma JAXB Binding (package schema.repertoire) <xsd:complexType name="ListeContacts"> <xsd:sequence> <xsd:element name="Contact" type="ContactType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> ListeContacts.java protected List<ContactType> contact; public List<ContactType> getContact() <xsd:complexType name="ContactType"> <xsd:attribute name="nom" type="xsd:string"/> <xsd:attribute name="prenom" type="xsd:string"/> <xsd:attribute name="numTel" type="xsd:int"/> <xsd:attribute name="mail" type="xsd:string"/> ContactType.java Contient les 4 attributs + getters et setters - ObjectFactory.java Cyrille Coin, Pierre Combe, Mathieu Jehanno

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

Le Plugin XJC Eclipse (1) Facilite l’utilisation du compilateur XJC Installation Site web : https://jaxb- workshop.dev.java.net/plugins/eclipse/xjc- plugin.html Copier le répertoire dans le répertoire plugins d’Eclipse Redémarrer Eclipse Cyrille Coin, Pierre Combe, Mathieu Jehanno

Plugin XJC Eclipse (2) Cyrille Coin, Pierre Combe, Mathieu Jehanno

Le rassemblement des données 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

Le rassemblement des données (2) 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() L’objet 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

Le rassemblement des données (3) 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<ListeContacts> contacts = (JAXBElement<ListeContacts>) 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

La redistribution des données 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

La redistribution des données (2) 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

La redistribution des données (3) public void save(String filename) { try { PrintStream out = new PrintStream(filename); JAXBElement<ListeContacts> 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

JAXB Annotations package javax.xml.bind.annotation @XmlAttribut @XmlElement L'annotation @XmlRootElement 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

JAXB Annotations (2) Il est possible de configurer l'ordre des éléments @XmlRootElement   @XmlType(propOrder = {"nom", "prenom", "taille",  "dateNaiss", "adresses"})   public class Personne {     private String nom;     private String prenom; ... Cyrille Coin, Pierre Combe, Mathieu Jehanno

STRUTS² Cyrille Coin, Pierre Combe, Mathieu Jehanno

Présentation STRUTS² Cyrille Coin, Pierre Combe, Mathieu Jehanno

Comment utiliser STRUTS² Télécharger Struts2 à l’adresse suivante et dézipper le: http://struts.apache.org/download.cgi Un fichier nommé struts2-blank-2.x.x.war est présent dans le dossier dézippé. Télécharger Tomcat à l’adresse suivante et installer le: http://tomcat.apache.org/download-55.cgi Démarrer Eclipse, puis File/import/WAR file Cyrille Coin, Pierre Combe, Mathieu Jehanno

Comment utiliser STRUTS² 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

Fonctionnement de Struts² Exemple avec un formulaire Formulaire Struts² En Entête de la jsp: <%@ taglib prefix="s" uri="/struts-tags" %> Formulaire de Login Mémoriser le nom de l’action ainsi que <s:actionerror /> Cyrille Coin, Pierre Combe, Mathieu Jehanno

Fonctionnement de Struts² Un fichier struts.xml a été crée lors de l’import. Afin d’intercepter l’action 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

Fonctionnement de Struts² 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

Fonctionnement de Struts² Lors de l’appel d’un 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 à l’aide des méthodes getUsername() et getPassword(), on contrôlera la bonne saisie des données. Cyrille Coin, Pierre Combe, Mathieu Jehanno

Fonctionnement de Struts² 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é d’un <s:actionerror />, c’est à cet endroit qu’apparaitra le message d’erreur dans la jsp. Cyrille Coin, Pierre Combe, Mathieu Jehanno

Gestion des erreurs de saisie – méthode 1 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

Gestion des erreurs de saisie – méthode 2 Via un validator dans la classe Importer dans la classe Login: import com.opensymphony.xwork2.validator.annotations.Requir edStringValidator; Puis rajouter @RequiredStringvalidator juste au dessus de getter dont la saisie est obligatoire puis le message à afficher si l’utilisateur ne saisit pas le champ. Le message apparaitra dans la jsp à l’endroit de la balise: <s:actionmessage/> Cyrille Coin, Pierre Combe, Mathieu Jehanno

Gestion des erreurs de saisie – méthode 3 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

Présentation de l’application Cyrille Coin, Pierre Combe, Mathieu Jehanno