我想将参数从servlet传递到jsp页面。这就是为什么,在servlet中,我编写了以下代码:
request.setAttribute("errorMessage", dbMessage);
response.sendRedirect(redirectURL + "index.jsp");
在index.jsp中我编写了以下代码:
<%
String error_msg = (String)request.getAttribute("errorMessage");
out.println(error_msg);
if (error_msg != null) {%>
<div class="alert alert-danger">
<%=error_msg%>
</div>
<% } %>
但我在index.jsp页面中没有errorMessage的值。是什么原因 ?请帮我 。需要注意的一点:错误消息不为空。
答案 0 :(得分:2)
使用request.sendRedirect时无法传递隐藏的参数。您可以使用以下选项将参数从servlet传递给JSP。
response.sendRedirect(redirectURL + "index.jsp?errorMessage=", dbMessage);
然后在JSP中将代码更改为
String errorMsg = request.getParameter("errorMessage")
浏览器端的网址中会显示错误消息。
request.setAttribute("errorMessage", dbMessage);
RequestDispatcher dispatcher = serveltContext().getRequestDispatcher("/index.jsp");
dispatcher.forward(request, response);
使用会话
request.getSession().setAttribute("errorMessage", dbMessage);
在JSP上,将代码更改为
String error_msg=(String)request.getSession().getAttribute("errorMessage");
使用Cookie
Cookie errorCookie = new Cookie("errorMessage", dbMessage);
errorCookie.setPath(request.getContextPath());
response.addCookie(errorCookie);
在浏览器端,您可以通过js或请求本身读取cookie
String error_msg = null;
Cookie [] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if ("errorMessage".equals(cookie.getName())) {
error_msg = cookie.getValue();
}
}
答案 1 :(得分:1)
你应该这样写:
Step
答案 2 :(得分:0)
这里的问题是你使用的是sendRedirect。了解sendRedirect将向不同的URL发起新请求。尝试使用forward或include来维护请求参数。