Doccumentation
Pour lancer le projet :
Clonez le projet dans le tomcat/webapps d'une instalation Tomcat fonctionnel.
Dans tout les fichier terminant par DaoJdbcn modifier la fonction java private Connection getCon()
pour mettre vos url, login et mot de passes.
Rendez-vous dans le dossier WEB-INF/src/ et executez javac -d ../classes/ dao/*.java (compile les fichiers que l'on viens de mofigier).
Executez ./catalina run dans le dossier tomcat/bin/ (lance le serveur).
Rendez vous sur le lien : http://localhost:8080/sae-r4.01/accueil.jsp
1. Description générale de l’application
Ce projet consiste en une application web de réseau social, conçue pour permettre aux utilisateurs de créer des conversations et d’envoyer et recevoir des messages. L'application est construite en Java avec une architecture MVC.
Fonctionnalités principales :
- Gestion des utilisateurs : Création de compte, authentification et gestion des informations personnelles.
- Création et gestion des conversations : L'utilisateur peut créer de nouvelles conversations, en rejoindre (à condition d'avoir le mot de passe) et poster des messages.
- Interaction entre utilisateurs : Les utilisateurs peuvent lire les messages des autres abonnés dans la même conversation, envoyer des messages, et voir la date et l'heure des messages.
- Sécurité : Protection contre les injections SQL et mot de passe chiffrés.
2. MCD et MDL
MCD :

MLD :

3. Requêtes pertinentes
Récupérer le pseudo d'un utilisateur à partir de son email :
SELECT pseudo
FROM Utilisateur
WHERE email = 'alexandre.dehaine.etu@univ-lille.fr';
Récupérer toute une conversation avec les noms des utilisateurs et leurs messages dans l'ordre de lecture classique :
SELECT u.pseudo, m.message
FROM Messages AS m
JOIN Utilisateur AS u ON m.utilisateur = u.email
WHERE idConv = (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1')
ORDER BY m.jour, m.heure;
Récupérer tous les messages d'une conversation contenant le mot "ca va", avec les noms des utilisateurs, dans l'ordre de lecture classique :
SELECT u.pseudo, m.message
FROM Messages AS m
JOIN Utilisateur AS u ON m.utilisateur = u.email
WHERE idConv = (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1')
AND LOWER(m.message) LIKE '%ca va%'
ORDER BY m.jour, m.heure;
Récupérer tous les utilisateurs d'une conversation spécifique :
SELECT DISTINCT utilisateur
FROM Messages
WHERE idConv = 1;
4. Arborescence
.
├── accueil.jsp
├── login.html
├── MCD.drawio
├── MCD.png
├── META-INF
│ └── context.xml
├── MLD.drawio
├── MLD.png
├── package.json
├── package-lock.json
├── README.md
├── rejoindre.jsp
├── ScriptSQL.sql
├── Supprimer.jsp
├── tree.txt
├── util.txt
└── WEB-INF
├── classes
│ └── dao
│ ├── Authent.class
│ ├── Conversation.class
│ ├── ConversationDao.class
│ ├── ConversationJdbcDao.class
│ ├── Message.class
│ ├── MessageDao.class
│ ├── MessageJdbcDao.class
│ ├── Utilisateur.class
│ ├── UtilisateurDao.class
│ └── UtilisateurJdbcDao.class
├── lib
│ ├── chesslib-1.1.8.jar
│ └── postgresql-42.7.4.jar
└── src
└── dao
├── Authent.java
├── ConversationDao.java
├── Conversation.java
├── ConversationJdbcDao.java
├── MessageDao.java
├── Message.java
├── MessageJdbcDao.java
├── UtilisateurDao.java
├── Utilisateur.java
└── UtilisateurJdbcDao.java
8 directories, 37 files
5. Liste des entrées des contrôleurs avec leur fonctionnalité
- Créer un compte : Un utilisateur non connecté peut créer un compte.
- Se connecter : Un utilisateur non connecté peut se connecter avec son compte.
- Se déconnecter : Un utilisateur connecté peut se déconnecter.
- Créer une conversation : Un utilisateur connecté peut créer une conversation, lui attribuant un nom, un mot de passe (non obligatoire, il permet d’empêcher les utilisateurs non invités de rejoindre la conversation) ainsi qu’un message de bienvenue (le premier message de la conversation).
- Rejoindre une conversation : Un utilisateur connecté peut rejoindre une conversation. Il lui faut l'ID de la conversation, le mot de passe si la conversation en possède un, ainsi qu'un premier message.
- Supprimer une conversation : Un utilisateur connecté peut supprimer une conversation qu'il a créée. Il lui faut le mot de passe (si la conversation en possède un) pour confirmer la suppression. Supprimer une conversation entraîne la suppression de tous les messages associés.
- Sélectionner une conversation : Un utilisateur connecté peut sélectionner une conversation parmi celles qu’il a rejointes.
- Lire les messages : Un utilisateur connecté qui a rejoint et sélectionné une conversation peut lire les messages des autres utilisateurs.
- Poster un message : Un utilisateur connecté qui a rejoint et sélectionné une conversation peut y poster un message.
6. Liste des points techniques difficiles
- Tables : La première difficulté a été de déterminer comment organiser le projet, savoir quelles tables créer et quelles informations y inclure, et comment les faire interagir ensemble. Il fallait aussi gérer les règles de relations entre ces tables.
- JSP : Ensuite, il a fallu utiliser les JSP, en se rappelant leur fonctionnement pour les exploiter au mieux, et choisir l’ordre et l’importance des différentes fonctionnalités.
- Messages : La fonctionnalité des messages a été la plus longue à implémenter. Il fallait réussir à afficher les bons messages lorsque la bonne conversation était sélectionnée.
- Sessions et authentification : La deuxième fonctionnalité la plus longue à implémenter a été la gestion des sessions et de l’authentification, notamment en ce qui concerne les permissions. Il était essentiel de faire en sorte que l’utilisateur ne puisse voir une conversation que s’il en avait la permission, et que seules les personnes autorisées puissent envoyer des messages ou supprimer des conversations.