Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
enseignement:d35:tp:jsf [2015/10/31 16:50] – Page name changed from enseignement:d35:tp:tp3 to enseignement:d35:tp:jsf Emmanuel Brunoenseignement:d35:tp:jsf [2023/09/20 18:52] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== D35 - TP4 - CDI et JSF ======+====== D35 - TP4 - JSF ======
 L'objectif de ce TP est d'être une premier contact avec les applications JEE au travers de JSF et de CDI. L'objectif de ce TP est d'être une premier contact avec les applications JEE au travers de JSF et de CDI.
  
Ligne 5: Ligne 5:
  
 Il faut tout d'abord obtenir ou créer un projet qui servira de modèle Il faut tout d'abord obtenir ou créer un projet qui servira de modèle
-<cli+<konsole
-git clone https://bruno@lsis.univ-tln.fr/redmine/bruno/samples/simplejsfgit.git simplejsf+git clone git@github.com:emmanuelbruno/simplejsf.git simplejsf
 cd simplejsf cd simplejsf
-</cli>+</konsole>
  
 Ce projet de base de peut ensuite être modifié pour être un modèle le plus général possible. Ce projet de base de peut ensuite être modifié pour être un modèle le plus général possible.
 La création d'un archetype est très simple (cf. [[maven:archetypegenerate]] pour plus de détails) La création d'un archetype est très simple (cf. [[maven:archetypegenerate]] pour plus de détails)
-<cli>+<konsole>
 mvn clean archetype:create-from-project mvn clean archetype:create-from-project
 cd target/generated-sources/archetype cd target/generated-sources/archetype
-</cli>+</konsole>
  
 L'archetype doit être installé dans le repository local avec d'être utilisé. Dans l'idéal l'archetype est publié sur un repository maven central ou privé (cf. [[maven:mavenrepository]]). L'archetype doit être installé dans le repository local avec d'être utilisé. Dans l'idéal l'archetype est publié sur un repository maven central ou privé (cf. [[maven:mavenrepository]]).
-<cli>+<konsole>
 mvn clean install mvn clean install
-</cli>+</konsole>
  
 Ensuite autant de projets que l'on souhaite peuvent être créés à partir de l'archetype, ** A partir d'un autre répertoire ** : Ensuite autant de projets que l'on souhaite peuvent être créés à partir de l'archetype, ** A partir d'un autre répertoire ** :
-<cli>+<code>
 mvn archetype:generate \ mvn archetype:generate \
     -DarchetypeCatalog=local \     -DarchetypeCatalog=local \
Ligne 31: Ligne 31:
     -DarchetypeGroupId=fr.univtln.d35.hellojsf \     -DarchetypeGroupId=fr.univtln.d35.hellojsf \
     -DarchetypeArtifactId=hellojsf-archetype     -DarchetypeArtifactId=hellojsf-archetype
-</cli>+</code>
  
