Hey guys! I am learning Java Servlets and trying to exercise with a project of my own. I am using two MySQL tables Users & Users Phones.
As you can see from the attached files, each user can have multiple phone numbers.
However I fail to make a jsp view of this records.
These are my two DB tables:
Users[
^]
User's phone numbers[
^]
What I have tried:
UserPOJO
public class User {
private int id;
private String username;
private String email;
private String password;
private List<String> userPhoneNumbers = new ArrayList<>();
public User() { }
public User(String username, String email, String password, List<String> userPhoneNumbers) {
this.username = username;
this.email = email;
this.password = password;
this.userPhoneNumbers = userPhoneNumbers;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<String> getUserPhoneNumbers() {
return userPhoneNumbers;
}
public void setUserPhoneNumbers(List<String> userPhoneNumbers) {
this.userPhoneNumbers = userPhoneNumbers;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", email='" + email + '\'' +
", password='" + password + '\'' +
", userGroupId=" + userGroupId +
", userGroupName=" + userGroupName +
", userPhoneNumbers=" + userPhoneNumbers +
"} \n";
}
}
UserDAO
public class UserDao {
private static final String FIND_ALL_USERS_QUERY =
"select *"+
" from users"+
" inner join users_phone_nums"+
" where users.id=users_phone_nums.user_id";
public List<User> findAll() {
return getUsers(-1, FIND_ALL_USERS_QUERY);
}
private List<User> getUsers(int id, String query) {
try (Connection conn = DbUtil.getConnection()) {
List<User> users = new ArrayList<>();
PreparedStatement statement = conn.prepareStatement(query);
if (id != -1) {
statement.setInt(1, id);
}
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("username"));
user.setEmail(resultSet.getString("email"));
user.setPassword(resultSet.getString("password"));
System.out.println("----->>>>> " + user);
users.add(user);
}
return users;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
UserServlet
@WebServlet("/admin/user")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserDao userDao = new UserDao();
request.setAttribute("users", userDao.findAll());
getServletContext().getRequestDispatcher("/web/user/listUserAdmin.jsp").forward(request, response);
}
}
the jsp
<table>
<thead>
<tr>
<th>ID</th>
<th>Username</th>
<th>Email</th>
<th>Password</th>
<th>User Phone</th>
</tr>
</thead>
<tbody>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.email}</td>
<td>${user.password}</td>
<td>
How To View Phone Numbers?
in
Dropdown and Another <c:forEach> List with Options </c:forEach>
</td>
</tr>
</c:forEach>
</tbody>
</table>