JSP和Servlet setAttribute

时间:2012-11-15 08:54:25

标签: java jsp servlets

我的问题很简单,但我很困惑,请帮助我。

在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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

编辑:

我在您的问题下方发现了评论:

使用setAttribute获取JSP中的值?是

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

IT不应包含商业逻辑

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

正如Munesh建议的那样,您需要再次确认,如何将控件转发到JSP 1)SendRedirect 2)请求调度程序