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

🎯 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.
Abra o arquivo
index.jsplocalizado no diretórioEmployeeInfo/src/main/webapp.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.
Abra o arquivo
Employee.javalocalizado no diretórioEmployeeInfo/src/main/java/org/labex/entity.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.
Abra o arquivo
JdbcUtil.javalocalizado no diretórioEmployeeInfo/src/main/java/org/labex/jdbc.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.
Abra o arquivo
EmployeeDao.javalocalizado no diretórioEmployeeInfo/src/main/java/org/labex/dao.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.
Abra o arquivo
EmployeeController.javalocalizado no diretórioEmployeeInfo/src/main/java/org/labex/controller.Adicione o seguinte código para implementar os métodos
doGet()edoPost():
@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.
Abra o arquivo
info.jsplocalizado no diretórioEmployeeInfo/src/main/webapp.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.
- Mude para o diretório
EmployeeInfoe 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:

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



