Importation de données de cours via JSP et connexion à une base de données

Ce guide explique comment importer des informations de cours dans une base de données MySQL à l'aide de JSP, après avoir installé MySQL, le pilote JDBC, Navicat, Apache Tomcat, et configuré les variables d'environnement et le déploiement dans IntelliJ IDEA.

Vous pouvez inspecter la base de données depuis IntelliJ IDEA ou utiliser Navicat pour une gestion visuelle.

Deux fichiers JSP sont nécessaires : l'un pour le formulaire HTML de saisie, l'autre pour le traitement et l'nisertion en base.

Fichier de traitement (insertion.jsp)

<%@ page import="java.sql.*" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%
    request.setCharacterEncoding("UTF-8");
    String message = "Veuillez ressaisir les informations";
    String courseName = request.getParameter("course_name");
    String instructor = request.getParameter("instructor");
    String location = request.getParameter("classroom");

    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/ecole?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC";
        String user = "root";
        String password = "mot_de_passe";
        
        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement checkStmt = conn.prepareStatement("SELECT COUNT(*) FROM cours WHERE nom = ?");
             PreparedStatement insertStmt = conn.prepareStatement("INSERT INTO cours (nom, enseignant, salle) VALUES (?, ?, ?)")) {
            
            // Vérifier si le cours existe déjà
            checkStmt.setString(1, courseName);
            try (ResultSet rs = checkStmt.executeQuery()) {
                rs.next();
                if (rs.getInt(1) == 0) {
                    // Insertion
                    insertStmt.setString(1, courseName);
                    insertStmt.setString(2, instructor);
                    insertStmt.setString(3, location);
                    insertStmt.executeUpdate();
                    message = "Enregistrement réussi";
                } else {
                    message = "Ce cours existe déjà";
                }
            }
        }
        request.setAttribute("msg", message);
    } catch (Exception e) {
        out.println("Erreur de connexion : " + e.getMessage());
    }
%>
<html>
<body style="background: #FFE4B5;">
    <div style="text-align: center;">
        <h2 style="color: brown;"><strong><font size="10">${msg}</font></strong></h2>
        <form action="formulaire.jsp">
            <input type="submit" value="Retour" style="color: darkblue; font-size: 35px; background: khaki; border-radius: 15px;" />
        </form>
    </div>
</body>
</html>

Fichier formulaire (formulaire.jsp)

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Saisie des cours</title>
    <style>
        body {
            width: 100%;
            background-repeat: no-repeat;
            background-size: cover;
        }
        .carte {
            float: right;
            margin-right: 20vh;
            margin-top: 15vh;
            opacity: 0.8;
            height: auto;
            width: 50vh;
            background: #CCFF80;
            border-radius: 20px;
            padding: 20px;
        }
        .titre {
            font-size: 30px;
            text-align: center;
        }
        .champs {
            margin-top: 20px;
            font-size: 20px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="carte">
        <div class="titre">Ajout de cours</div>
        <div class="champs">
            <form action="insertion.jsp" method="post">
                Nom du cours : <input type="text" name="course_name" required /><br><br>
                Enseignant : <input type="text" name="instructor" required /><br><br>
                Salle : <select name="classroom">
                    <option value="Amphi A">Amphi A</option>
                    <option value="Salle 101">Salle 101</option>
                    <option value="Salle 202">Salle 202</option>
                    <option value="Labo info">Labo info</option>
                </select><br><br>
                <input type="submit" value="Ajouter" style="width:240px;height:30px;margin-top:25px;background:#B7FF4A;" />
            </form>
        </div>
    </div>
</body>
</html>

Note : les mots de passe et configurations sont fournis à titre d'exemple. Adaptez-les à votre environnement.

Étiquettes: JSP JDBC MySQL Préparation de requêtes Prévention d'injection SQL

Publié le 14 juillet à 22h31