Важно отделить логику вашей базы данных от сервлета, это значительно облегчает управление.Также полезно создать отдельный класс для соединения с базой данных.Причина, по которой вы не получаете никаких результатов, заключается в том, что в вашем классе UserDao вы не получаете никаких результатов из ResultSet.
Создайте класс для подключения к вашей базе данных.Мы можем обратиться к этому в любое время, когда мы хотим получить доступ к базе данных.
public class DBConnection {
private static String url = null;
private static Connection conn = null;
public static Connection getConnection(){
try{
Class.forName("com.mysql.jdbc.Driver");
url = "jdbc:mysql://localhost:3306/usuarios";
conn = DriverManager.getConnection(url,"root","admin");
} catch (Exception e) {
System.out.println(e);
}
return conn;
}
}
и наш метод adminPanel из класса UserDao:
//Now we can use this like this, i looked at your code and saw you wanted to have a list of UserBean objects.. we can do that like this:
public List<UserBean> adminPanel(){
ArrayList<UserBean> users = new ArrayList<UserBean>();
//get connection from our DBConneciton class we created earlier
try(Connection conn= DBConnection.getConnection()){
//create our sql statement
PreparedStatement pst = conn.prepareStatement("select firstname,lastname,username,tipo from idusuario;");
//execute query
pst.executeQuery();
//now get results
ResultSet rs = pst.executeQuery();
//while ResultSet has results
while (rs.next()) {
//create new user object to hold the info in
UserBean user = new UserBean();
//get the results from resultset
String firstname = rs.getString(1);
String lastname = rs.getString(2);
String username = rs.getString(3);
int type = rs.getInt(4);
//set results to user object
user.setFirstName(firstname);
user.setLastName(lastname);
user.setUserName(username);
user.setType(type);
users.add(user); //add userobject to list of userobjects
}
} catch (SQLException e) {
e.printStackTrace();
}
//we don't need to close our db connection because the try statement does it for us
return users; //return list of users
}
Теперь для доступа к этому все, что нам нужно сделать в нашем сервлете, это:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserDAO u = new UserDAO(); //instantiate class
//get our list of users
List<UserBean> users = u.adminPanel();
//set our list to request
request.setAttribute("memberList", users);
//forward to jsp page
RequestDispatcher rs = request.getRequestDispatcher("AdminPanel.jsp");
rs.forward(request, response);
}
все на вашем jsp выглядит нормально, поэтому должно работать, дайте мне знать, если у вас есть какие-либо вопросы или проблемы
РЕДАКТИРОВАТЬ: некоторые идеи отладки:
В вашем сервлете сделайте эточтобы увидеть, насколько велик ваш список пользователей:
...
//get our list of users
List<UserBean> users = u.adminPanel();
//check if we are actually getting something from the database
System.out.println(users.size());
Если размер равен 0, то это означает, что с нашим запросом что-то не так.Проверьте, получаете ли вы что-нибудь из своей базы данных, если вы вручную запрашиваете в базе данных следующий запрос:
select firstname,lastname,username,tipo from idusuario;
РЕДАКТИРОВАТЬ 2
Попробуйте удалить <c:out tags:
<c:forEach var="row" items="${memberList}">
<tr>
<td>${row.firstname}</td>
<td>${row.lastname}</td>
<td>${row.username}</td>
<td>${row.type}</td>
<td><a href="AdminPanel.jsp" name="Edit">Habilitar usuario</a> </td>
</tr>
</c:forEach>