From 1de65d2ee92d656509068a4e32f344f1f0b279a0 Mon Sep 17 00:00:00 2001 From: Alexandre Dehaine <alexandredehaine@outlook.fr> Date: Mon, 10 Mar 2025 11:57:34 +0100 Subject: [PATCH] v1 --- .vscode/settings.json | 12 ------ ScriptSQL.sql | 2 +- WEB-INF/classes/dao/ConversationDao.class | Bin 636 -> 636 bytes WEB-INF/classes/dao/ConversationJdbcDao.class | Bin 7431 -> 7777 bytes WEB-INF/src/dao/ConversationDao.java | 2 +- WEB-INF/src/dao/ConversationJdbcDao.java | 40 ++++++++++-------- accueil.jsp | 13 +++--- 7 files changed, 33 insertions(+), 36 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index cb83cd3..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "java.project.sourcePaths": [ - "WEB-INF/classes", - "WEB-INF/lib" - ], - "java.project.referencedLibraries": [ - "/home/infoetu/alexandre.dehaine.etu/tomcat/lib/annotations-api.jar", - "/home/infoetu/alexandre.dehaine.etu/tomcat/webapps/sae-r4.01/WEB-INF/lib/postgresql-42.7.4.jar", - "/home/infoetu/alexandre.dehaine.etu/tomcat/webapps/sae-r4.01/WEB-INF/lib/chesslib-1.1.8.jar" - ], - "java.project.outputPath": "WEB-INF/classes" -} \ No newline at end of file diff --git a/ScriptSQL.sql b/ScriptSQL.sql index 6473068..fbf9712 100644 --- a/ScriptSQL.sql +++ b/ScriptSQL.sql @@ -47,7 +47,7 @@ CREATE TABLE Messages INSERT INTO Messages(message, utilisateur, idConv) VALUES('Hello', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1')); -- Créations d'une Conversation 2 et de messages - INSERT INTO Conversations(nomConv, createur) + INSERT INTO Conversations(nomConv, createur, pwd) VALUES('Conversation 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), MD5('mdp')); INSERT INTO Messages(message, utilisateur, idConv) VALUES('Conv 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 2')); diff --git a/WEB-INF/classes/dao/ConversationDao.class b/WEB-INF/classes/dao/ConversationDao.class index a2930172d2374868a20253fe952d727e48f96892..3be0414e77e4b46609e99caf177665a0431f1e97 100644 GIT binary patch delta 13 Vcmeyv@`q)^CPqfj$(tEZ0sty+1-<|P delta 13 Vcmeyv@`q)^CPv1n$(tEZ0stz+1<wEg diff --git a/WEB-INF/classes/dao/ConversationJdbcDao.class b/WEB-INF/classes/dao/ConversationJdbcDao.class index 21c0c2d04aa20f9680699cd709e95b6cc96324ec..5dcd0f5eadfff1a1839538bd6e7d0d036c2cfe49 100644 GIT binary patch delta 2293 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 I{9up-0J??h!2kdN delta 1969 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 Qu74OAo-#aVc*!6M0ONgxBme*a diff --git a/WEB-INF/src/dao/ConversationDao.java b/WEB-INF/src/dao/ConversationDao.java index 9f61d27..246c615 100644 --- a/WEB-INF/src/dao/ConversationDao.java +++ b/WEB-INF/src/dao/ConversationDao.java @@ -7,7 +7,7 @@ public interface ConversationDao { List<Message> findAllMessages(int idConv); List<Utilisateur> findAllUtilisateurs(int idConv); List<Conversation> findByUser(String email); - boolean createConversation(String nomConv, Utilisateur createur, String pwd); + int createConversation(String nomConv, Utilisateur createur, String pwd); boolean deleteConversation(int idConv); boolean goodPwd(int idConv, String pwd); } diff --git a/WEB-INF/src/dao/ConversationJdbcDao.java b/WEB-INF/src/dao/ConversationJdbcDao.java index d3897c2..ff2ea93 100644 --- a/WEB-INF/src/dao/ConversationJdbcDao.java +++ b/WEB-INF/src/dao/ConversationJdbcDao.java @@ -1,10 +1,5 @@ package dao; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -94,21 +89,32 @@ public class ConversationJdbcDao implements ConversationDao{ } @Override - public boolean createConversation(String nomConv, Utilisateur createur, String pwd) { - try (Connection con = getCon(); Statement stmt = con.createStatement()) { + public int createConversation(String nomConv, Utilisateur createur, String pwd) { + try (Connection con = getCon()) { + // Utilisation de PreparedStatement avec Statement.RETURN_GENERATED_KEYS pour récupérer l'ID généré String sql = "INSERT INTO Conversations(nomConv, createur, pwd) VALUES('"+nomConv+"', '"+createur.getEmail()+"', MD5('"+pwd+"'));"; - System.err.println(sql); - ResultSet rs = stmt.executeQuery(sql); - rs.next(); - rs.close(); - con.close(); - return true; - }catch (SQLException e) { + + // Préparer la requête pour insertion avec des paramètres + try (PreparedStatement pstmt = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + // Exécuter la requête d'insertion + pstmt.executeUpdate(); + + // Récupérer les clés générées + try (ResultSet rs = pstmt.getGeneratedKeys()) { + if (rs.next()) { + // Récupérer l'ID généré + int res = rs.getInt(1); // Le premier champ dans ResultSet est l'ID auto-généré + return res; + } + } + } + } catch (SQLException e) { System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage()); e.printStackTrace(); } - return false; - } + return 0; // Retourner 0 en cas d'erreur + } + @Override public boolean deleteConversation(int idConv) { diff --git a/accueil.jsp b/accueil.jsp index 8729b9c..ff5805c 100644 --- a/accueil.jsp +++ b/accueil.jsp @@ -40,11 +40,13 @@ response.sendRedirect("http://localhost:8080/sae-r4.01/accueil.jsp?idConv=" + selectedConvId); } } - if(request.getParameter("param") == "create"){ - jdbcConv.createConversation(request.getParameter("nomConv") ,utilisateur, request.getParameter("pwd")); + if(request.getParameter("param") != null && request.getParameter("param").equals("create")){ + System.out.println("suce"); + selectedConvId = jdbcConv.createConversation(request.getParameter("nomConv") ,utilisateur, request.getParameter("pwd")); jdbcMessage.createMessage(utilisateur, request.getParameter("Message"), selectedConvId); response.sendRedirect("http://localhost:8080/sae-r4.01/accueil.jsp?idConv=" + selectedConvId); } + System.out.println("bite"); %> <br> @@ -100,7 +102,7 @@ out.println("<label for=\"idConv,\">Identifiant de la conversation:</label>"); out.println("<input type=\"text\" id=\"idConv\" name=\"idConv\">"); out.println("<label for=\"pwd\">Mot de passe:</label>"); - out.println("<input type=\"text\" id=\"pwd\" name=\"pwd\">"); + out.println("<input type=\"password\" id=\"pwd\" name=\"pwd\">"); out.println("<label for=\"Message\">Message:</label>"); out.println("<input type=\"text\" id=\"Message\" name=\"Message\">"); out.println("<button type=\"submit\" name=\"param\" value = \"join\" class=\"btn btn-primary\">Rejoindre</button>"); @@ -109,13 +111,14 @@ <h3>Créer une conversation :</h3> <% + out.println("<form action='accueil.jsp' method='get'>"); out.println("<label for=\"nomConv\">Nom de la conversation:</label>"); out.println("<input type=\"text\" id=\"nomConv\" name=\"nomConv\">"); out.println("<label for=\"pwd\">Mot de passe:</label>"); - out.println("<input type=\"text\" id=\"pwd\" name=\"pwd\">"); + out.println("<input type=\"password\" id=\"pwd\" name=\"pwd\">"); out.println("<label for=\"Message\">Message:</label>"); out.println("<input type=\"text\" id=\"Message\" name=\"Message\">"); - out.println("<button type=\"submit\" name=\"param\" value = \"create\" class=\"btn btn-primary\">Créer</button>"); + out.println("<button type=\"submit\" name=\"param\" value =\"create\" class=\"btn btn-primary\">Créer</button>"); out.println("</form>"); %> -- GitLab