我正在使用servlet上下文/ hello的web应用程序中的jsp(test.jsp)上工作。我做了以下内容:通过c:import上下文请求属性
<c:import url = "/other/altTest.jsp" context="/" />
看来,请求属性可供test.jsp的是不可用的从C导入的jsp:进口(altTest.jsp),我怀疑是由于环境参数。有人可以解释这个背后的原因,并提出了一种导入该jsp我可以访问请求属性的替代方法吗?
我正在使用servlet上下文/ hello的web应用程序中的jsp(test.jsp)上工作。我做了以下内容:通过c:import上下文请求属性
<c:import url = "/other/altTest.jsp" context="/" />
看来,请求属性可供test.jsp的是不可用的从C导入的jsp:进口(altTest.jsp),我怀疑是由于环境参数。有人可以解释这个背后的原因,并提出了一种导入该jsp我可以访问请求属性的替代方法吗?
该c:import
下发生了一个新的和独立的HTTP请求。即使文件位于相同的上下文中,也不能访问与使用父JSP打开的请求相同的请求。
最好的办法是将信息作为请求参数传递或者作为会话属性存储,然后让导入的JSP将它从会话中删除。不过,这要求不同的上下文共享相同的会话 - 这可以在Servlet容器级别进行配置,例如在Tomcat中,将emptySessionPath
属性设置为true
,context.xml
。
一种替代方法是使用servlet代替,其中可以执行ServletContext#getContext()
获得其它servlet上下文(仅当crossContext
属性被设置为在true
context.xml
),然后获得RequestDispatcher
并最终调用就可以了forward()
。这是JSP标签无法实现的。