我的问题很简单,但我很困惑,请帮助我。
在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 :(得分: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)请求调度程序