当前位置: 首页 > 面试题库 >

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

方轩昂
2023-03-14
问题内容

简而言之,如何在JSP中创建全局变量,以便可以跨其他JSP页面和/或在frame /
iframe内部访问它?我尝试了<%!..%>,但收到一个错误,指出无法在单独的jsp页面中解析变量。甚至可以在不诉诸查询字符串,会话变量等的情况下,在多个页面中访问JSP变量吗?

谢谢。


问题答案:

如前所述,您可以使用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>


 类似资料:
  • 问题内容: 如何在其他.go包/文件中的main.go中访问已声明/初始化的变量?不断告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳记) 在main.go中 尝试访问其他.go文件中的StartTime,但保持未定义StartTime 问题答案: 我将改为“注入” starttime变量,否则在软件包之间会有循环依赖关系。 main.go otherpackage.go

  • 问题内容: 这(我的代码的简化版本)不起作用: 为什么?我要访问,因为如果失败,我想在上面记录错误。 递归地调用自身以创建目录列表,因此我担心将整体传递给自身(如中所述)可能会损害性能。 有没有一种方法可以在不传递参数的情况下访问内部?(PHP 5.2.x +) 编辑: 如果代码看起来像这样呢? 问题答案: 您必须将其传递给函数: 或将其声明为global: 如果变量不是全局变量,而是在外部函数中

  • 问题内容: 我有一个全局变量,需要在我的ViewController之间共享。 在Objective-C中,我可以定义静态变量,但是找不到在Swift中定义全局变量的方法。 您知道这样做的方法吗? 问题答案: 来自官方的Swift编程指南: 全局变量是在任何函数,方法,闭包或类型上下文之外定义的变量。全局常数和变量总是延迟计算的。 您可以在任何文件中定义它,也可以在任何位置访问它。因此,您可以在任

  • 问题内容: 好的,所以我使用Jekyll建立了一个博客,您可以在文件中定义变量,所有模板/布局均可访问该变量。我目前正在使用带有EJS模板和ejs- locals的 Node.JS / Express(用于局部 /布局。我正在寻找与全局变量类似的方法,如果有人熟悉Jekyll ,就会发现这些变量。我有像网站的标题(而不是页面标题),作者/公司名称,在我所有页面上都保持不变。 这是我目前正在做的一个

  • 问题内容: 我正在尝试通过常规函数访问全局变量,这可能吗? 我已经使用$ rootScope设置了一些变量,并且我试图通过回调函数来访问它。从控制器调用此回调。我不想传递该回调。 有什么办法可以访问吗? 我愿意使用服务。 请提出建议。 谢谢 我试图按以下方式访问rootScope: 我的服务是: 它在updateStatus fn下显示isFBLoggedin为true,但未反映在视图上 我正在打

  • 问题内容: 在我的android应用程序中,我需要放置可变成员id的位置。问题是,它是从在线API获取的,我需要找到一种存储/检索它的方法 我尝试将其放在自定义类中,但是问题是,如果我取消活动,它将丢失,我还知道有一种方法可以扩展应用程序。 所以我想知道存储全局变量的最佳方法是什么? 我必须实现: 将变量保存在onSaveState上 将其保存在sharepref 手动保存 手动检索 谢谢 更新: