2012-11-15 58 views
0

我的问题很简单,但我很困惑,请帮助我。JSP和Servlet setAttribute

在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 
+0

[Rü使用'setAttribute'在JSP中获得价值? –

+0

这是什么回报? 'System.out.println(“ids list size:”+ idsList.size());' – user75ponic

+0

您是否使用setAttribute在JSP中获得价值?是的 – sunleo

回答

5

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

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

您可以ü在servlet2上运行se request.getAttribute("idsList")

请勿使用response.sendRedirect()发送request对象。

编辑:

,我发现你的问题评论如下:

[Rü通过使用setAttribute在JSP中获得价值? YES

一般而言,JSP被用作VIEW的角度来看,这样,

它不应该包含业务逻辑

+0

它只是为了测试目的没有逻辑 – sunleo

1

如果您使用的RequestDispatcher转发请求,那么请求的对象是一样的。

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

1

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

您可以使用会话设置属性,或者可以在形式,当其提交到servlet

而作为Munesh是在暗示有一个隐藏字段,您需要重新确认的是,你如何纷纷转发控制到JSP 1)的sendRedirect 2)请求调度