diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java
index cbc8c1119af13c70e00dc2c2311e55e6d0649fc5..d100f4a53164cf062f110ff8966f5fded7d64194 100644
--- a/WEB-INF/src/controleurs/Feed.java
+++ b/WEB-INF/src/controleurs/Feed.java
@@ -13,84 +13,103 @@ import jakarta.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
 import java.io.IOException;
 import java.sql.SQLException;
+import java.util.ArrayList;
 import java.util.List;
 
 @WebServlet("/Welcome")
 public class Feed extends HttpServlet {
+    UserDAO userDao = new UserDAO();
+    ThreadDAO threadDao = new ThreadDAO();
+    User user;
+
     public void service(HttpServletRequest req, HttpServletResponse res)
             throws IOException {
         if (req.getSession().getAttribute("user") != null) {
-            UserDAO userDao = new UserDAO();
-            ThreadDAO threadDao = new ThreadDAO();
             PrintWriter out = res.getWriter();
             String login = (String) req.getSession().getAttribute("login");
-            System.out.println(login);
 
-            User user = userDao.getUserByLogs(login, req.getSession().getAttribute("password").toString());
+            user = userDao.getUserByLogs(login, req.getSession().getAttribute("password").toString());
 
-            if (user != null) {
-                List<Message> messages = null;
-                try {
-                    messages = userDao.getMostRecentMessages(user);
-                } catch (SQLException e) {
-                    throw new RuntimeException(e);
-                }
+            List<Integer> liked_messages = getLikedMessages(req);
+
+            List<Message> messages = null;
+            try {
+                messages = userDao.getMostRecentMessages(user);
+            } catch (SQLException e) {
+                throw new RuntimeException(e);
+            }
+
+            out.println("<html><body><meta charset=\"utf-8\">");
+            out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">");
+            out.println("<title>Welcome</title>");
 
-                out.println("<html><body><meta charset=\"utf-8\">");
-                out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">");
-                out.println("<title>Welcome</title>");
-
-                out.println("<h1>Welcome to CampusTalk, " + login + " !</h1>");
-                
-                out.println(PageGeneration.generateNavMenu());
-
-                if (!messages.isEmpty()) {
-                    for (Message message : messages) {
-                        MyThread msgThread = null;
-                        try {
-                            msgThread = threadDao.getThreadById(message.getThreadId());
-                        } catch (SQLException e) {
-                            throw new RuntimeException(e);
-                        }
-                        out.println("<div class=\"message\">");
-                        out.println("<h3 class=\"msgThread\">" + msgThread.getThreadName() + "</h3>");
-                        out.println("<p class=\"msgContent\">" + message.getContent() + "</p>");
-
-                        out.println("<form action=\"http://localhost:8080/s4a021-web-backend/PostMessage\" method=\"post\">");
-                        out.println("<textarea name=\"message\" rows=\"2\" cols=\"30\" placeholder=\"Post a message in this thread\"></textarea>");
-                        out.println("<input name=\"threadid\" type=\"hidden\" value=\"" + msgThread.getId() +"\">");
-                        out.println("<button type=\"submit\">Post</button>");
-                        out.println("</form>");
-
-                        // like/unlike : formulaire 
-                        // donc appel d'une servlet qui n'exécute que du code pour appeler la méthode de réaction au message
-                        // et redirection sur cette page qui affiche pour chaque message s'il est liké ou pas (voir comment faire pour l'affichage)
-                        out.println("<form><button class=\"react\" type=\"submit\" value=\"Like\">Like</button></form>");
-                        out.println("</div>");
+            out.println("<h1>Welcome to CampusTalk, " + login + " !</h1>");
+
+            out.println(PageGeneration.generateNavMenu());
+
+            if (!messages.isEmpty()) {
+                for (Message message : messages) {
+                    MyThread msgThread;
+                    try {
+                        msgThread = threadDao.getThreadById(message.getThreadId());
+                    } catch (SQLException e) {
+                        throw new RuntimeException(e);
                     }
-                }
-                else {
-                    out.println("<p class=\"information\">You are not following any thread yet.</p>");
-                }
+                    out.println("<div class=\"message\">");
+                    out.println("<h3 class=\"msgThread\">" + msgThread.getThreadName() + "</h3>");
+                    out.println("<p class=\"msgContent\">" + message.getContent() + "</p>");
 
-                out.println("<div class=\"discover\">");
-                out.println("<a href=\"\">Discover new threads</a>");
-                out.println("<a href=\"http://localhost:8080/s4a021-web-backend/NewThread\">Create a new thread</a>");
-                out.println("</div>");
+                    out.println("<form action=\"http://localhost:8080/s4a021-web-backend/PostMessage\" method=\"post\">");
+                    out.println("<textarea name=\"message\" rows=\"2\" cols=\"30\" placeholder=\"Post a message in this thread\"></textarea>");
+                    out.println("<input name=\"threadid\" type=\"hidden\" value=\"" + msgThread.getId() + "\">");
+                    out.println("<button type=\"submit\">Post</button>");
+                    out.println("</form>");
 
-                out.println("</body>");
-                out.println("<footer>");
-                out.println("Connected as " + login);
-                out.println("</footer>");
-                out.println("</html>");
 
+                    out.println("<form action=\"http://localhost:8080/s4a021-web-backend/LikeMessage\" method=\"post\">");
+
+                    if (liked_messages.contains(message.getMsgId())) {
+                        out.println("<button class=\"liked\" type=\"submit\" value=\"Liked\">Liked</button></form>");
+                    } else {
+                        out.println("<button class=\"unliked\" type\"submit\" value=\"Unliked\">Unliked</button></form>");
+                    }
+                    out.println("</div>");
+                }
+            }
+            else{
+                out.println("<p class=\"information\">You are not following any thread yet.</p>");
             }
 
+            out.println("<div class=\"discover\">");
+            out.println("<a href=\"\">Discover new threads</a>");
+            out.println("<a href=\"http://localhost:8080/s4a021-web-backend/NewThread\">Create a new thread</a>");
+            out.println("</div>");
 
-        } else {
+            out.println("</body>");
+            out.println("<footer>");
+            out.println("Connected as " + login);
+            out.println("</footer>");
+            out.println("</html>");
+        }
+        else {
             res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html");
         }
+    }
 
+    public List<Integer> getLikedMessages(HttpServletRequest req) {
+        List<Integer> liked_messages = new ArrayList<>();
+        if (req.getSession().getAttribute("liked_messages") != null) {
+            liked_messages = (List<Integer>) req.getSession().getAttribute("liked_messages");
+        }
+        else {
+            try {
+                liked_messages = userDao.getLikedMessagesFromUser(user);
+                req.getSession().setAttribute("liked_messages", liked_messages);
+            } catch (SQLException e) {
+                e.getStackTrace();
+            }
+        }
+        return liked_messages;
     }
 
 }
