Java JSP和Servlet setAttribute

Java JSP和Servlet setAttribute,java,jsp,servlets,Java,Jsp,Servlets,我的问题很简单,但我对此感到困惑,请帮助我 在JSP中,我从Servlet1接收到一个属性(idsList),我想将该属性(idsList)发送到另一个servlet,Servlet2,但我可以使用session.setAttribute()完成此操作。我的问题是,我们如何用JSP本身发送到Servlet2 这是我的代码,但它不起作用,因为相同的请求用于设置和获取。 请帮个忙 在Servlet1中: request.setAttribute("idsList",idsList);---is nu

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

在JSP中,我从Servlet1接收到一个属性(idsList),我想将该属性(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);

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


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

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

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

正如Munesh所建议的,您需要再次确认,您是如何将控件转发到JSP的 1) 发送重定向
2) 请求调度器使用如下所示转发您的请求:

request.setAttribute("idsList",idsList);
RequestDispatcher rd = getServletContext().getRequestDispatcher("servlet2");
rd.forward(request, response);
您可以在servlet2上使用
request.getAttribute(“idsList”)

不要使用
response.sendRedirect()
发送
请求
对象

编辑:

我在你的问题下面找到了一条评论:


使用setAttribute在JSP中获取值?对

通常,JSP用作视图透视图,因此


它不应该包含业务逻辑

r您使用
setAttribute
在JSP中获取值?这会返回什么<代码>System.out.println(“ID列表的大小:+idsList.size())RU使用setAttribute在JSP中获取值?YESSystem.out.println(“ID列表的大小:+idsList.size());返回5您无法理解单个HTTP请求的生命周期和范围。仔细阅读:它只是为了测试目的,没有逻辑
request.setAttribute("idsList",idsList);
RequestDispatcher rd = getServletContext().getRequestDispatcher("servlet2");
rd.forward(request, response);