• 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 13/01/2020

Entraînez-vous à poser les bases d'une application de discussion

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

À vous de jouer !

Je vous propose de revoir tout ce que vous avez vu dans cette première partie du cours en créant une application de discussion, un peu comme Framateam (Mattermost) ou Slack.

Bien entendu, je ne vous demande pas de développer tous les fonctionnalités fournies par ces services !

Votre mission 

Votre mission est de développer l'application Palabres.

screenshot

Celle-ci sera développée en 2 temps :

  • dans cette première activité, vous poserez les bases de l'application ;

  • dans l'activité de fin du cours, vous développerez le reste des fonctionnalités attendues.

Quelques concepts fonctionnels

L'application permet de gérer plusieurs fils de discussion, appelés Channels.

L'application permet à des Utilisateurs d'envoyer des Messages sur un Channel (action de poster un message).

Les Utilisateurs peuvent consulter les Messages envoyés sur un Channel.

L'utilisateur s'authentifiant sur l'application accède à tous les Channels de l'application.

Un utilisateur non connecté ne peut rien faire d'autre que se connecter (il ne peut pas consulter la liste des channels, envoyer des messages...)

Socle de départ

Je vous fournis un socle de départ pour le développement :

https://static.oc-static.com/prod/courses/files/implementez-le-patron-mvc-en-java-avec-apache-struts/activite1_codebase.zip

Il s'agit d'un projet Maven multi-modules reposant sur une architecture multi-tiers. Cette application doit être déployer sur un serveur d'application JEE comme Apache Tomcat. L'application n'a besoin d'aucun autre service externe (pas de base de données notamment), tout est géré en mémoire dans l'application.

Toutes les couches, à l'exception de la couche de présentation, sont déjà implémentées. Je pense que le code est suffisamment claire/simple pour que vous vous y retrouviez sans mal. ;)

Je fournis également un jeu de données de démonstration (2 channels et quelques utilisateurs connectés) ainsi qu'un bouchonnage.
Tout ceci est implémenté directement dans la couche business, et simulte l'activité (envois de message) d'autres utilisateurs connectés sur les channels.

Travail demandé

Dans cette activité, vous devez :

  • mettre en place Struts sur l'application web

  • implémenter les cas d'utilisation suivants :

    • connexion/déconnexion,

    • afficher les messages d'un Channel existant,

    • créer un nouveau Channel.

Notamment, vous n'avez pas à faire :

  • implémentation de l'envoi de message dans un channel,

  • de rafraichissement automatique des messages postés dans un channel,

  • suppression/modification de channels,

  • suppression/modification de messages,

  • modification du pseudo de l'utilisateur connecté,

  • ...

Connexion/déconnexion

Il vous faut créer un page d'authentification permettant à un nouvel utilisateur de se connecter à l'application en fournissant un pseudo.

Il ne s'agit pas ici de vérifier un couple identifiant/mot de passe, mais simplement de demander un pseudo à l'utilisateur et de vérifier que ce pseudo n'est pas déjà utilisé par un autre utilisateur connecté. Si un autre utilisteur possède le même pseudo, il faut refuser l'accès à l'utilisateur.

Si la connexion de l'utilisateur réussit, vous devez rediriger l'utilisateur sur la page de sélection du Channel à consulter. Quand l'utilisateur est connecté, vous affichez, dans un bandeau de navigation, le nom de l'utilisateur connecté ainsi qu'un bouton/lien pour se déconnecter. Si l'utilisateur n'est pas connecté, vous affichez un bouton/lien renvoyant vers la page de connexion.

Lors de la connextion, l'utilisateur doit être ajouté à la liste des utilisateurs connectés (via la méthode UtilisateurManager.addUtilisateur(Utilisateur))

Lors de la déconnexion, l'utilisateur doit être retiré de la liste des utilisateurs connectés (via la méthode UtilisateurManager.deleteUtilisateur(Utilisateur))

Page de sélection du Channel à consulter

Vous devez créer une page permettant à l'utilisateur :

  • soit de choisir le Channel qu'il veut consulter,

  • soit de créer un nouveau Channel.

Afficher les messages d'un Channel

Vous devez créer une page affichant tous les messages postés dans un channel.

Ajoutez à cette page un bouton/lien permettant de rafraichir la page (simplement réafficher la page, je ne vous demande pas de faire une requête asychnone en AJAX ici).

Création d'un nouveau Channel

Vous devez créer une page permettant de créer un nouveau Channel.

Si la création réussit, l'utilisateur entre ensuite dans l'affichage des messages du Channel.

 Vous pouvez peaufiner un peu le rendu graphique de l'application. Vous pouvez pour cela utiliser Bootstrap et Font Awesome par exemple. Mais ce n'est pas la priorité !!

À vous de jouer. Bon courage. ;)

Vérifiez votre travail !

Exemple de certificat de réussite
Exemple de certificat de réussite