Struts
                                  JSF 2.0
                   JSP

           Servlets


     HTTP
request/response
Pla
   n




       2
Java Server Faces est un framework Java
pour le développement d’application web


     Orienté composants
     Basé sur le pattern MVC


                                     Quoi ??
                          Quand ??


                   Comment ??

                                               3
FacesServlet   JSF Pages




                           4
JEE 6 &
      Correction
       Correction                                         Multiples
        de bugs
         de bugs                                         nouveautés
          1.1
           1.1
                    Améliorations
                     Améliorations
Version
 Version            et Corrections
                     et Corrections                          JSF 2.0
initiale
 initiale                 1.2
                           1.2
  1.0
   1.0
                                                         JSR 314
JSR 127               JSR 252




                                                   Quoi ??

                                       Quand ??

                                      Comment ??

                                                                   5
<h:form>
<h:commandButton actionListener="#{Personne.action} " 
 action="#{Personne.MonImc} "  value=« IMC"/>
</h:form>                 <h:inputText value="#{personne.no




                                             Quoi ??
                                     Quand ??

                               Comment ??
                                                         6
Pla
   n




       7
<navigation-rule>
@ManagedBean
#{bean.property}
 Request Scope
  @Max(1000)
  View Scope




                    8
JSF
JSF
2.0
 2.0
       9
JSF
JSF
2.0
 2.0
       10
Faisons un petit
    Faisons un petit
       exemple !!!!
        exemple




@




                   11
Technologie de présentation pour le
       développement d’application web.

Spécifiquement
 Spécifiquement                   Plus
                                  Plus
                             Création des
                             Création des
développée pour
développée pour            performante et
                           performante et
  Templating
   Templating                composants
                              composants
     JSF
      JSF                  plus légere que
                            plus légere que
                            personnalisés
                            personnalisés
                                  JSP
                                  JSP
                   P

                              Facelets
                  JS




                                              12
Voyons ce qu’on
        Voyons ce qu’on
        peut faire avec
         peut faire avec
         les facelets !!!!
          les facelets




   tm
.xh




                         13
JSF 2.0   Sauvegarde d’état partielle (juste l’état sauvée/restaurée
          La totalité de l’arbre de composants est modifié)

                                                 web.xml




                                                                   14
Ajax est essentiel pour construire des
              applications Web convaincantes et compétitives.




             Plusieurs solution s JSF/Ajax disponibles
            Pas de prise en charge native



 Un usage déclaratif ,plus commode pour les auteurs de pages avec le tag
de la bibliothèque « core » de JSF 2.0

                                                       <f:ajax>

                                                                       15
Se déclenchent lors de la phase ProcessValidation


         Le but d'un converter est d’affiner le modèle

         Le but d'un validator est de protéger le
         modèle




                                                    16
Je veux un peu de
              Je veux un peu de
               dynamisme dans
               dynamisme dans
                 mes pages !!!!
                 mes pages



    j   ax>
<f:a




                                  17
JSF
JSF
2.0
 2.0
       18
Appliquons sur
   Appliquons sur
  notre exemple
   notre exemple
« la navigation
« la navigation
conditionnelle » !!!!
 conditionnelle »




                        19
Pla
   n




       20
<bean id=“SpringBean“ class="com.spring.beans.Personne">
<property name = " nom" value= " Sahbi " ></property>          Spring
</bean>
                                                     web.xml

<managed-bean>
    <managed-bean-name>personne</managed-bean-name>             JSF
       <managed-bean-class>
                      com.spring.beans.Personne
       </managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>



            IoC && Application Web Dynamique
             IoC && Application Web Dynamique
Les composants
   personnalisés
Accès aux beans par
    leurs noms

Langage d’expression

Simplicité du fichier
  de configuration
Serveurs d'application
• Glassfish, Jboss, Tomcat, Jetty

IDE
• NetBeans 6.9 et Eclipse

Génération de code :
•Archetypes Maven

