как сообщение из сервлета и отображения в jsp
Я пытаюсь сделать что-то, что выглядит маленьким, но это не удается. Я пытаюсь отправить ответное сообщение обратно в jsp, когда вход в систему не удается, но не может. На данный момент я могу только перенаправить обратно в jsp, но не могу отобразить сообщение от сервлета на нем. Это часть сервлета перенаправления:
if (count > 0) {
res.sendRedirect("adminHome.jsp");
} else {
res.sendRedirect("index.jsp");
}
Я попытался распечатать сообщение с помощью PrintWriter и перенаправления, но не удалось, потому что я не мог получить, как получить сообщение в JSP. Я также читал, что я не должен перенаправление, но, скорее, я должен просто вперед от сервлета. Как я могу это сделать? Пожалуйста, помогите с исправлением кода для пересылки из сервлета, а также для получения в JSP. Спасибо
3 ответов
если вы настаиваете на использовании перенаправления вместо переадресации, то у вас есть 2 варианта:
-
передать сообщение в качестве параметра запроса
String message = "hello"; res.sendRedirect("adminHome.jsp?message=" + URLEncoder.encode(message, "UTF-8"));
, так что вы можете отобразить его в JSP следующим образом
<p>Message: ${param.message}</p>
это видно только в адресной строке браузера, а также и вы не сможете пройти нестандартные объекты Java таким образом.
-
сохраните его в сеансе
String message = "hello"; req.getSession().setAttribute("message", message); res.sendRedirect("adminHome.jsp");
, так что вы можете отображать (и удалить) это в JSP следующим образом:
<p>Message: ${message}</p> <c:remove var="message" scope="session" />
удаление важно, иначе он застрянет там на весь сеанс.
однако, если вы открыты для использования forward вместо redirect, это более элегантно:
String message = "hello";
req.setAttribute("message", message);
req.getRequestDispatcher("/adminHome.jsp").forward(req, res);
и отобразить его следующим образом в JSP
<p>Message: ${message}</p>
Читайте также:
- наша страница wiki сервлетов - содержит Привет мир, который также лечит messaging
-
страница El wiki - объясняет все о тех
${}
вещи.
установите сообщение в качестве атрибута объекта запроса:
request.setAttribute("message", messageString);
используйте RequestDispatcher для отправки объектов запроса и ответа в jsp:
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("urlString");
dispatcher.forward(request, response);
доступ к нему в вашем JSP с помощью синтаксиса языка выражений:
${message}
вы можете сохранить сообщение в запросе, а затем переслать его в jsp, а не перенаправлять.
request.setAttribute("msg", "The actual error message to be displayed");
RequestDispatcher rd = getServletContext().getRequestDispatcher("/yourpage.jsp");
rd.forward(request, response);
затем на странице jsp у вас есть доступ к сообщению через запрос.