0

我正在尝试通过 ajax 将 JAVA CLASS INSTANCE 从我的 javascript 代码发送到 JSP 文件。我该如何发送?我尝试像这样发送实例:

   data = {}
   data['my_instance'] = JAVA_CLASS_INSTANCE

并通过 ajax 发送此数据,问题是,在 JSP 中,它作为字符串而不是类接收它

顺便说一句,我得到这样的java类实例:

<script type='text/javascript'>
     var class_instance = "<%= my_class_instance %>"; //if this method is wrong, plz tell me correct method to get instance and send via ajax. Already I have a form, along with the form data, i am trying to send this class also. If there is anyother good way for this, just tell me. 
</script>
4

2 回答 2

2

(以下更新)

从根本上说,您通过 ajax 从客户端发送到服务器的始终是一个字符串。它只能通过解释它的服务器端进程变成其他东西。

这个问题似乎没有任何意义。除非您在客户端和LiveConnect上使用 Java 小程序,否则客户端上根本没有 Java 类实例。

如果您在客户端上确实有一个 Java 类实例(例如,来自 applet),那么将它发送到服务器的唯一方法是:

  1. 将其序列化为字节流。

  2. 将该字节流编码为字符串(Base64 或类似)。

  3. 通过 ajax 将该编码字符串发送到服务器。

  4. 将字符串解码回服务器上的字节流。

  5. 在服务器上反序列化它。

...并且几乎可以肯定会有一种更好的方法将这些信息从客户端获取到服务器。


你已经编辑了你的问题说:

顺便说一句,我得到这样的java类实例:

<脚本类型='文本/javascript'>
     var class_instance = "<%= my_class_instance %>";
</脚本>

这不会在浏览器上为您提供“Java 类实例”。充其量,你会有一个包含一些信息的字符串。更有可能的是,根据my_class_instance服务器端变量中的内容,您将遇到 JavaScript 语法错误。(例如,如果您在其中有一个'或一个换行符或无效的 JavaScript 转义序列等。)

如果您认为这是一个 Java 类实例,那么在尝试编写此代码之前,您需要退后一步研究 Web 应用程序的基础知识。

于 2012-11-02T07:22:44.940 回答
0

你正在写scriptlet你的jsp。这在 99.9% 的情况下都是一件坏事。你应该一直避免它。大多数情况下,您可以使用jstl.

更重要的是,您的代码不会将 java 对象实例放入客户端浏览器。这是完全错误的。

请看一下。 如何避免在我的 JSP 页面中使用 scriptlet?

于 2012-11-02T07:31:51.283 回答