diff --git a/WEB-INF/src/controleurs/FollowThread.java b/WEB-INF/src/controleurs/FollowThread.java
index 4d69a3afe78565cf8aa5fc4410e3338edce29d46..74912c377159d3ea7291bd92ef01d83f9ceb6119 100644
--- a/WEB-INF/src/controleurs/FollowThread.java
+++ b/WEB-INF/src/controleurs/FollowThread.java
@@ -8,7 +8,6 @@ import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
-import java.io.PrintWriter;
 import java.sql.SQLException;
 
 @WebServlet("/FollowThread")
@@ -20,8 +19,6 @@ public class FollowThread {
 
             UserDAO userDao = new UserDAO();
             ThreadDAO threadDao = new ThreadDAO();
-            PrintWriter out = res.getWriter();
-            String login = (String) req.getSession().getAttribute("login");
 
             try {
                 userDao.followThread(user, threadDao.getThreadById((Integer.parseInt(req.getParameter("threadid")))));
diff --git a/WEB-INF/src/controleurs/LikeMessage.java b/WEB-INF/src/controleurs/LikeMessage.java
new file mode 100644
index 0000000000000000000000000000000000000000..39f2c1e2906ae6861514c83b2437cfbdc6f9520d
--- /dev/null
+++ b/WEB-INF/src/controleurs/LikeMessage.java
@@ -0,0 +1,5 @@
+package controleurs;
+
+public class LikeMessage {
+    // à remplir
+}
diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java
index 0e8ec682c0e13a348c9ec60809eb18d90efd7ac6..5a31cad4efe5398ace3b53de3ccf8d0906135673 100644
--- a/WEB-INF/src/dao/UserDAO.java
+++ b/WEB-INF/src/dao/UserDAO.java
@@ -295,4 +295,23 @@ public class UserDAO {
 
         return followDate;
     }
+
+    public List<Integer> getLikedMessagesFromUser(User user) throws SQLException{
+        List<Integer> messages = new ArrayList<>();
+        PreparedStatement ps = this.con.prepareStatement("""
+        SELECT msgID_reactions FROM reactions
+        WHERE userID_reactions = ?
+        """);
+        try {
+            ps.setInt(1, user.getId());
+            ResultSet rs = ps.executeQuery();
+            while(rs.next()){
+                messages.add(rs.getInt(1));
+            }
+        }
+        catch (SQLException sqle) {
+            sqle.getStackTrace();
+        }
+        return messages;
+    }
 }
\ No newline at end of file