Apache Wicket : Application Web simplement avec Java - PowerPoint PPT Presentation

1 / 39
About This Presentation
Title:

Apache Wicket : Application Web simplement avec Java

Description:

Apache Wicket : Application Web simplement avec Java Nicolas Giard Agenda Qu est ce que Wicket ? Concepts Fondamentaux D velopper un Composant Personnalis Q&R ... – PowerPoint PPT presentation

Number of Views:197
Avg rating:3.0/5.0
Slides: 40
Provided by: Nicolas174
Category:

less

Transcript and Presenter's Notes

Title: Apache Wicket : Application Web simplement avec Java


1
Apache Wicket Application Web simplement avec
Java
  • Nicolas Giard

2
Agenda
  • Quest ce que Wicket ?
  • Concepts Fondamentaux
  • Développer un Composant Personnalisé
  • QR

3
Wicket en bref
  • Open Source (Apache Sofware Foundation)
  • Orienté Composant
  • Pure Java Pure xHTML
  • Simple
  • Communauté enthousiaste

4
Quest ce que Wicket
  • La technologie Orienté Composant, manipulation
    Programmatique des balises
  • La mission Apporter le développement objet à la
    couche présentation dune application Web
  • La récompense Samuser dans son travail et être
    de nouveau bons amis avec son manager

5
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 dentré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 dXML!
  • Rendre la création et lutilisation de composants
    personnalisés plus simple que nimporte quel
    autre framework.

6
Composant vs Traditionnel
  • 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

7
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

8
Caractéristiques
  • Gestion de létat
  • 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 derreur et gestion des logs étendus
  • Support natif dAjax
  • Ajax sans écrire de JavaScript, Dojo,
    Scriptaculous, ...
  • Contribution à len-tête HTML
  • Javascript CSS
  • Mounting dURL
  • URL intelligible
  • Sécurité au niveau du Composant

9
Agenda
  • Quest ce que Wicket ?
  • Concepts Fondamentaux
  • Développer un Composant Personnalisé
  • QR

10
Concepts de Wicket
  • Application
  • Session
  • RequestCycle
  • Composants
  • Behaviors
  • Models

11
Application
  • Point dentré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 daccueil
  • Factories pour
  • Session
  • RequestCycle
  • Security
  • Configurée dans le web.xml
  • ltfiltergt
  • ltfilter-namegtwicketlt/servlet-namegt
  • ltfilter-classgtorg.apache.wicket.protocol.http.
    WicketFilterlt/filter-classgt
  • ltinit-paramgt
  • ltparam-namegtapplicationClassNamelt/param-na
    megt
  • ltparam-valuegtexample.MyApplicationlt/param-
    valuegt
  • lt/init-paramgt
  • ltload-on-startupgt1lt/load-on-startupgt

12
Concepts de Wicket
  • Application
  • Session
  • RequestCycle
  • Composants
  • Behaviors
  • Models

13
Session
  • Abstraction dune 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 dun panier pour un site de commerce
  • Historique limité des pages pour le support du
    bouton Précédent

14
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)

15
Concepts de Wicket
  • Application
  • Session
  • RequestCycle
  • Composants
  • Behaviors
  • Models

16
RequestCycle
  • Etapes du Request Cycle
  • Création de lobjet 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

17
RequestCycle
  • Deux types de requètes
  • Stateful
  • Liée à une session d'utilisateur spécifique
  • Pas bookmarkable
  • Stateless
  • Pas nécessairement liée à une session
    dutilisateur spécifique
  • Bookmarkable

18
Concepts de Wicket
  • Application
  • Session
  • RequestCycle
  • Composants
  • Behaviors
  • Models

19
Composants
  • Encapsule la manipulation des balises
  • Peut recevoir des événements
  • onClick, onSubmit
  • Sait lui même comment et où il doit safficher
  • Créer un Composant personnalisé est aussi simple
    que décrire extends
  • Lhéritage de wicket.Component fait le reste
  • Disponible dans le classpath de lapplication

20
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

21
Composants et balises
  • Un composant est identifié dans le balisage par
    wicketid
  • Html lth1 wicketidmsggtGets replacedlt/h1gt
  • Javanew Label(msg, Hello, World!)
  • Final (les tags wicket peuvent être masqués du
    source html)
  • lth1gtHello, World!lt/h1gt

22
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

23
Example Hello, World!
24
Concepts de Wicket
  • Application
  • Session
  • RequestCycle
  • Composants
  • Behaviors
  • Models

25
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)
  • )
  • Outputlttr classoddgtlt/trgtlttr
    classevengtlt/trgt

26
Behaviors
  • Modifier les attributs des balises du Composant
  • Ajouter des évenements javascript
  • Ajouter un comportement Ajax
  • component.add(new AjaxSelfUpdatingBehavior(Duratio
    n.seconds(1)))

27
Concepts de Wicket
  • Application
  • Session
  • RequestCycle
  • Composants
  • Behaviors
  • Models

28
Models
  • Les Models associent vos POJOs aux composants
    Wicket

Label(nom, model)
ltltPersonnegtgt nom String ville String
PropertyModel
29
Models
  • Le binding en Java nest pas aisé
  • Ne fera pas dupdate
  • 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 à lupdate
  • Personne p new Personne()
  • new TextField(rue, new PropertyModel(p,
    adresse.rue))

30
Agenda
  • Quest ce que Wicket ?
  • Concepts Fondamentaux
  • Développer un Composant Personnalisé
  • QR

31
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. 

32
Combien de temps pour un composant ?
464 pages
20 minutes et encore
33
Example Password strength
weak
medium
strong
34
Example Password strength
  • Les Panels permettent le regroupement
  • Ils ont leur propre ficher html
  • Peuvent être échangé dans les pages par dautres
    composants
  • Peuvent contribuer au header de la page html
  • Peuvent contenir autant de composants que
    souhaité, même dautres panels

35
Example Password strength
36
Example Password strength
37
Example Password strength
38
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é

39
Agenda
  • Quest ce que Wicket ?
  • Concepts Fondamentaux
  • Développer un Composant Personnalisé
  • QR
Write a Comment
User Comments (0)
About PowerShow.com