Либо выполните пересылку без вывода:
try {
CakeDAO dao = new CakeDAO();
String strID = request.getParameter("id");
int id = Integer.parseInt(strID);
request.setAttribute("cake", dao.getCakeById(id));
request.getRequestDispatcher("/WEB-INF/detail.jsp").forward(request, response);
} catch (Exception ex) {
request.getRequestDispatcher("/WEB-INF/error.jsp").forward(request, response);
}
, либо выполните:
try {
CakeDAO dao = new CakeDAO();
String strID = request.getParameter("id");
int id = Integer.parseInt(strID);
PrintWriter out = response.getWriter();
out.println("Cake: " + dao.getCakeById(id)); // Hereafter an exception would err.
// NEVER forward: ... .forward(request, response);
} catch (Exception ex) {
request.getRequestDispatcher("/WEB-INF/error.jsp").forward(request, response);
}
Try-with-resources автоматически закрывается и не требуется.При пересылке даже возникает ошибка.
Что более важно, без получения писателя, вам лучше.После того, как выходные данные действительно записаны (буферизованный ввод / вывод!), Пересылка ошибочна, поэтому пересылка в catch грязная.