我正在使用/ hello的servlet上下文在web应用程序中处理jsp(test.jsp)。我正在做以下事情:
<c:import url = "/other/altTest.jsp" context="/" />
看来test.jsp可用的请求属性对c:import(altTest.jsp)导入的jsp不可用,我怀疑是由于context参数。有人可以解释一下这背后的原因,并建议一种替代方法来导入我可以访问请求属性的jsp吗?
答案 0 :(得分:3)
c:import
会触发新的独立HTTP请求。即使文件位于相同的上下文中,也无法访问与打开父JSP相同的请求。
最好的办法是将信息作为请求参数传递或者存储为会话属性,然后让导入的JSP将其从会话中删除。但是,这要求不同的上下文共享同一个会话 - 这可以在servletcontainer级别配置,例如Tomcat,在emptySessionPath
中将true
属性设置为context.xml
。
另一种方法是使用servlet代替,其中您可以执行ServletContext#getContext()
以获取其他servlet上下文(仅当crossContext
中的true
属性设置为context.xml
时然后获取RequestDispatcher
并最终在其上调用forward()
。 JSP标记无法做到这一点。