Recuperación de información de empleados con MVC y Servlet

JavaBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderá a implementar una característica de recuperación de información de empleados utilizando la arquitectura MVC y Servlet2.x. Creará una caja de búsqueda en la página de índice donde los usuarios pueden ingresar el ID del empleado para realizar una búsqueda, y luego mostrar la información del empleado en una página separada.

👀 Vista previa

Vista previa del resultado de búsqueda de empleados

🎯 Tareas

En este proyecto, aprenderá:

  • Cómo crear una caja de búsqueda en la página de índice para permitir que los usuarios ingresen el ID del empleado
  • Cómo implementar la clase entidad para representar los datos del empleado
  • Cómo implementar la clase utilitaria JDBC para obtener una conexión a la base de datos
  • Cómo implementar la clase DAO para recuperar la información del empleado de la base de datos
  • Cómo implementar la clase controlador para manejar las solicitudes y redirigir los datos del empleado a la página JSP
  • Cómo implementar la página JSP para mostrar la información del empleado consultada

🏆 Logros

Después de completar este proyecto, podrá:

  • Utilizar la arquitectura MVC para estructurar su aplicación web
  • Utilizar Servlet2.x para manejar solicitudes y respuestas HTTP
  • Interactuar con una base de datos utilizando JDBC
  • Utilizar JSP para mostrar datos dinámicos en una página web

Crear la caja de búsqueda

En este paso, creará una caja de búsqueda en la página de índice donde los usuarios pueden ingresar el ID del empleado para realizar una búsqueda.

  1. Abra el archivo index.jsp ubicado en el directorio EmployeeInfo/src/main/webapp.

  2. Agregue el siguiente código HTML para crear la caja de búsqueda:

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

Este formulario enviará una solicitud GET a la URL /findEmpByEid con el parámetro employeeId cuando el usuario haga clic en el botón "search".

Implementar la clase entidad de empleado

En este paso, implementará la clase entidad Employee.java basada en los campos de la tabla employees.

  1. Abra el archivo Employee.java ubicado en el directorio EmployeeInfo/src/main/java/org/labex/entity.

  2. Agregue el siguiente código para definir los campos y sus respectivos getters y setters:

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

    // Getters y setters
    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;
    }

    // Implemente el resto de los getters y setters
}

Implementar la clase utilitaria de JDBC

En este paso, implementará la clase JdbcUtil.java para proporcionar un método para obtener una conexión a la base de datos.

  1. Abra el archivo JdbcUtil.java ubicado en el directorio EmployeeInfo/src/main/java/org/labex/jdbc.

  2. Agregue el siguiente código para implementar el método 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;
    }
}

Este método devolverá una conexión a la base de datos utilizando la URL, nombre de usuario y contraseña proporcionados.

Implementar la clase DAO

En este paso, implementará la clase EmployeeDao.java para proporcionar un método para recuperar la información del empleado.

  1. Abra el archivo EmployeeDao.java ubicado en el directorio EmployeeInfo/src/main/java/org/labex/dao.

  2. Agregue el siguiente código para implementar el método 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;
    }
}

Este método utiliza el método getConn() de JdbcUtil.java para obtener una conexión a la base de datos, y luego utiliza el ID del empleado pasado por el controlador para consultar la base de datos y devolver un objeto Employee.

Implementar la clase Controlador

En este paso, implementará la clase EmployeeController.java para manejar las solicitudes para recuperar la información del empleado.

  1. Abra el archivo EmployeeController.java ubicado en el directorio EmployeeInfo/src/main/java/org/labex/controller.

  2. Agregue el siguiente código para implementar los métodos doGet() y 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);
    }
}

El método doGet() recupera el parámetro employeeId de la solicitud, utiliza la clase EmployeeDao para obtener la información del empleado, la almacena en la solicitud y luego redirige la solicitud a la página info.jsp para mostrar la información del empleado.

Implementar la página JSP

En este paso, implementará el archivo info.jsp para mostrar la información del empleado consultada.

  1. Abra el archivo info.jsp ubicado en el directorio EmployeeInfo/src/main/webapp.

  2. Agregue el siguiente código para crear una tabla para mostrar la información del empleado:

<%@ page import="org.labex.entity.Employee" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Información del empleado</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>Nombre</th>
                <th>Género</th>
                <th>Número de teléfono</th>
                <th>Email</th>
                <th>Dirección</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><%= employee.getId() %></td>
                <td><%= employee.getName() %></td>
                <td><%= employee.getGender() == 1? "hombre" : "mujer" %></td>
                <td><%= employee.getPhone() %></td>
                <td><%= employee.getEmail() %></td>
                <td><%= employee.getAddress() %></td>
            </tr>
        </tbody>
    </table>
    <% } else { %>
    <p>No se encontró información.</p>
    <% } %>
</body>
</html>

Esta página JSP recupera el objeto employee de la solicitud y luego muestra la información del empleado en una tabla.

  1. Cambie al directorio EmployeeInfo y use el siguiente comando para iniciar el servicio.
cd ~/project/EmployeeInfo/
mvn clean tomcat7:run

El resultado esperado de la información del empleado consultada es el siguiente:

Resultado de la tabla de información del empleado

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar