【问题标题】:Passing an Object via Servlet and reading it in YUI通过 Servlet 传递对象并在 YUI 中读取它
【发布时间】:2011-03-01 13:01:59
【问题描述】:

您好,我正在尝试将一个对象从 servlet 传递给 YUI javascript 代码。这是我愿意传递的对象的类声明:

@XmlRootElement
class Favourite implements Serializable {
List<String> name = new ArrayList<String>();
List<String> host = new ArrayList<String>();
List<Integer> port = new ArrayList<Integer>();
}

这就是我试图通过 servlet 发送它的方式。

response.setContentType("application/x-java-serialized-object");
OutputStream os = response.getOutputStream(); 
ObjectOutputStream out = new ObjectOutputStream(os);
Favourite data = new Favourite();
// some code to manipulate the "data" instance
out.writeObject(data);

我对如何在 YUI 中读取此对象感到困惑。请提出一条出路。

【问题讨论】:

    标签: javascript servlets yui


    【解决方案1】:

    我非常怀疑你能否让 YUI 反序列化 Java 序列化字节流。

    相反,我会使用JSON。提供一种将Favorite 实例序列化为 JSON 字符串的方法,并将其作为响应发送(使用内容类型“application/json”)。您可以找到用于 Java 的多个 JSON 编码器(序列化器/字符串化器)(包括上面的链接)。 YUI 提供JSON deserialization

    使用 JSON 或 XML 作为您的在线格式是迄今为止在 Web 应用程序中的客户端和服务器之间发送数据(与标记相反)的最流行和最流行的方式。根据我的经验,JSON 稍微超过了 XML,部分原因是它非常易于使用,但 XML 是最先出现的(事实上,XML 是“ajax”中的 X——A同步 Javascript And XML)。

    【讨论】:

    • 如果我没记错的话,我认为可以将Java序列化对象传递给Jquery并对其进行反序列化,还建议我使用JQuery或YUI。
    • @aditya:没有冒犯,但我很确定你错了。 jQuery 中当然没有内置 Java 反序列化支持,而且我从未听说过它的插件。 (默认)Java 序列化过程产生的二进制数据不适合传输到客户端 JavaScript,然后由客户端 JavaScript 反序列化。这可能可能,但这不是远程标准做法。 Re YUI vs. jQuery:这完全取决于你(你还有十几个其他选择)。 jQuery 在采用方面可能具有优势,并且独立于任何一家大公司(尽管与 Microsoft 有联系)。
    • 感谢您的帮助,我能够组成一个 JSON 对象并在 YUI 中解析它。
    • @aditya:太好了,这可能是目前最好的方式。
    【解决方案2】:

    YUI 将无法读取 Java 序列化对象(二进制数据,具有 Java 特定格式)。您应该使用可从 JavaSCript 读取的开放格式(如 XML 或 JSON)来传输您的对象。

    【讨论】:

    • 请帮帮我,我是 YUI 的新手,对此知之甚少。如果我以 XML 或 JSON 格式传输一个对象,我将如何阅读它。
    • 阅读 developer.yahoo.com/yui/3/json 获取 JSON 和 YUI。如果您正在执行 AJAX 并返回 XML,则 XML DOM 树将在 XMLHttpRequest 的 responseXML 属性中可用。
    • 假设您正在执行 AJAX 调用并返回一个 JSON 数组,您会这样做 jsfiddle.net/rbYKj(使用 yui3)
    • 感谢您为我提供的帮助。
    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    相关资源
    最近更新 更多