我正在 Web 应用程序中使用 servlet 上下文/hello 开发 jsp(test.jsp)。我正在执行以下操作:
<c:import url = "/other/altTest.jsp" context="/" />
似乎 test.jsp 可用的请求属性对于从 c:import (altTest.jsp) 导入的 jsp 不可用,我怀疑是由于 context 参数所致。有人可以解释一下这背后的原因,并建议一种导入该 jsp 以便我可以访问请求属性的替代方法吗?
最佳答案
c:import
在幕后触发一个新的独立 HTTP 请求。即使该文件位于相同的上下文中,它也无法访问与打开父 JSP 时使用的相同请求。
最好的办法是将信息作为请求参数传递,或者可能存储为 session 属性,然后让导入的 JSP 将其从 session 中删除。尽管如此,这仍然要求不同的上下文共享相同的 session ——这可以在 servletcontainer 级别进行配置,例如在 Tomcat 中,将 中的
.emptySessionPath
属性设置为 true
context.xml
另一种方法是使用 servlet,您可以这样做 ServletContext#getContext()
获取另一个 servlet 上下文(仅当 context.xml
中的 crossContext
属性设置为 true
时),然后获取 RequestDispatcher
最后调用它的 forward()
。这是 JSP 标记不可能实现的。
关于java - 跨 c 请求属性 :import contexts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252094/