【问题标题】:How can I load system information from a properties file into a JSP, before Javascript loads? [duplicate]如何在加载 Javascript 之前将系统信息从属性文件加载到 JSP 中? [复制]
【发布时间】:2016-12-13 13:08:34
【问题描述】:

认为我对 JSP 基本上是全新的,有什么可能。我正在开发一套 4 个 webapp 仪表板,每个仪表板都是独立的,具有单独的 URL 和 index.(jsp|html) 页面。仪表板的后端是用 Java 编写的,可以构建成多种风格,并且可以部署到各种环境中。通过一些技巧,WEB-INF/classes 中恰好有一个.properties 文件,我可以使用它来获取系统信息,例如构建风格和部署环境——UI 需要知道的事情。

将系统信息发送到 UI 的当前解决方案

在共享 UI Javascript 中,我们在主线程上对 JSP 进行阻塞、同步的 AJAX 调用,该 JSP 读取属性文件,并将 JSON 中的信息返回给调用者(下面的文件)。 我正在尝试消除主线程上的这种同步 AJAX 调用,而只是在 Javascript 运行时让该信息已经可用,而无需 AJAX

问题

我怎样才能改用 JSP 和 servlet 来让页面上已有这些信息可供 Javascript 访问,而无需进行 AJAX 调用来获取它?以及如何在我的所有仪表板之间共享该解决方案,理想情况下不必在所有 index.jsp 文件中复制 JSP 代码?

作为参考,我们当前使用的 JSP 如下。同样,我们对此 JSP 进行 AJAX 调用,然后将来自其 JSON 响应的信息存储在全局状态变量中,以供仪表板访问。

<%@page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8" %>
<%@page import="java.io.InputStream" %>
<%@page import="java.util.*" %>
<%@page import="com.google.gson.Gson" %>

<%
    // Read properties file
    Properties p = new Properties();
    p.load(application.getResourceAsStream("/WEB-INF/classes/system.properties"));

    Map<String, String> m = new HashMap<~>();
    m.put("id", p.getProperty("system.id", "unknown"));
    m.put("type", p.getProperty("system.type", "unknown"));

    // Write JSON response
    out.write(new Gson().toJson(m));
    out.flush();
%>

非常感谢!对我放轻松...我是新人。

【问题讨论】:

    标签: javascript java ajax jsp servlets


    【解决方案1】:

    您可以将您的 java 属性值分配给 java 脚本变量并使用该 java-script 变量,

    在您想要使用属性值的 jsp 文件中尝试以下代码

    在 Jsp 中,Java 代码总是先运行,然后是 javascript 代码,因为 java 代码在 javascript 在浏览器上运行的服务器上执行

    <%@page language="java" contentType="application/json; charset=UTF-8"    pageEncoding="UTF-8" %>
    <%@page import="java.io.InputStream" %>
    <%@page import="java.util.*" %>
    
    
    // javascript block
    <script language="javascript">
     <%
       // Read properties file
       Properties p = new Properties();
       p.load(application.getResourceAsStream("/WEB-INF/classes/system.properties"));
     %>
      var sysId="<%=p.getProperty("system.id", "unknown")%>";
      var sysType="<%=p.getProperty("system.type", "unknown")%>";
      // user javascript variable sysId, sysType where you want 
    </script>
    

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 2012-09-12
      • 2017-09-12
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      相关资源
      最近更新 更多