【问题标题】:Passing objects from servlets to client side(javascript) [closed]将对象从 servlet 传递到客户端(javascript)[关闭]
【发布时间】:2015-02-04 06:14:41
【问题描述】:

我想知道将数据从 servlet 传递到 js 代码的最佳方式是什么。 我想到的唯一解决方案是将对象序列化为json字符串,然后将其作为请求属性传递给jsp页面,然后在js代码中获取并反序列化。

有没有更好的方法来做到这一点?

【问题讨论】:

  • 使用 spring mvc 编写基于 rest 的服务,将 json 返回到浏览器中的 javascript 客户端,然后使用它来呈现显示。
  • 如果你想要日期、正则表达式和方法,你可以使用原始 JS 而不是 JSON...

标签: java javascript json jsp servlets


【解决方案1】:

您可以将 JSON 对象生成到 JSP 语法中的 <script> 标记中,因此您拥有内联 javascript,浏览器将在页面加载时反序列化,而无需获取请求属性。这将类似于 JSP 页面中的以下内容。

...
<script>
<% 
out.println("myJSONObj = " + myJSONObject.toString()) 
%>
//other javascript stuff...
console.log(myJSONObj.key1);
</script>
...

因此,您在浏览器上呈现的输出/读取将类似于(实际的 JSON 对象将取决于您序列化的内容——当然是放入您的 JSONObject):

...
<script>
myJSONObj = {key1:value1,array1:[val1,val2,val3]};
//other javascript stuff...
console.log(myJSONObj.key1);
</script>
...

另一种选择是使用 AJAX 来简单地从 servlet 返回 JSON 字符串并接收返回类型为 JSON 的字符串(如果使用 jquery ajax,否则在 xhr 响应上使用 JSON.parse(...))。

【讨论】:

  • 感谢您的回答)我认为 ajax 用于对服务器进行异步调用。就我而言,我真的不需要它。我说的对吗?
  • 通过 JSP 直接生成对象会生成已经包含序列化对象的 HTML 和 JS。在页面加载时,浏览器会自动从 JS 加载对象。该路由与 AJAX 无关。我添加了 AJAX 选项,因为问题很广泛并且想概述该选项。 AJAX 用于对服务器进行异步调用——它也可以同步完成。将功能抽象出来并使用特定的 servlet 实例(通过适当的参数传递)返回 JSON 字符串是一种很好的做法,尤其是在 REST 架构中。
  • 谢谢,现在清楚多了)
  • 很高兴为您提供帮助,祝您的代码好运 =]
猜你喜欢
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
相关资源
最近更新 更多