2010-11-23 56 views
0

我正在使用servlet上下文/ hello的web應用程序中的jsp(test.jsp)上工作。我做了以下內容:通過c:import上下文請求屬性

<c:import url = "/other/altTest.jsp" context="/" /> 

看來,請求屬性可供test.jsp的是不可用的從C導入的jsp:進口(altTest.jsp),我懷疑是由於環境參數。有人可以解釋這個背後的原因,並提出了一種導入該jsp我可以訪問請求屬性的替代方法嗎?

回答

3

c:import下發生了一個新的和獨立的HTTP請求。即使文件位於相同的上下文中,也不能訪問與使用父JSP打開的請求相同的請求。

最好的辦法是將信息作爲請求參數傳遞或者作爲會話屬性存儲,然後讓導入的JSP將它從會話中刪除。不過,這要求不同的上下文共享相同的會話 - 這可以在Servlet容器級別進行配置,例如在Tomcat中,將emptySessionPath屬性設置爲true,context.xml

一種替代方法是使用servlet代替,其中可以執行ServletContext#getContext()獲得其它servlet上下文(僅當crossContext屬性被設置爲在truecontext.xml),然後獲得RequestDispatcher並最終調用就可以了forward()。這是JSP標籤無法實現的。