У меня есть требование для отображения результатов запроса к базе данных в формате таблицы в JSP. Я пробовал различные варианты, используя forEach и не смог достичь. Не могли бы вы помочь получить JSP для результатов БД из метода do Post?
Вот мой сервлет
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
Connection con = null;
Statement sta = null;
String url = "jdbc:mysql://localhost/cass_db";
String dbdriver = "com.mysql.jdbc.Driver";
String username = "app_user";
String password = "passwordxxxx";
try {
Class.forName(dbdriver);
con = DriverManager.getConnection(url, username, password);
sta = con.createStatement();
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String Sql = "Select * from doctors";
ArrayList<String> list = new ArrayList<String>();
String FileName = "/Users/asia/Downloads/test.log";
FileOutputStream file = new FileOutputStream(FileName);
try {
ResultSet rs = sta.executeQuery(Sql);
while (rs.next()) {
file.write(rs.getBytes(5));
file.write(System.getProperty("line.separator").getBytes());
list.add(rs.getString("doctor_nric"));
list.add(rs.getString("doctor_full_name"));
request.setAttribute("results", list);
}
con.close();
file.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.getRequestDispatcher("./DBResults.jsp").forward(request, response);
}
}
Структура таблицы базы данных:
doctor_id, doctor_full_name, doctor_login_name, doctor_password, doctor_nric;
1, 'Daniel Ricciardo', 'dany', 'NZQbTKL2Z8pakBcUME3y/A==', 'G6345688X'
Код JSP здесь
<form action="./DBResults" name="form_DBResults" method="post">
<label> Click here</label> <input type="submit" value="GetDBResults" id="submitBtn" />
</form>
<table border="1">
<c:forEach items="${results}" var="result">
<tr>
<td> <c:out value="${result.doctor_nric}" /></td>
<td> <c:out value="${result.doctor_full_name}" /> </td>
</tr>
</c:forEach>
</table>
Приведенный выше jsp не отображает результаты в виде таблицы, я получаю HTTP Status 500
Внутренняя ошибка сервера @ "<td> <c:out value="${result.doctor_nric}" /></td>"
Если я использую <td> <c:out value="${result}.{doctor_nric}" /></td>
, тогда я получаю результаты, подобные G6345688X.{doctor_nric}
, но я ожидаю результатов переменных базы данных в формате таблицы.
Не могли бы вы помочь установить переменную БД и ее эквивалент в JSP?