2012-11-15 183 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)請求調度