Récupération d'informations sur les employés avec MVC et Servlet

JavaBeginner
Pratiquer maintenant

Introduction

Dans ce projet, vous allez apprendre à implémenter une fonction de récupération d'informations sur les employés en utilisant l'architecture MVC et Servlet2.x. Vous créerez une zone de recherche sur la page d'accueil où les utilisateurs peuvent saisir l'identifiant de l'employé à rechercher, puis afficher les informations de l'employé sur une page séparée.

👀 Aperçu

Aperçu des résultats de recherche d'employé

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment créer une zone de recherche sur la page d'accueil pour permettre aux utilisateurs de saisir l'identifiant de l'employé
  • Comment implémenter la classe d'entité pour représenter les données des employés
  • Comment implémenter la classe utilitaire JDBC pour obtenir une connexion à la base de données
  • Comment implémenter la classe DAO pour récupérer les informations des employés à partir de la base de données
  • Comment implémenter la classe contrôleur pour gérer les requêtes et transférer les données des employés à la page JSP
  • Comment implémenter la page JSP pour afficher les informations des employés consultées

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Utiliser l'architecture MVC pour structurer votre application web
  • Utiliser Servlet2.x pour gérer les requêtes et les réponses HTTP
  • Interagir avec une base de données à l'aide de JDBC
  • Utiliser JSP pour afficher des données dynamiques sur une page web

Créer la zone de recherche

Dans cette étape, vous allez créer une zone de recherche sur la page d'accueil où les utilisateurs peuvent saisir l'identifiant de l'employé à rechercher.

  1. Ouvrez le fichier index.jsp situé dans le répertoire EmployeeInfo/src/main/webapp.

  2. Ajoutez le code HTML suivant pour créer la zone de recherche :

<form action="/findEmpByEid" method="get">
  <input type="text" name="employeeId" /><input type="submit" value="rechercher" />
</form>

Ce formulaire enverra une requête GET à l'URL /findEmpByEid avec le paramètre employeeId lorsque l'utilisateur clique sur le bouton "rechercher".

Implémenter la classe d'entité Employee

Dans cette étape, vous allez implémenter la classe d'entité Employee.java sur la base des champs de la table employees.

  1. Ouvrez le fichier Employee.java situé dans le répertoire EmployeeInfo/src/main/java/org/labex/entity.

  2. Ajoutez le code suivant pour définir les champs et leurs accesseurs et mutateurs correspondants :

public class Employee {
    private Integer id;
    private String name;
    private Integer gender;
    private String phone;
    private String email;
    private String address;

    // Accesseurs et mutateurs
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    // Implémentez le reste des accesseurs et mutateurs
}

Implémenter la classe utilitaire JDBC

Dans cette étape, vous allez implémenter la classe JdbcUtil.java pour fournir une méthode pour obtenir une connexion à la base de données.

  1. Ouvrez le fichier JdbcUtil.java situé dans le répertoire EmployeeInfo/src/main/java/org/labex/jdbc.

  2. Ajoutez le code suivant pour implémenter la méthode getConn() :

public class JdbcUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/test";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConn() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

Cette méthode retournera une connexion à la base de données en utilisant l'URL, le nom d'utilisateur et le mot de passe fournis.

Implémenter la classe DAO

Dans cette étape, vous allez implémenter la classe EmployeeDao.java pour fournir une méthode pour récupérer les informations des employés.

  1. Ouvrez le fichier EmployeeDao.java situé dans le répertoire EmployeeInfo/src/main/java/org/labex/dao.

  2. Ajoutez le code suivant pour implémenter la méthode getEmployee() :

public class EmployeeDao {
    public Employee getEmployee(Integer employeeId) {
        Connection conn = JdbcUtil.getConn();
        String sql = "select * from employees where employee_id =?";
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        Employee employee = null;
        try {
            preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setInt(1, employeeId);
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                employee = new Employee();
                employee.setId(resultSet.getInt(1));
                employee.setName(resultSet.getString(2));
                employee.setGender(resultSet.getInt(3));
                employee.setPhone(resultSet.getString(4));
                employee.setEmail(resultSet.getString(5));
                employee.setAddress(resultSet.getString(6));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return employee;
    }
}

Cette méthode utilise la méthode getConn() de JdbcUtil.java pour obtenir une connexion à la base de données, puis utilise l'identifiant d'employé passé par le contrôleur pour interroger la base de données et retourner un objet Employee.

Implémenter la classe Contrôleur

Dans cette étape, vous allez implémenter la classe EmployeeController.java pour gérer les requêtes de récupération des informations des employés.

  1. Ouvrez le fichier EmployeeController.java situé dans le répertoire EmployeeInfo/src/main/java/org/labex/controller.

  2. Ajoutez le code suivant pour implémenter les méthodes doGet() et doPost() :

@WebServlet("/findEmpByEid")
public class EmployeeController extends HttpServlet {
    EmployeeDao employeeDao = new EmployeeDao();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String employeeId = req.getParameter("employeeId");
        Employee employee = employeeDao.getEmployee(Integer.parseInt(employeeId));
        req.setAttribute("employee", employee);
        req.getRequestDispatcher("info.jsp").forward(req, resp);
    }
}

La méthode doGet() récupère le paramètre employeeId de la requête, utilise la classe EmployeeDao pour obtenir les informations de l'employé, les stocke dans la requête, puis redirige la requête vers la page info.jsp pour afficher les informations de l'employé.

Implémenter la page JSP

Dans cette étape, vous allez implémenter le fichier info.jsp pour afficher les informations de l'employé consultées.

  1. Ouvrez le fichier info.jsp situé dans le répertoire EmployeeInfo/src/main/webapp.

  2. Ajoutez le code suivant pour créer un tableau pour afficher les informations de l'employé :

<%@ page import="org.labex.entity.Employee" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Informations de l'employé</title>
    <style>
        th, td {
            border: 1px solid black;
            padding: 8px;
        }
    </style>
</head>
<body>
    <% Object employeeObj = request.getAttribute("employee");
    if (employeeObj!= null) {
        Employee employee = (Employee) employeeObj; %>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Nom</th>
                <th>Genre</th>
                <th>Numéro de téléphone</th>
                <th>Email</th>
                <th>Adresse</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><%= employee.getId() %></td>
                <td><%= employee.getName() %></td>
                <td><%= employee.getGender() == 1? "homme" : "femme" %></td>
                <td><%= employee.getPhone() %></td>
                <td><%= employee.getEmail() %></td>
                <td><%= employee.getAddress() %></td>
            </tr>
        </tbody>
    </table>
    <% } else { %>
    <p>Aucune information trouvée.</p>
    <% } %>
</body>
</html>

Cette page JSP récupère l'objet employee de la requête, puis affiche les informations de l'employé dans un tableau.

  1. Basculez dans le répertoire EmployeeInfo et utilisez la commande suivante pour démarrer le service.
cd ~/project/EmployeeInfo/
mvn clean tomcat7:run

Le résultat attendu des informations de l'employé consultées est le suivant :

Résultat du tableau d'informations de l'employé

Résumé

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer