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