跨c:import上下文请求属性

时间:2010-11-23 02:08:07

标签: java jsp jstl

我正在使用/ hello的servlet上下文在web应用程序中处理jsp(test.jsp)。我正在做以下事情:

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

看来test.jsp可用的请求属性对c:import(altTest.jsp)导入的jsp不可用,我怀疑是由于context参数。有人可以解释一下这背后的原因,并建议一种替代方法来导入我可以访问请求属性的jsp吗?

1 个答案:

答案 0 :(得分:3)

c:import会触发新的独立HTTP请求。即使文件位于相同的上下文中,也无法访问与打开父JSP相同的请求。

最好的办法是将信息作为请求参数传递或者存储为会话属性,然后让导入的JSP将其从会话中删除。但是,这要求不同的上下文共享同一个会话 - 这可以在servletcontainer级别配置,例如Tomcat,在emptySessionPath中将true属性设置为context.xml

另一种方法是使用servlet代替,其中您可以执行ServletContext#getContext()以获取其他servlet上下文(仅当crossContext中的true属性设置为context.xml时然后获取RequestDispatcher并最终在其上调用forward()。 JSP标记无法做到这一点。