将服务器端数据传递给JavaScript—Scriplet或AJAX调用—哪个更好?

将服务器端数据传递给JavaScript—Scriplet或AJAX调用—哪个更好?,java,javascript,ajax,jsp,scriptlet,Java,Javascript,Ajax,Jsp,Scriptlet,在服务器端的属性文件中,我维护一个逗号分隔的单词列表 words.for.js=some,comma,separated,words 我想用这些单词创建一个JavaScript数组 var words = [some,comma,separated,words]; 我想到了两个选择 1.使用JSP scriplet创建一个全局变量 <% out.print("<script> var words = ["); out.print( PropertyLoa

在服务器端的属性文件中,我维护一个逗号分隔的单词列表

words.for.js=some,comma,separated,words
我想用这些单词创建一个JavaScript数组

var words = [some,comma,separated,words];
我想到了两个选择

1.使用JSP scriplet创建一个全局变量

<%  
    out.print("<script> var words = [");
    out.print( PropertyLoader.getAsCommaSeparated("words.for.js") );
    out.print(" ] </script>");
%>

2.公开一个服务/操作(即/getWords.do),并使用AJAX调用它并构造数组

我不确定两者中哪一个更好,在此感谢您的想法。 还是有更好的方法

谢谢

编辑:


这也是全局JS变量(在选项1的情况下)与附加http请求(在选项2的情况下)的比较——哪一个更糟糕。我也想从这个角度了解您的想法。

我更喜欢将服务器端数据嵌入JSP的标记中。它速度更快,不需要回调

对我来说,这一切都与数据的性质有关。在您的情况下,如果不重新启动服务器,该属性文件中的数据似乎不太可能更改。因此,保存额外的网络回调并将其嵌入到标记中对于全局变量来说是合适的


如果您处理的是某种动态数据,ajax回调onload会更好。

通过http请求公开将是最优雅的选择,并允许刷新。无论如何,你已经指望浏览器有javascript了


另外,如果值不是动态的,为什么不首先使用数组提供静态javascript文件呢?

为什么不使用JSON?因为你只需要发送一些字符串到前端。大概是这样的:

String [] s = {"test","test1"};
JSONArray array = new JSONArray();
array.put(s);
request.setAttribute("test", array);
JSP

或者如果你使用


可能数组是动态的。他问的是如何将阵列发送到前端,而不是如何访问它。
<script>
  var array='${test}'
</script>
ServletContext context = getServletContext();
Properties prop= new Properties();
prop.load(context.getResourceAsStream("/WEB-INF/filename.properties"));
String[]configArray= prop.get("words.for.js").toString().split(",");
context.setAttribute("configArray", myConfigArray);
ServletContext ctx = servletContextEvent.getServletContext();
ctx.setAttribute("configArray", myConfigArray);