javascript - 在 Javascript 加载之前,如何将系统信息从属性文件加载到 JSP 中?

标签 javascript java ajax jsp servlets

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

当前将系统信息获取到 UI 的解决方案

在共享 UI Javascript 中,我们在主线程上对 JSP 进行阻塞、同步 AJAX 调用,该调用读取属性文件,并将 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();
%>

非常感谢!对我宽容一点...我是新人。

最佳答案

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

在要使用属性值的 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>

关于javascript - 在 Javascript 加载之前,如何将系统信息从属性文件加载到 JSP 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41121959/

相关文章:

javascript - EJS 中的 Angularjs Ui 路由器参数

java - google appengine mapper - 映射日期范围

java - 使用 Java Scanner 从控制台读取很长的字符串需要时间吗?

javascript - 传递字符串时 AJAX 查询不起作用

javascript - 如何激活/停用移动设备上输入字段的预想文本?

javascript - 从 Angular 2 访问 jQuery 函数中设置的变量

javascript - 在 WordPress 中登录后添加 Bootstrap 模式

java - 在 firebase (JAVA) 中插入字符串变量作为键(子)

ajax - Coldfusion 8 上的 Facebook 连接

javascript - Ajax jquery 进行 Web api 调用