java - 跨 c 请求属性 :import contexts

标签 java jsp jstl

我正在 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/

相关文章:

java - Spring MVC测试框架: Why doesn't test dispatcher servlet

jsp - 如何在 JSP 页面中使用 OWASP Java Encoder?

java - 如何使用 JSF 和 Facelets 实现一些 if-then 逻辑?

java - JSTL 循环遍历多维 HashMap

javascript - jQuery 函数和页面重新加载问题(也许)

java - 简单的 XML @ElementMap 无法满足关键属性

java - Minecraft Spigot 命令在主类中未启用

java - 缓存大量有序集合

java - 是否可以将带有 GUID 的 struts token 设置为 token 名称?

jquery - 如何在 JavaScript 代码中创建 JSTL foreach 循环?