簡體   English   中英

從javascript(通過ajax)發送java類實例到jsp或servlet

[英]send java class instance from javascript (via ajax) to jsp or servlet

我試圖通過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>

(以下更新)

從根本上說,您通過ajax從客戶端發送到服務器的內容始終是一個字符串。 它只能通過解釋它的服務器端進程轉換為其他內容。

這個問題似乎沒有任何意義。 除非您在客戶端和LiveConnect上使用Java小程序,否則客戶端上根本沒有Java類實例。

如果你確實有客戶端(例如,來自小應用程序),將其發送到服務器將是唯一的方式在Java類的實例:

  1. 將其序列化為字節流。

  2. 將該字節流編碼為字符串(Base64或類似)。

  3. 通過ajax將編碼的字符串發送到服務器。

  4. 將字符串解碼回服務器上的字節流。

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

......幾乎可以肯定有一種更好的方法可以將這些信息從客戶端傳送到服務器。


你編輯過你的問題說:

順便說一句,我得到這樣的java類實例:

  <script type ='text / javascript'>\n      var class_instance =“<%= my_class_instance%>”;\n </ SCRIPT> 

這不會在瀏覽器上為您提供“Java類實例”。 充其量,你將擁有一個包含一些信息的字符串。 更有可能的是,根據my_class_instance服務器端變量中的內容,您將遇到JavaScript語法錯誤。 (例如,如果你在其中有'或換行符或無效的JavaScript轉義序列等等。)

如果您認為這是一個Java類實例,那么在嘗試編寫此代碼之前,您需要退一步研究Web應用程序的基礎知識。

您正在為您的jsp編寫scriptlet 99.9%的時間這是一件壞事。 你應該一直避免它。 大多數情況下,您可以使用jstl更好地編寫它。

更重要的是,您的代碼不會將Java對象實例放到客戶端瀏覽器中。 這是完全錯誤的。

請看一下。 如何避免在JSP頁面中使用scriptlet?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM