Apache Wicket : Application Web simplement avec Java

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

[number 1-100].
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
Open Days 2006 Le Web 2.0 demain: produits, technologies, outils.
1 V-Ingénierie… La compétence au service de lexigence… vous présente.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
1. 2 Informations nécessaires à la création dun intervenant 1.Sa désignation –Son identité, ses coordonnées, son statut 2.Sa situation administrative.
JXDVDTEK – Une DVDthèque en Java et XML
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
Design Pattern MVC En PHP5.
Autorisations Utilisation eCATT
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
Présentation des frameworks pour Java EE
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
Service aux personnes assurées
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Développement d’applications web
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
XML-Family Web Services Description Language W.S.D.L.
JAVASERVER FACES Un framework Java pour le développement Web.
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Configuration de Windows Server 2008 Active Directory
Académie de Créteil - B.C Quest-ce quune Inscription 1)1 action + 1 stagiaire + 1 client 2)Parcours individuel (avec son Prix de Vente) 3)Un financement.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
VOC 1 CE2 Je sais utiliser des mots de la vie quotidienne.
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Hibernate Search Réunion dunité – 23/10/2008 Erik Kimmel.
Développement d’application web
@SSR – Installation des applications eduscol.education.fr/securite - février 2007 © Ministère de l'Éducation nationale, de l'Enseignement supérieur et.
2 TP avec l ’aide d ’un modeleur 3D :
Projet Génie Logiciel & UML, Bases de Données & Interfaces
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
802.1x Audric PODMILSAK 13 janvier 2009.
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Web sémantique : Web de demain
Charte graphique Réunion de lancement Novembre 2008 Novembre 2008
Projet de Master première année 2007 / 2008
Adaptée du cours de Richard Grin
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
Module I-C3 : Applications Web IUT R&T 2e année
CALENDRIER-PLAYBOY 2020.
Outil de gestion des cartes grises
Slide 1 of 39 Waterside Village Fête ses 20 ans.
1 New Version Acquisition d’images Traitement d’images Interprétation clinique Chaîne de traitement Dev. logiciel creaTools 5 GDCMcreaImageIOcreaMaracasVisu.
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
Les Chiffres Prêts?
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
FRANÇOIS-XAVIER PARÉ Bibliothécaire BUREAU DES SYSTÈMES 11 novembre 2009 L A BARRE D’OUTILS L IB X : L A RECHERCHE À UN CLIC Merci à Lucie Geoffroy et.
22 Visual Studio Tools et Office 2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Dev Consultant Microsoft France
AngularJS.
To practice: Quantities Un, une, des, de Du, de la, de l’, de Le, la, l’, les.
GESTION DE COMPOSANTS ELECTRONIQUES
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Apports des clients riches dans le monde du WEB 2.0
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Transcription de la présentation:

Apache Wicket : Application Web simplement avec Java Nicolas Giard Présentation d’Apache Wicket – 14/04/2008

Agenda Qu’est ce que Wicket ? Concepts Fondamentaux Développer un Composant Personnalisé Q&R Présentation d’Apache Wicket – 14/04/2008

Wicket en bref Open Source (Apache Sofware Foundation) Orienté Composant Pure Java + Pure xHTML Simple Communauté enthousiaste Présentation d’Apache Wicket – 14/04/2008

Qu’est ce que Wicket La technologie : Orienté Composant, manipulation ‘Programmatique’ des balises La mission : Apporter le développement objet à la couche présentation d’une application Web La récompense : S’amuser dans son travail et être de nouveau bons amis avec son manager Présentation d’Apache Wicket – 14/04/2008

Les réponses de Wicket Faire simplement des choses simples. Utiliser un modèle de Composant Orienté Objet où les composants sont réellement autonomes. Réappliquer le pattern Modele-Vue-Controleur sur les composants plutôt que sur les requètes, avec les modèles comme point d’entrée. Avoir une séparation de contenu propre entre HTML et Java. Proposer une gestion d’état transparente et complètement automatisée. Réduire au minimum les besoins de configuration. Plus d’XML! Rendre la création et l’utilisation de composants personnalisés plus simple que n’importe quel autre framework. Présentation d’Apache Wicket – 14/04/2008

Composant vs ‘Traditionnel’ Struts, WebWork, Spring MVC, etc. Eprouvé sur le web Beaucoup de développeurs Web disponibles Composants JSF, Wicket, Tapestry, etc. Modèle traditionnel pour le développement d'UI sur les clients lourds Beaucoup de développeurs disponibles Présentation d’Apache Wicket – 14/04/2008

Caractéristiques Composition des Pages Panels, Borders et héritage de balise Support excellent de la localisation et des styles Chargement de template et de resource (_fr.html, .xml) Model localisé (e.g. pour les labels) Chargement sophistiqué des ressources (par composition & héritage) Détection automatique des possibilités du client Mécanisme de conversion Intégration Spring Guice Hibernate JasperReports OSGi Composants fantaisistes ‘triable’, ‘filtrable’, ‘paginable’, tableau orienté données date picker, editeur de texte, Google Maps Panneaux à Onglets, navigation, arbre, wizard Présentation d’Apache Wicket – 14/04/2008

Caractéristiques Gestion de l’état Support du clustering Sessions à type sûr Support du clustering Support du bouton ‘précédent’ Double stratégies de ‘submit’ render redirect / redirect to buffered response / none Support des Test Unitaires Tests basés sur JUnit Rapports d’erreur et gestion des logs étendus Support natif d’Ajax Ajax sans écrire de JavaScript, Dojo, Scriptaculous, ... Contribution à l’en-tête HTML Javascript & CSS ‘Mounting’ d’URL URL intelligible Sécurité au niveau du Composant Présentation d’Apache Wicket – 14/04/2008

Agenda Qu’est ce que Wicket ? Concepts Fondamentaux Développer un Composant Personnalisé Q&R Présentation d’Apache Wicket – 14/04/2008

Concepts de Wicket Application Session RequestCycle Composants Behaviors Models Présentation d’Apache Wicket – 14/04/2008

Application Point d’entrée principal de votre application web Configuration Afficher les tags spécifiques Wicket? Vérifier les changements dans le html tout les …? Définir la page d’accueil Factories pour Session RequestCycle Security … Configurée dans le web.xml : <filter> <filter-name>wicket</servlet-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>example.MyApplication</param-value> </init-param> <load-on-startup>1</load-on-startup> </filter> Présentation d’Apache Wicket – 14/04/2008

Concepts de Wicket Application Session RequestCycle Composants Behaviors Models Présentation d’Apache Wicket – 14/04/2008

Session Abstraction d’une session utilisateur Typiquement stockée dans HttpSession Conserve les données spécifiques à la Session Locale, infos du Client (browser, vendor, version) Vos propres données? Utilisateur authentifié Contenu d’un panier pour un site de commerce Historique limité des pages pour le support du bouton Précédent Présentation d’Apache Wicket – 14/04/2008

Session public class MySession extends WebSession { private ShoppingCart cart; public ShoppingCart getCart() { … } public void setCart(ShoppingCart cart) { … } } … mysession.setCart(new ShoppingCart()); ShoppingCart cart = mysession.getCart(); cart.add(quantity, selectedProduct); Présentation d’Apache Wicket – 14/04/2008

Concepts de Wicket Application Session RequestCycle Composants Behaviors Models Présentation d’Apache Wicket – 14/04/2008

RequestCycle Etapes du “Request Cycle”: Création de l’objet request cycle Décodage de la requète Identification des ‘cibles’ de la requète (page, component, …) Exécution des événements (onClick, onSubmit, …) Réponse (page, component, image, pdf, …) Nettoyage Présentation d’Apache Wicket – 14/04/2008

RequestCycle Deux types de requètes: Stateful Stateless Liée à une session d'utilisateur spécifique Pas ‘bookmarkable’ Stateless Pas nécessairement liée à une session d’utilisateur spécifique ‘Bookmarkable’ Présentation d’Apache Wicket – 14/04/2008

Concepts de Wicket Application Session RequestCycle Composants Behaviors Models Présentation d’Apache Wicket – 14/04/2008

Composants Encapsule la manipulation des balises Peut recevoir des événements onClick, onSubmit Sait lui même comment et où il doit s’afficher Créer un Composant personnalisé est aussi simple que d’écrire ‘extends’ L’héritage de wicket.Component fait le reste Disponible dans le classpath de l’application Présentation d’Apache Wicket – 14/04/2008

