Recuperação de Informações de Funcionários com MVC e Servlet

JavaBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como implementar um recurso de recuperação de informações de funcionários usando a arquitetura MVC e Servlet 2.x. Você criará uma caixa de pesquisa na página de índice onde os usuários podem inserir o ID do funcionário para pesquisar e, em seguida, exibir as informações do funcionário em uma página separada.

👀 Visualização

Pré-visualização do resultado da pesquisa de funcionários

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar uma caixa de pesquisa na página de índice para permitir que os usuários insiram o ID do funcionário
  • Como implementar a classe de entidade para representar os dados do funcionário
  • Como implementar a classe utilitária JDBC para obter uma conexão com o banco de dados
  • Como implementar a classe DAO para recuperar informações do funcionário do banco de dados
  • Como implementar a classe controller para lidar com as requisições e encaminhar os dados do funcionário para a página JSP
  • Como implementar a página JSP para exibir as informações do funcionário pesquisado

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Usar a arquitetura MVC para estruturar sua aplicação web
  • Usar Servlet 2.x para lidar com requisições e respostas HTTP
  • Interagir com um banco de dados usando JDBC
  • Usar JSP para exibir dados dinâmicos em uma página web

Criar a Caixa de Pesquisa

Nesta etapa, você criará uma caixa de pesquisa na página de índice onde os usuários podem inserir o ID do funcionário para pesquisar.

  1. Abra o arquivo index.jsp localizado no diretório EmployeeInfo/src/main/webapp.

  2. Adicione o seguinte código HTML para criar a caixa de pesquisa:

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

Este formulário enviará uma requisição GET para a URL /findEmpByEid com o parâmetro employeeId quando o usuário clicar no botão "search".

Implementar a Classe Entidade Employee

Nesta etapa, você implementará a classe de entidade Employee.java com base nos campos da tabela employees.

  1. Abra o arquivo Employee.java localizado no diretório EmployeeInfo/src/main/java/org/labex/entity.

  2. Adicione o seguinte código para definir os campos e seus respectivos getters e setters:

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

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

    // Implement the rest of the getters and setters
}

Implementar a Classe Utilitária JDBC

Nesta etapa, você implementará a classe JdbcUtil.java para fornecer um método para obter uma conexão com o banco de dados.

  1. Abra o arquivo JdbcUtil.java localizado no diretório EmployeeInfo/src/main/java/org/labex/jdbc.

  2. Adicione o seguinte código para implementar o 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 retornará uma conexão com o banco de dados usando a URL, o nome de usuário e a senha fornecidos.

Implementar a Classe DAO

Nesta etapa, você implementará a classe EmployeeDao.java para fornecer um método para recuperar informações do funcionário.

  1. Abra o arquivo EmployeeDao.java localizado no diretório EmployeeInfo/src/main/java/org/labex/dao.

  2. Adicione o seguinte código para implementar o 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 usa o método getConn() de JdbcUtil.java para obter uma conexão com o banco de dados e, em seguida, usa o ID do funcionário passado do controlador para consultar o banco de dados e retornar um objeto Employee.

Implementar a Classe Controller

Nesta etapa, você implementará a classe EmployeeController.java para lidar com as requisições para recuperar informações do funcionário.

  1. Abra o arquivo EmployeeController.java localizado no diretório EmployeeInfo/src/main/java/org/labex/controller.

  2. Adicione o seguinte código para implementar os métodos doGet() e 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);
    }
}

O método doGet() recupera o parâmetro employeeId da requisição, usa a classe EmployeeDao para obter as informações do funcionário, armazena-as na requisição e, em seguida, encaminha a requisição para a página info.jsp para exibir as informações do funcionário.

Implementar a Página JSP

Nesta etapa, você implementará o arquivo info.jsp para exibir as informações do funcionário consultado.

  1. Abra o arquivo info.jsp localizado no diretório EmployeeInfo/src/main/webapp.

  2. Adicione o seguinte código para criar uma tabela para exibir as informações do funcionário:

<%@ page import="org.labex.entity.Employee" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Employee Information</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>Name</th>
                <th>Gender</th>
                <th>Phone Number</th>
                <th>Email</th>
                <th>Address</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><%= employee.getId() %></td>
                <td><%= employee.getName() %></td>
                <td><%= employee.getGender() == 1 ? "man" : "woman" %></td>
                <td><%= employee.getPhone() %></td>
                <td><%= employee.getEmail() %></td>
                <td><%= employee.getAddress() %></td>
            </tr>
        </tbody>
    </table>
    <% } else { %>
    <p>Information not found.</p>
    <% } %>
</body>
</html>

Esta página JSP recupera o objeto employee da requisição e, em seguida, exibe as informações do funcionário em uma tabela.

  1. Mude para o diretório EmployeeInfo e use o seguinte comando para iniciar o serviço.
cd ~/project/EmployeeInfo/
mvn clean tomcat7:run

O resultado esperado das informações do funcionário consultado é o seguinte:

Employee information table result

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar