gpt4 book ai didi

java - 如何创建可以跨多个页面或在框架/iframe 内访问的全局 JSP 变量?

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:50 25 4
gpt4 key购买 nike

简单地说,我如何在 JSP 中创建一个全局变量,以便我可以跨其他 JSP 页面和/或框架/iframe 访问它?我试过 <%!..%> 但我收到一个错误,该变量无法在单独的 jsp 页面中解析。是否可以在多个页面中访问 JSP 变量而不求助于查询字符串、 session 变量等?

谢谢。

最佳答案

正如我已经评论过的,您可以使用 ServletContext维护所有应用程序的变量。不要将它与静态变量混淆,因为当您的应用程序未部署时,ServletContext 将终止,但静态变量将一直存在,直到 JVM 关闭。

您可以使用 setAttribute 将变量保存在 ServletContext 中方法。此外,您可以使用 getAttribute 获取实际值.让我们看一个 servlet 中的 ServletContext 示例:

public class SomeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext servletContext = getServletContext();
String someAttribute = servletContext.getAttribute("someAttribute");
System.out.println("someAttribute value: " + someAttribute);
}
}

此外,您可以使用 ServletContext 的监听器,这样您就可以在应用程序启动(正确部署)时执行一些代码以初始化 ServletContext 上的属性)和完成时(在取消部署之前)。

public final class MyAppListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
System.out.println("Application gets started.");
ServletContext servletContext = event..getServletContext();
servletContext.setAttribute("someAttribute", "Hello world!");
}

public void contextDestroyed(ServletContextEvent event) {
System.out.println("Application has finished.");
}
}

如果您使用的是 Java EE 5,则应在 web.xml 中配置监听器

<listener>
<listener-class>mypackage.listener.MyAppListener</listener-class>
</listener>

关于java - 如何创建可以跨多个页面或在框架/iframe 内访问的全局 JSP 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10107962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com