Librairies de composants
• Richfaces 4.0 M2, IceFaces 2.0 béta 1, PrimeFaces 2.0...




                                                             23
Merci pour votre attention
Merci pour votre attention




                             24
A vos Questions
A vos Questions




                  25

JSF 2.0

  • 1.
    Struts JSF 2.0 JSP Servlets HTTP request/response
  • 2.
    Pla n 2
  • 3.
    Java Server Facesest un framework Java pour le développement d’application web Orienté composants Basé sur le pattern MVC Quoi ?? Quand ?? Comment ?? 3
  • 4.
    FacesServlet JSF Pages 4
  • 5.
    JEE 6 & Correction Correction Multiples de bugs de bugs nouveautés 1.1 1.1 Améliorations Améliorations Version Version et Corrections et Corrections JSF 2.0 initiale initiale 1.2 1.2 1.0 1.0 JSR 314 JSR 127 JSR 252 Quoi ?? Quand ?? Comment ?? 5
  • 6.
    <h:form> <h:commandButton actionListener="#{Personne.action} "  action="#{Personne.MonImc} "  value=« IMC"/> </h:form> <h:inputText value="#{personne.no Quoi ?? Quand ?? Comment ?? 6
  • 7.
    Pla n 7
  • 8.
  • 9.
  • 10.
  • 11.
    Faisons un petit Faisons un petit exemple !!!! exemple @ 11
  • 12.
    Technologie de présentationpour le développement d’application web. Spécifiquement Spécifiquement Plus Plus Création des Création des développée pour développée pour performante et performante et Templating Templating composants composants JSF JSF plus légere que plus légere que personnalisés personnalisés JSP JSP P Facelets JS 12
  • 13.
    Voyons ce qu’on Voyons ce qu’on peut faire avec peut faire avec les facelets !!!! les facelets tm .xh 13
  • 14.
    JSF 2.0 Sauvegarde d’état partielle (juste l’état sauvée/restaurée La totalité de l’arbre de composants est modifié) web.xml 14
  • 15.
    Ajax est essentiel pour construiredes applications Web convaincantes et compétitives. Plusieurs solution s JSF/Ajax disponibles Pas de prise en charge native Un usage déclaratif ,plus commode pour les auteurs de pages avec le tag de la bibliothèque « core » de JSF 2.0 <f:ajax> 15
  • 16.
    Se déclenchent lorsde la phase ProcessValidation Le but d'un converter est d’affiner le modèle Le but d'un validator est de protéger le modèle 16
  • 17.
    Je veux unpeu de Je veux un peu de dynamisme dans dynamisme dans mes pages !!!! mes pages j ax> <f:a 17
  • 18.
  • 19.
    Appliquons sur Appliquons sur notre exemple notre exemple « la navigation « la navigation conditionnelle » !!!! conditionnelle » 19
  • 20.
    Pla n 20
  • 21.
    <bean id=“SpringBean“ class="com.spring.beans.Personne"> <propertyname = " nom" value= " Sahbi " ></property> Spring </bean> web.xml <managed-bean> <managed-bean-name>personne</managed-bean-name> JSF <managed-bean-class> com.spring.beans.Personne </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> IoC && Application Web Dynamique IoC && Application Web Dynamique
  • 22.
    Les composants personnalisés Accès aux beans par leurs noms Langage d’expression Simplicité du fichier de configuration
  • 23.
    Serveurs d'application • Glassfish,Jboss, Tomcat, Jetty IDE • NetBeans 6.9 et Eclipse Génération de code : •Archetypes Maven Librairies de composants • Richfaces 4.0 M2, IceFaces 2.0 béta 1, PrimeFaces 2.0... 23
  • 24.
    Merci pour votreattention Merci pour votre attention 24
  • 25.
    A vos Questions Avos Questions 25

