4

sendHashMapオブジェクトを要求したアプレットに送信したい。サーブレットにはそのHashMapオブジェクトがあります。これを行う方法はありますか?

Applet ------requests HashMap object---->Servlet listens to this request
                                                 |
                                                 |
                                     Servlet searches that HashMap Object
                                                 |
                                                 |
                                                \ /
<--Finally Send this to applet------------ Servlet gets the HashMap object                                                                

サーブレットに接続し、サーブレットにもHashMapオブジェクトがありますが、アプレットに送信する方法がわからず、送信できるかどうか疑問に思います。

4

4 に答える 4

3

それをシリアライズして返信するのはどうですか?JSON または XML に変換することを検討してください。

于 2012-07-25T11:25:29.553 に答える
2

サーブレットがアプレットのダウンロード元と同じサーバーにある場合は、サーブレットへのURL接続を開くことができます。あなたは読むことができます

URL site = new URL("your site")
URLConnection urlCon = site.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
                                urlCon.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) 
        System.out.println(inputLine);
    in.close();

一方、サーブレットでは、HttpServletResponseを使用してデータをクライアントに書き戻します。

より「洗練された」ものが必要な場合は、アプレットのWebサービススタックとしてaxisを使用するか、Jerseyのような軽量のRESTlibを含めることができます。ただし、これらのソリューションでは、サーブレットの代わりに他のサーバーコンポーネントを使用する必要があります。

この投稿はあなたを助けます:

どちらもjson-libを使用して、JSON形式のオブジェクトを解析/シリアル化します。

この助けを願っています。

于 2012-08-08T17:13:31.320 に答える
1

あなたの質問に答えるために、いくつかの外部ライブラリを利用するつもりです: Google GsonApache IO Utils

したがって、すでにサーブレットに HashMap があり、それをアプレットに送信したいと考えています。

Map<String, String> myMap = new HashMap<String, String>();// or whatever
Gson gson = new GsonBuilder().create();
String jsonString = gson.toJson(myMap);
IOUtils.write(jsonString, resp.getOutputStream());// where 'resp' is your HttpServletResponse
IOUtils.closeQuietly(resp.getOutputStream());

アプレットで受け取るには:

String jsonString = IOUtils.toString(conn.getInputStream()); // where 'conn' is an HttpURLConnection
IOUtils.closeQuietly(connection.getInputStream());
Gson gson = new GsonBuilder().create();
// The TypeToken is needed when Generics are involved
Type typeOfHashMap = new TypeToken<Map<String, String>>() {}.getType();
Map<String, String> myMap = gson.fromJson(jsonString, typeOfHashMap);

以上です。簡単な例ですが、参考にしていただければ幸いです。

もちろん、外部ライブラリを使用する代わりに手動で行うこともできますが、この方法の方がはるかに簡単です。

于 2012-08-14T22:40:58.423 に答える
0

オブジェクトをシリアル化してHttpServletResponseに直接書き込み、バイトストリームを書き込むことができます。

アプレット側では、バイトストリームを読み取り、ストリームを使用して逆シリアル化する必要があります。アプレットはPOSTリクエストを送信することに注意してください。そうしないと、GETリクエストを使用する場合に1024バイトの制限が発生する可能性があります。

これがお役に立てば幸いです。

于 2012-08-08T07:25:06.973 に答える