0

javascriptコードからajaxを介してJSPファイルにJAVACLASSINSTANCEを送信しようとしています。どうすれば送信できますか?このようにインスタンスを送信してみました:

   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 クラスのインスタンスがあった場合、それをサーバーに送信する唯一の方法は次のとおりです。

  1. バイト ストリームにシリアル化します。

  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 アプリケーションの基礎を学習する必要があります。

于 2012-11-02T07:22:44.940 に答える
0

scriptletあなたはあなたのjspに書いています。これは 99.9% の確率で悪いことです。あなたはいつもそれを避けるべきです。ほとんどの場合、 を使用するとより適切に記述できますjstl

さらに重要なことに、コードは Java オブジェクト インスタンスをクライアント ブラウザに配置しません。それは完全に間違っています。

ご覧ください。 JSP ページでスクリプトレットを使用しないようにするにはどうすればよいですか?

于 2012-11-02T07:31:51.283 に答える