0

我的问题很简单,但我对此感到困惑,请帮助我。

在 JSP 中,我从 Servlet1 接收一个 Attribute(idsList),我想将此 Attribute(idsList) 发送到另一个 servlet,Servlet2,但我可以使用 session.setAttribute() 来做到这一点。我的问题是,我们如何在 JSP 本身中发送到 Servlet2?

这是我的代码,但它不起作用,因为相同的请求用于设置和获取。请帮个忙。

在 Servlet1 中:

request.setAttribute("idsList",idsList);---is null

在 JSP 中

List<Integer> idsList =(List<Integer>)request.getAttribute("idsList");
System.out.println("size of ids list :"+idsList.size());
request.setAttribute("idsList",idsList);

在 Servlet2 中:

request.getAttribute("idsList");---is null
4

3 回答 3

7

RequestDispatcher使用如下所示转发您的请求:

request.setAttribute("idsList",idsList);
RequestDispatcher rd = getServletContext().getRequestDispatcher("servlet2");
rd.forward(request, response);

您可以request.getAttribute("idsList")在 servlet2 上使用。

不要response.sendRedirect()用于发送request对象。

编辑 :

我在您的问题下方找到了一条评论:

ru 使用 setAttribute 在 JSP 中获取价值?是的

一般来说,JSP 被用作VIEW透视图,所以,

它不应包含业务逻辑

于 2012-11-15T09:05:41.003 回答
1

如果使用 RequestDispatcher 转发请求,那么请求对象是相同的。

但是如果你使用response.sendRedirect(),将会创建一个新的请求对象,并且无法检索之前请求对象中设置的属性。

于 2012-11-15T08:58:35.763 回答
1

您在其中设置属性的请求对象,请求将结束,并在您提交 jsp 时创建一个新的请求对象。

您可以使用会话来设置属性,也可以在表单中设置一个隐藏字段,当提交给 servlet

正如 Munesh 建议的那样,您需要再次确认,您如何将控件转发到 JSP 1) SendRedirect 2) Request Dispatcher

于 2012-11-15T09:00:24.863 回答