我正在尝试做一些看起来很小但失败的事情。登录失败但无法登录时,我正在尝试将响应消息发送回jsp。到目前为止,我只能重定向回jsp,但不能在其上显示来自servlet的消息。这是重定向的servlet部分:
if (count > 0) { res.sendRedirect("adminHome.jsp"); } else { res.sendRedirect("index.jsp"); }
我尝试使用PrintWriter和重定向来打印消息,但失败了,因为我无法在JSP中获取如何接收消息。我还读到我不应该重定向,而应该从servlet转发。我怎样才能做到这一点?请帮助从Servlet转发的代码补丁以及在JSP中接收的代码。谢谢
如果您坚持使用重定向而不是转发,则有两种选择:
String message = "hello";
res.sendRedirect(“adminHome.jsp?message=” + URLEncoder.encode(message, “UTF-8”));
这样就可以在JSP中将其显示如下
<p>Message: ${param.message}</p>
它也仅在浏览器地址栏中可见,并且您不能以这种方式传递非标准Java对象。
req.getSession().setAttribute(“message”, message); res.sendRedirect(“adminHome.jsp”);
这样您就可以在JSP中显示( 和删除 )它,如下所示:
<p>Message: ${message}</p> <c:remove var="message" scope="session" />
删除很重要,否则整个会话都将删除。
但是,如果您愿意使用转发而不是重定向,那么它会更优雅:
String message = "hello"; req.setAttribute("message", message); req.getRequestDispatcher("/adminHome.jsp").forward(req, res);
并在JSP中显示如下
<p>Message: ${message}</p>