Notes de l'éditeur

  • #4 offrant d&apos;une part, une architecture MVC et d&apos;autre part, une approche composant (l&apos;état d&apos;un composant est enregistré lors du rendu de la page, pour être ensuite restauré au retour de la requête.). L&apos;objectif est de remplacer l&apos;approche «  je traite la requête HTTP et je renvoie une page HTML  » par «  j&apos;envoie des composants (boutons, champs de texte, etc..) et je réagis aux actions de l&apos;utilisateur  ».
  • #5 Les pages JSF sont par default des Facelets ( Apache). On peut encore JSP ou des pages XUL. (XML-based User interface Language (prononcé zoul) est un langage de description d’interfaces graphiques fondé sur XML) XUL facilite la mise au point d’une interface plus évoluée que HTML sur le plan technique. Une interface XUL peut récupérer d’un serveur les seules données nécessaires à la mise à jour d’un élément de la page et non l’ensemble de la page elle-même ; ces données peuvent être récupérées en XML et de manière asynchrone, ce qui permet d’utiliser la méthode AJAX en programmation XUL. Ces techniques permettent d’améliorer considérablement les temps de réponse et le confort de l’utilisateur. FacesServlet est la  servlet qui gère tout cycle de traitement d&apos;une requête
  • #6 La première version des spécifications JSF est lancée par SUN le 11 Mars 2004 et définie dans la JSR 127. Après quelques corrections , la version 1.1 est sortie le 27 Mai 2004. La version 1.2 (Apache) sortie le 11 mai 2006 comprend un ensemble d&apos;améliorations mineures à la spécification précédente.  L&apos;utilisation d&apos;un schéma pour le fichier de configuration, à la place d&apos;une DTD.  Des améliorations pour pouvoir gérer plusieurs frames ou fenêtres d&apos;une même application.  Quelques corrections pour des bugs. JSF 2.0 est sortie en 28 juin 2009 en accompagnant la sortie Java EE 6 et en apportant les premières améliorations majeures en terme de productivité.
  • #7 Un ensemble de phase exécutée l’une après l’autre  design pattern Chain of responsibilities Quand une requête est envoyé au serveur , il crée l’arbre hiérarchique des composants de l’IU et chaque composant est associé à son validateur , à son gestionnaire d’évènement et eventuellement à un objet (model). Après le moteur JSF extrait les paramètres de la requête et les applique à leurs composants respectifs. On sauvegrade les valeurs des paramètres et on fait les conversions nécessiares. Ensuite on applique les validateurs et si tout va bien les valeurs des beans sont mises à jour. Après la synchronisation des models, on entre dans la phase Invoke application. La le moteur JSF gére les evenements , la navigation , la mise à jour de la base de données etc Ainsi l’arbre de composants de la prochaine page est construit et on entame la dernière phase qui est le rendu de la réponse
  • #9 Max(1000) Définit jsr 303 View Scope donne au managed bean associé une durée de vie identique à celle de la vue
  • #16 Plusieurs solutions JSF / Ajax sont disponibles (IceFaces,PrimeFaces) . Les différences subtiles entre ces solutions conduisent des problèmes de compatibilité cross-framework. Les créateurs de JSF WebApp n&apos;ont pas accès aux fonctionnalités Ajax sans avoir besoin d&apos;un tiers framework  Api Ajax standard
  • #23 1/facile de combiner des interfaces graphiques complexes en un seul composant gérable en JSF , Struts ne le fait pas 2/JSF ne se limite pas aux formats HTML et HTTP; Struts si 3/JSF vous permet d&apos;attribuer des noms aux beans, puis vous référez à eux par leurs noms dans les formes. Struts a un processus complexe comportant plusieurs niveaux d&apos;indirection où vous devez vous rappeler quelle forme est l&apos;entrée pour quelle action. 4/Le langage d&apos;expression JSF est plus concis et plus puissant que de Struts. 5/Le fichier faces-config.xml est beaucoup plus facile à utiliser que le fichier struts-config.xml. En général, JSF est plus simple.