Composants Classe mère Ultime : org.apache.wicket.Component Label MultiLineLabel TextField PasswordTextField Image Link Tree BookmarkablePageLink JasperReports ListView Loop PagingNavigator ImageMap Button Ajax… Sorting, Paging, Repeaters Wizard DatePicker Présentation d’Apache Wicket – 14/04/2008

Composants et balises Un composant est identifié dans le balisage par wicket:id Html: <h1 wicket:id=“msg”>Gets replaced</h1> Java: new Label(“msg”, “Hello, World!”); Final (les tags wicket peuvent être masqués du source html): <h1>Hello, World!</h1> Présentation d’Apache Wicket – 14/04/2008

Composants et balises Un composant peut avoir son propre fichier html: Page Panel Border Mettre les fichiers Java, HTML et ressources dans le même package Présentation d’Apache Wicket – 14/04/2008

Example : Hello, World! Présentation d’Apache Wicket – 14/04/2008

Concepts de Wicket Application Session RequestCycle Composants Behaviors Models Présentation d’Apache Wicket – 14/04/2008

Behaviors Les Behaviors sont des ‘plug-ins’ pour les Composants Ils peuvent modifier les balises HTML des Composants item.add(new AbstractBehavior() { public void onComponentTag(Component component, ComponentTag tag) { String css = (((Item)component).getIndex() % 2 == 0) ? "even" : "odd"; tag.put("class", css); } }); Output: <tr class=“odd”>…</tr> <tr class=“even”>…</tr> Présentation d’Apache Wicket – 14/04/2008

Behaviors Modifier les attributs des balises du Composant Ajouter des évenements javascript Ajouter un ‘comportement Ajax’ component.add(new AjaxSelfUpdatingBehavior(Duration.seconds(1))); Présentation d’Apache Wicket – 14/04/2008

Concepts de Wicket Application Session RequestCycle Composants Behaviors Models Présentation d’Apache Wicket – 14/04/2008

<<Personne>> Models Les Models associent vos POJO’s aux composants Wicket Label(“nom”, model) <<Personne>> +nom : String +ville : String PropertyModel Présentation d’Apache Wicket – 14/04/2008

Models Le binding en Java n’est pas aisé Ne fera pas d’update: new TextField(“txt”, personne.getNom()) Provoquera une NullPointerException: new Label(“rue”, personne.getAdresse().getRue()) Solution: les expressions type OGNL/EL PropertyModel: new PropertyModel(personne, “nom”) new PropertyModel(personne, “adresse.rue”) Prévenir le NullPointer à l’update: Personne p = new Personne(); new TextField(“rue”, new PropertyModel(p, “adresse.rue”)); Présentation d’Apache Wicket – 14/04/2008

Agenda Qu’est ce que Wicket ? Concepts Fondamentaux Développer un Composant Personnalisé Q&R Présentation d’Apache Wicket – 14/04/2008

Pourquoi un composant personnalisé? Eelco Hillenius: « Imagine being told that you can use Java as your programming language, but at the same time being told not to create your own classes. [...] I fail to understand why that has to be different for UI development, and Wicket proves it doesn't have to be so. » Présentation d’Apache Wicket – 14/04/2008

Combien de temps pour un composant ? 464 pages … 20 minutes et encore… Présentation d’Apache Wicket – 14/04/2008

Example: Password strength weak medium strong Présentation d’Apache Wicket – 14/04/2008

Example: Password strength Les Panels permettent le regroupement Ils ont leur propre ficher html Peuvent être échangé dans les pages par d’autres composants Peuvent contribuer au header de la page html Peuvent contenir autant de composants que souhaité, même d’autres panels Présentation d’Apache Wicket – 14/04/2008

Example: Password strength Présentation d’Apache Wicket – 14/04/2008

Example: Password strength Présentation d’Apache Wicket – 14/04/2008

Example: Password strength Présentation d’Apache Wicket – 14/04/2008

Les Composants sont reutilisables Mettre le tout dans un JAR Packager toutes les ressources nécessaires: HTML, JavaScript, Images, CSS class file Mettre le JAR dans le classpath Prêt à être (re)utilisé Présentation d’Apache Wicket – 14/04/2008

Agenda Qu’est ce que Wicket ? Concepts Fondamentaux Développer un Composant Personnalisé Q&R Présentation d’Apache Wicket – 14/04/2008