2012-11-02 50 views
0

我想從我的JavaScript代碼發送JAVA CLASS實例到JSP文件通過ajax。我怎麼發送?我試圖發送這樣的實例:發送java類實例從javascript(通過Ajax)到jsp或servlet

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> 
+1

你從哪裏得到這個Java類實例在你的JavaScript代碼?從一個小程序?由於沒有小程序,瀏覽器上沒有Java類實例要發送。 –

+0

在你嘗試發送它之前,你怎麼能發送一個java實例到客戶端瀏覽器? – Drogba

+0

重新編輯:您的'class_instance'變量中沒有Java類實例。最好你有一個字符串;更有可能你有語法錯誤(這取決於'my_class_instance'中的內容)。如果您認爲這是一個Java類實例,那麼您需要退後一步並在此研究基礎知識。 –

回答

2

(以下更新)

從根本上說,你從客戶端送什麼通過ajax到服務器是總是一個字符串。它只能通過解釋它的服務器端進程變成別的東西。

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

如果沒有有客戶端(例如,來自小應用程序)的Java類的實例,只有這樣,才能將其發送到服務器將是:

  1. Serialize它字節流。

  2. 將該字節流編碼爲一個字符串(Base64或類似的)。

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

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

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

......還有幾乎肯定會得到從客戶端到服務器的信息的更好的方法。


編輯完你的問題說:

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

<script type='text/javascript'> 
    var class_instance = "<%= my_class_instance %>"; 
</script>

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

如果您認爲這是一個Java類實例,則需要退後一步並研究web基礎知識嘗試編寫此代碼之前的應用程序。

+0

請參閱更新的問題,並告訴我是否需要修改任何內容。 – user1767962

+0

感謝您的回答 – user1767962

0

您正在爲您的jsp寫入scriptlet。這是99.9%的錯誤。你應該避免它所有的時間。大多數情況下,你可以用jstl寫得更好。

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

請看看。 How to avoid using scriptlets in my JSP page?