0

サーブレットから JSON オブジェクトをフェッチしてデシリアライズし、その変数を使用して他のことを行うアプリケーションを作成したいと考えています。

私のサーブレットには、doPost に次のコードがあります。

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

      ObjectOutputStream os;
      os = new ObjectOutputStream(response.getOutputStream());

      String s = new String("A String");

      Gson gson = new Gson();
      String gsonObject= gson.toJson(s);

      os.writeObject(gsonObject);
      os.close();

    }

これで、サーブレットの実行中にブラウザー経由でアクセスできます。doGet メソッドに同じコードを投稿すると、サーブレット ファイルがダウンロードされますが、これは私が望んでいるものではありません。

後で操作できるように、サーブレットに接続してオブジェクトを取得する 2 番目のアプリケーションで何を使用すればよいでしょうか?

前もって感謝します。

4

3 に答える 3

0

ブラウザに表示する代わりにサーブレットファイルをダウンロードする場合は、応答でコンテンツタイプを設定していない可能性があります。サーブレット応答としてJSON文字列を記述している場合は、次を使用する必要があります

response.setContentType("text/html");
response.getWriter().write(json);

「html/text」ではなく「text/html」の順序に注意してください

于 2012-12-09T05:02:12.473 に答える
0

サーブレットにいくつか変更を加える必要があります。

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
   String s = new String("A String");
 String json = new Gson().toJson(s);
 this.response.setContentType("application/json");
 this.response.setCharacterEncoding("UTF-8");
 Writer writer = null;
 try {
        writer = this.response.getWriter();
        writer.write(json);
 } finally {
    try {
        writer.close();
    } 
    catch (IOException ex) {
    }
 }
}
于 2012-12-09T05:50:15.910 に答える
0

質問を正しく理解していれば、java.net.HttpURLConnectionオブジェクトjava.net.URLを使用してこのサーブレットへの接続を作成し、2 番目のサーブレットで上記の JSON サーブレットによってストリーミングされた JSON を読み取ることができます。

于 2012-12-09T06:19:54.987 に答える