diff --git a/src/main/java/com/test/bdd/ClientMysql.java b/src/main/java/com/test/bdd/ClientMysql.java new file mode 100644 index 0000000..cf68ac1 --- /dev/null +++ b/src/main/java/com/test/bdd/ClientMysql.java @@ -0,0 +1,55 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.test.bdd; + +import com.test.beans.Client; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; + +/** + * + * @author steve.maingana + */ +public class ClientMysql { + // private Connection laConnexion; + private Statement stmt = null; + private ResultSet result = null; + + // public ClientMysql() { + Connection laConnexion = Connexion.getConnect("192.168.100.100", "bdclient", "adminBDClient", "mdpBDClient"); + // } + + public ArrayList readAll() { + ArrayList clients = new ArrayList(); + + try { + stmt = laConnexion.createStatement(); + + result = stmt.executeQuery("SELECT * FROM client"); + while (result.next()) { + Client client = new Client( + result.getInt("id"), + result.getString("nom"), + result.getString("prenom"), + result.getString("mail") + ); + + clients.add(client); + } + + result.close(); + stmt.close(); + } catch (SQLException ex) { + System.out.println("SQLException : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + + return clients; + } +} diff --git a/src/main/java/com/test/bdd/Connexion.java b/src/main/java/com/test/bdd/Connexion.java new file mode 100644 index 0000000..b50fcf6 --- /dev/null +++ b/src/main/java/com/test/bdd/Connexion.java @@ -0,0 +1,61 @@ +package com.test.bdd; +/* +Connexion.java +Classe permettant d'établir une connexion avec une base de données mySQL +*/ +import java.sql.Connection; +import java.sql.DriverManager; + +public class Connexion { + private static Connection connect; // Variable de connexion + + /** + * Constructeur + * @param serveur nom du serveur, localhost si local + * @param bdd nom de la base de données + * @param nomUtil nom utilisateur + * @param mdp mot de passe lié à l'utilisateur + */ + private Connexion(String serveur, String bdd, String nomUtil, String mdp) { + try { + // 1. Chargement du driver + //Class.forName("com.mysql.jdbc.Driver"); + Class.forName("org.mariadb.jdbc.Driver"); + System.out.println("Driver accessible"); + + // 2. Initialisation des paramètres de connexion + String host = serveur; // Serveur de bd + String dbname = bdd; // Nom bd + String url = "jdbc:mariadb://" + host + "/" + dbname; // url de connexion + url += "?autoReconnect=true"; // Ajout 26/09/2021 + System.out.println("url : "+url); + String user = nomUtil; // nom du user + System.out.println("nomUtil : "+nomUtil); + String passwd = mdp; // mot de passe + System.out.println("mdp : "+mdp); + + // 3. Connexion + connect = (Connection) DriverManager.getConnection(url, user, passwd); + System.out.println("Connexion réussie !"); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Retourne la connection établie (Création d'une connection si elle n'existe pas) + * @param serveur nom du serveur, localhost si local + * @param bdd nom de la base de données + * @param nomUtil nom utilisateur + * @param mdp mot de passe lié à l'utilisateur + * @return connection établie + */ + public static Connection getConnect(String serveur, String bdd, String nomUtil, String mdp) { + System.out.println("getConnect"); + if (connect == null) { + new Connexion(serveur, bdd, nomUtil, mdp); + } + return connect; + } +} diff --git a/src/main/java/com/test/beans/Client.java b/src/main/java/com/test/beans/Client.java new file mode 100644 index 0000000..83b6e05 --- /dev/null +++ b/src/main/java/com/test/beans/Client.java @@ -0,0 +1,57 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.test.beans; + +/** + * + * @author steve.maingana + */ +public class Client { + private int id; + private String nom; + private String prenom; + private String mail; + + public Client(int id, String nom, String prenom, String mail) { + this.id = id; + this.nom = nom; + this.prenom = prenom; + this.mail = mail; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getPrenom() { + return prenom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + public String getMail() { + return mail; + } + + public void setMail(String mail) { + this.mail = mail; + } + + +} diff --git a/src/main/java/com/test/beans/User.java b/src/main/java/com/test/beans/User.java new file mode 100644 index 0000000..bc83dea --- /dev/null +++ b/src/main/java/com/test/beans/User.java @@ -0,0 +1,48 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.test.beans; + +/** + * + * @author steve.maingana + */ +public class User { + private String pseudo; + private String motDePasse; + + public User(String pseudo, String motDePasse) { + this.pseudo = pseudo; + this.motDePasse = motDePasse; + } + + public String getPseudo() { + return this.pseudo; + } + + private String getMDP() { + return this.motDePasse; + } + + public void setPseudo(String pseudo) { + this.pseudo = pseudo; + } + + public void setMDP(String MDP) { + this.motDePasse = MDP; + } + + @Override + public boolean equals(Object user) { + boolean resultat = false; + if (user.getClass().equals(this.getClass())) { + User toCompare = (User) user; + if (this.getPseudo().equals(toCompare.getPseudo()) && this.getMDP().equals(toCompare.getMDP())) { + resultat = true; + } + } + + return resultat; + }; +} diff --git a/src/main/java/com/test/forms/AuthentifForm.java b/src/main/java/com/test/forms/AuthentifForm.java new file mode 100644 index 0000000..9c68635 --- /dev/null +++ b/src/main/java/com/test/forms/AuthentifForm.java @@ -0,0 +1,40 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.test.forms; + +import com.test.beans.User; +import jakarta.servlet.http.HttpServletRequest; + +/** + * + * @author steve.maingana + */ +public class AuthentifForm { + public String resultat; + + public AuthentifForm() {}; + + public String getResultat() { + return this.resultat; + } + + public void setResultat(String resultat) { + this.resultat = resultat; + } + + public boolean controlerAdmin(HttpServletRequest request) { + User admin = new User("Lovelace", "Ada"); + User userSaisi = new User(request.getParameter("pseudo"), request.getParameter("mdp")); + boolean estAdmin = admin.equals(userSaisi); + + if (estAdmin) { + this.setResultat("Vous êtes administrateur"); + } else { + this.setResultat("Vous n'êtes pas administrateur"); + } + + return estAdmin; + } +} diff --git a/src/main/java/com/test/servlets/AccueilServlet.java b/src/main/java/com/test/servlets/AccueilServlet.java index 5f32241..c012ab6 100644 --- a/src/main/java/com/test/servlets/AccueilServlet.java +++ b/src/main/java/com/test/servlets/AccueilServlet.java @@ -21,8 +21,6 @@ import jakarta.servlet.http.HttpServletResponse; @WebServlet(name = "AccueilServlet", urlPatterns = {"/Accueil"}) public class AccueilServlet extends HttpServlet { - String monPseudo = "steve.mngn"; - String monMdp = "1234"; /** * Processes requests for both HTTP GET and POST * methods. @@ -81,14 +79,6 @@ public class AccueilServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String pseudo = (String) request.getParameter("pseudo"); - String mdp = (String) request.getParameter("mdp"); - if (!pseudo.isBlank() && !mdp.isBlank()) { - if (pseudo.equals(this.monPseudo) && mdp.equals(this.monMdp)) { - request.setAttribute("login", true); - } - } - RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/accueilVue.jsp"); dispatcher.forward(request, response); } diff --git a/src/main/java/com/test/servlets/AuthentifServlet.java b/src/main/java/com/test/servlets/AuthentifServlet.java new file mode 100644 index 0000000..12e4751 --- /dev/null +++ b/src/main/java/com/test/servlets/AuthentifServlet.java @@ -0,0 +1,110 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template + */ +package com.test.servlets; + +import com.test.forms.AuthentifForm; +import jakarta.servlet.RequestDispatcher; +import java.io.IOException; +import java.io.PrintWriter; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * + * @author steve.maingana + */ + +@WebServlet(name = "AuthentifServlet", urlPatterns = {"/authentification"}) + +public class AuthentifServlet extends HttpServlet { + // String monPseudo = "Lovelace"; + String monPseudo = "steve"; + String monMdp = "Ada"; + + /** + * Processes requests for both HTTP GET and POST + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + try (PrintWriter out = response.getWriter()) { + /* TODO output your page here. You may use following sample code. */ + out.println(""); + out.println(""); + out.println(""); + out.println("Servlet AuthentifServlet"); + out.println(""); + out.println(""); + out.println("

Servlet AuthentifServlet at " + request.getContextPath() + "

"); + out.println(""); + out.println(""); + } + } + + // + /** + * Handles the HTTP GET method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Handles the HTTP POST method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String pseudo = (String) request.getParameter("pseudo"); + String mdp = (String) request.getParameter("mdp"); + if (!pseudo.isBlank() && !mdp.isBlank()) { + if (pseudo.equals(this.monPseudo) && mdp.equals(this.monMdp)) { + request.setAttribute("login", true); + } + } + + AuthentifForm authentification = new AuthentifForm(); + boolean isAdmin = authentification.controlerAdmin(request); + + request.setAttribute("authentification", authentification); + request.setAttribute("admin", isAdmin); + + RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/accueilVue.jsp"); + dispatcher.forward(request, response); + } + + /** + * Returns a short description of the servlet. + * + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// + +} diff --git a/src/main/java/com/test/servlets/ListeServlet.java b/src/main/java/com/test/servlets/ListeServlet.java index f7ebb6e..d15ab96 100644 --- a/src/main/java/com/test/servlets/ListeServlet.java +++ b/src/main/java/com/test/servlets/ListeServlet.java @@ -4,6 +4,8 @@ */ package com.test.servlets; +import com.test.bdd.ClientMysql; +import com.test.beans.Client; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletException; @@ -11,6 +13,7 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.util.ArrayList; /** * @@ -59,7 +62,11 @@ public class ListeServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // processRequest(request, response); + ClientMysql clientDB = new ClientMysql(); + ArrayList clients = clientDB.readAll(); + + request.setAttribute("clients", clients); + getServletContext().getRequestDispatcher("/WEB-INF/listeClientsVue.jsp").forward(request, response); } diff --git a/src/main/webapp/WEB-INF/accueilVue.jsp b/src/main/webapp/WEB-INF/accueilVue.jsp index e803292..549b71b 100644 --- a/src/main/webapp/WEB-INF/accueilVue.jsp +++ b/src/main/webapp/WEB-INF/accueilVue.jsp @@ -11,12 +11,23 @@ <%@include file="jspf/entete.jspf" %> <%@include file="jspf/menu.jspf" %> -

Bienvenue sur la nouvelle application de gestion des clients écrite avec JakartaEE

+

Gestion de clients

<%@ include file="jspf/login.jspf" %>

Bienvenue ${param.pseudo} !

+ + +

${authentification.getResultat()}

+
+ +

${authentification.getResultat()}

+
+
+

+ ${login} +

diff --git a/src/main/webapp/WEB-INF/jspf/entete.jspf b/src/main/webapp/WEB-INF/jspf/entete.jspf index cfae8a9..4bd5c1c 100644 --- a/src/main/webapp/WEB-INF/jspf/entete.jspf +++ b/src/main/webapp/WEB-INF/jspf/entete.jspf @@ -4,4 +4,7 @@ Gestion des clients + diff --git a/src/main/webapp/WEB-INF/jspf/login.jspf b/src/main/webapp/WEB-INF/jspf/login.jspf index dd29e04..4e625a9 100644 --- a/src/main/webapp/WEB-INF/jspf/login.jspf +++ b/src/main/webapp/WEB-INF/jspf/login.jspf @@ -1,6 +1,6 @@ <%-- any content can be specified here e.g.: --%> <%@ page pageEncoding="UTF-8" %> -
+

diff --git a/src/main/webapp/WEB-INF/listeClientsVue.jsp b/src/main/webapp/WEB-INF/listeClientsVue.jsp index 7db3511..adc2ab6 100644 --- a/src/main/webapp/WEB-INF/listeClientsVue.jsp +++ b/src/main/webapp/WEB-INF/listeClientsVue.jsp @@ -4,6 +4,7 @@ Author : steve.maingana --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@page contentType="text/html" pageEncoding="UTF-8"%> @@ -11,6 +12,10 @@ <%@include file="jspf/menu.jspf" %>

Liste des clients

-

Page en construction

+
    + +
  • ${client.getNom()}
  • +
    +
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index ad52cb3..9d75088 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -12,6 +12,10 @@ ListeServlet com.test.servlets.ListeServlet + + AuthentifServlet + com.test.servlets.AuthentifServlet + AccueilServlet /Accueil @@ -28,6 +32,10 @@ ListeServlet /ListeClients + + AuthentifServlet + /authentification + 30 diff --git a/src/main/webapp/style/style.css b/src/main/webapp/style/style.css index eab5097..ecb1045 100644 --- a/src/main/webapp/style/style.css +++ b/src/main/webapp/style/style.css @@ -6,32 +6,53 @@ Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/CascadeStyleSheet.css Created on : 15 sept. 2025, 14:59:25 Author : steve.maingana */ - +:root { + --primary-color: #cc0000; + --secondary-color: #990000; + --font-style: "Comic Relief", system-ui; +} body { background-color: whitesmoke; - + margin: 0; + font-style: var(--font-style); } nav { - display: flex; + background-color: var(--primary-color); justify-content: center; align-items: center; + width: 100%; + padding: 1.2rem; top: 0; left: 0; - width: 100%; - } nav ul { + color: white; list-style: none; display: flex; gap: 1rem; } -nav ul li { +nav a { text-decoration: none; + color: white; +} + +h1 { + text-align: center; + font-weight: bold; } form { - margin: 2rem; - background: #333333; + text-align: center; + margin: 8rem; + padding: 2rem; + background-color: var(--secondary-color); border-radius: 8px; border-style: none; +} + +form label { + margin: auto; + padding-bottom: 1rem; + color: white; + font-weight: bold; } \ No newline at end of file