-Pour pouvoir exécuter cette application web, il faut maintenant la déployer dans un serveur d'application. Une approche classique pour effectuer des tests est d'utiliser maven pour déployer automatique l'application dans un serveur d'application embarqué. +Pour pouvoir exécuter cette application web, il faut maintenant la déployer dans un serveur d'application. Une approche classique pour effectuer des tests est d'utiliser maven pour déployer automatiquement l'application dans un serveur d'application embarqué. 
  
 <note warning> <note warning>
 Attention actuellement, une incompatibilité oblige l'utilisation de [[http://mir2.ovh.net/ftp.apache.org/dist/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz|maven 3.0.5]] Attention actuellement, une incompatibilité oblige l'utilisation de [[http://mir2.ovh.net/ftp.apache.org/dist/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz|maven 3.0.5]]
-<cli>+<konsole>
 export MAVEN_HOME=~/apache-maven-3.0.5 export MAVEN_HOME=~/apache-maven-3.0.5
 export PATH=$MAVEN_HOME/bin:$PATH export PATH=$MAVEN_HOME/bin:$PATH
 mvn -version mvn -version
-</cli>+</konsole>
 </note> </note>
  
 L'exécution est très simple. La première exécution prend du temps à cause de téléchargement de nombreuses librairies. L'exécution est très simple. La première exécution prend du temps à cause de téléchargement de nombreuses librairies.
-<cli>+<konsole>
 cd hellojsf cd hellojsf
 mvn package embedded-glassfish:run mvn package embedded-glassfish:run
-</cli>+</konsole>
  
 <note tip> <note tip>
Ligne 59: Ligne 59:
 La configuration de base de projet est indiquée dans le ''pom.xml''. Regarder en particulier les dépendances ''javax:javaee-web-api'' et ''org.primefaces:primefaces''. La configuration de base de projet est indiquée dans le ''pom.xml''. Regarder en particulier les dépendances ''javax:javaee-web-api'' et ''org.primefaces:primefaces''.
  
-JSF s'appuie sur le modèle MVC, nous allons ballayer les différents composants :+JSF s'appuie sur le modèle MVC, nous allons balayer les différents composants :
  
 ==== Le modèle ==== ==== Le modèle ====
-Habituellement le modèle est composant de POJO Java, d'entités (au sens JPA) et d'entreprise Java Beans qui implante les aspects métiers. Dans cet exemple simple, il n'y a pas de modèle, celui-ci sera étudié dans le prochain cours.+Habituellement le modèle est composé de POJO Java, d'entités (au sens JPA) et d'entreprise Java Beans qui implantent les aspects métiers. Dans cet exemple simple, il n'y a pas de modèle, celui-ci sera étudié dans le prochain cours.
  
 ==== Le contrôleur ==== ==== Le contrôleur ====
Ligne 71: Ligne 71:
 La classe ''src/main/java/fr/univtln/d35/hellojsf/HelloBean.java'' implante la partie contrôleur associée à un composant de la vue. Il s'agit ici d'un CDI Bean annoté par ''@Named'' qui peut être injecté ailleurs dans l'application et en particulier dans la vue au travers du langage EL. Il est aussi possible d'utiliser un backing bean (annoté par ManagedBean) mais son utilisation est moins générale et n'est plus recommandée. Attention, en cas d'utilisation de CDI, l'application ne peux plus être déployée directement dans de simples serveurs d'application web (tomcat par exemple) sans y ajouter les librairies nécessaire à CDI. La classe ''src/main/java/fr/univtln/d35/hellojsf/HelloBean.java'' implante la partie contrôleur associée à un composant de la vue. Il s'agit ici d'un CDI Bean annoté par ''@Named'' qui peut être injecté ailleurs dans l'application et en particulier dans la vue au travers du langage EL. Il est aussi possible d'utiliser un backing bean (annoté par ManagedBean) mais son utilisation est moins générale et n'est plus recommandée. Attention, en cas d'utilisation de CDI, l'application ne peux plus être déployée directement dans de simples serveurs d'application web (tomcat par exemple) sans y ajouter les librairies nécessaire à CDI.
  
-La cycle de vie du bean est annoté par ''@SessionScoped'' (cf. http://docs.oracle.com/javaee/7/tutorial/doc/cdi-basic008.htm).+La cycle de vie du bean est annoté par ''@SessionScoped'' (cf. https://docs.oracle.com/javaee/7/tutorial/cdi-basic008.htm).
  
 ==== La vue ==== ==== La vue ====
Ligne 90: Ligne 90:
 </code> </code>
  
-Modifier la vue pour ajouter un bouton logout dans la template qui appelle cette méthode sur une instance du contrôlleur.+Modifier la vue pour ajouter un bouton logout dans le template qui appelle cette méthode sur une instance du contrôleur.
 ===== Mise en place de l'environnement de travail ===== ===== Mise en place de l'environnement de travail =====
 Dans ce cadre de ces TP nous utiliserons le serveur d'application JEE glassfish. Dans ce cadre de ces TP nous utiliserons le serveur d'application JEE glassfish.
  
-<note tip> +<konsole>
-Mettez en place votre propre serveur glassfish en suivant : http://bruno.lsis.univ-tln.fr/java/glassfish +
-</note> +
- +
-Glassfich peut être paramétré (ajout de ressources comme des bases de données, déploiement d'applications, ...) via son interface web ou en ligne de commandes.  +
- +
-<cli>+
 mvn package && asadmin redeploy --name hellojsf target/hellojsf.war                  mvn package && asadmin redeploy --name hellojsf target/hellojsf.war                 
-</cli>+</konsole>
  
 <note tip> <note tip>
Ligne 114: Ligne 108:
 ===== JSF et EJBs ===== ===== JSF et EJBs =====
 Créer un projet JSF à partir de l'archetype utilisé dans [[tp3]] : Créer un projet JSF à partir de l'archetype utilisé dans [[tp3]] :
-<cli>+<code>
  mvn archetype:generate \  mvn archetype:generate \
     -DarchetypeCatalog=local \     -DarchetypeCatalog=local \
Ligne 122: Ligne 116:
     -DarchetypeGroupId=fr.univtln.d35.hellojsf \     -DarchetypeGroupId=fr.univtln.d35.hellojsf \
     -DarchetypeArtifactId=hellojsf-archetype     -DarchetypeArtifactId=hellojsf-archetype
-</cli>+</code>
  
 <note> <note>
Ligne 135: Ligne 129:
  
  
-===== Extension du TP de révision ===== +===== Pour aller plus loin ===== 
-Vous pouvez maintenant appronfondir vos connaissances en suivant les parties suivantes du tutoriel de JavaEE7 :+Vous pouvez maintenant approfondir vos connaissances en suivant les parties suivantes du tutoriel de JavaEE7 :
  
-  * http://docs.oracle.com/javaee/7/tutorial/doc/jsf-intro.htm +  * https://docs.oracle.com/javaee/7/tutorial/jsf-intro.htm 
-  * http://docs.oracle.com/javaee/7/tutorial/doc/jsf-facelets.htm +  * https://docs.oracle.com/javaee/7/tutorial/jsf-facelets.htm 
-  * http://docs.oracle.com/javaee/7/tutorial/doc/jsf-el.htm+  * https://docs.oracle.com/javaee/7/tutorial/jsf-el.htm
  
 +En utilisant les concepts étudiés mettez en place une Ihm Web permettant de créer des instances, de consulter et d'interagir avec les classes que vous avez mises en place lors du TP de révision ou pour votre mini projet. 
  
-En utilisant les concepts étudiés mettez en place une Ihm Web permettant de créér des instances, de consulter et d'interagir avec les classes que vous avez mises en place lors du TP de révision. +{{tag>D35 TP Java JavaEE Glassfish }}
  
-** Vous n'utiliserez que des instances d'animaux en mémoire.** L'implantation des méthodes métiers et le liens avec la persistance seront étudiés dans le prochain cours.  
- 
-{{tag>D35 TP Java JavaEE Glassfish }} 
  
----- dataentry page ---- 
-type                 : TP 
-enseignement_tags    : D35 
-technologie_tags     : JEE,Java,Glassfish, CDI, JSF 
-theme_tags           : Composants 
-----  
 ---- struct data ---- ---- struct data ----
 +metadata.level       : 
 +metadata.Type        : TP
 +metadata.Nom         : 
 +metadata.Enseignements : D35
 +metadata.Promotions  : M2
 +metadata.Technologies : JEE, Java, Glassfish, CDI, JSF
 +metadata.Thèmes     : Composantsn, IHM
 +metadata.Description : 
 ---- ----