2010-11-23 77 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标签无法实现的。