I want to put data values from db into Employee
class and then display all values in JSP file. However, an error continues to occur saying that the list is empty.
Employee.java
package employee;import java.util.Date;public class Employee { private int id; private String firstName; private String lastName; private String email; private Date hireDate; public Employee() { } public Employee(int id, String firstName, String lastName, String email, Date hireDate) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.email = email; this.hireDate = hireDate; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getHireDate() { return hireDate; } public void setHireDate(Date hireDate) { this.hireDate = hireDate; } @Override public String toString() { return "Employee{" +"id=" + id +", firstName='" + firstName +'\''+", lastName='" + lastName +'\''+", email='" + email +'\''+", hireDate=" + hireDate +'}'; }}
EmployeeServlet.java
package employee;import jakarta.servlet.RequestDispatcher;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;@WebServlet(urlPatterns="/employees", loadOnStartup = 1)public class EmployeeServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Employee> employees = new ArrayList<>(); String url = "jdbc:mariadb://127.0.0.1:3306/test03"; String user = "root"; String password = "1234"; try { Class.forName("org.mariadb.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); throw new ServletException("JDBC Driver not found."); } try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT id, first_name, last_name, email, hire_date FROM employees")) { while (rs.next()) { Employee employee = new Employee(); employee.setId(rs.getInt("id")); employee.setFirstName(rs.getString("first_name")); employee.setLastName(rs.getString("last_name")); employee.setEmail(rs.getString("email")); employee.setHireDate(rs.getDate("hire_date")); employees.add(employee); } } catch (Exception e) { e.printStackTrace(); } request.setAttribute("employees", employees); RequestDispatcher dispatcher = request.getRequestDispatcher("/employees.jsp"); dispatcher.forward(request, response); }}
employees.jsp
<%@ page import="java.util.List" %><%@ page import="employee.Employee" %><%@ page import="java.util.ArrayList" %><% List<Employee> employees = (List<Employee>) request.getAttribute("employees"); if (employees == null || employees.isEmpty()) { System.out.println("Employee list is empty or null."); }%><table border="1"><tr><th>ID</th><th>First Name</th><th>Last Name</th><th>Email</th><th>Hire Date</th></tr><% if (employees != null) { for (Employee employee : employees) { %><tr><td><%= employee.getId() %></td><td><%= employee.getFirstName() %></td><td><%= employee.getLastName() %></td><td><%= employee.getEmail() %></td><td><%= employee.getHireDate() %></td></tr><% } } else { %><tr><td colspan="5">No data found.</td></tr><% } %></table>
The data clearly exists and seems to have been connected correctly, but when I run it, it is empty.