8

シリアル化されたオブジェクトを Java クラスからサーブレットに送信し、そこでサーブレットがオブジェクトを取得してファイルとして保存したいと考えています。HttpURLConnection を使用してサーブレットに POST リクエストを送信する必要があることは認識していますが、以下のコードが正しいかどうかはわかりません。

private static HttpURLConnection urlCon;
private static ObjectOutputStream out;

public static void main(String[] args) {

    Names names = new Names();
    names.setName("ABC");
    names.setPlace("Bangalore");
    URL url;
    try {
        url = new URL("http://localhost:6080/HttpClientSerializable/HttpPostServlet");
    try {
        out = (ObjectOutputStream) urlCon.getOutputStream();
        out.writeObject(names);
        urlCon = (HttpURLConnection) url.openConnection();
        urlCon.setRequestMethod("POST");
        urlCon.setDoOutput(true);
        out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        }
}

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

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ObjectInputStream in = new ObjectInputStream(request.getInputStream());
        try {
            names = (Names) in.readObject();

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        in.close();
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:/Documents and Settings/RAGASTH/Desktop/Names"));
        out.writeObject(names);
        out.close();

    }

機能させるにはどうすればよいですか?また、サーブレットが受信したオブジェクトを応答として送り返すようにします。

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

8

あなたがする必要があります

  • Namesクラスがjava.io.Serializableマーカー インターフェイスを実装していることを確認してください。
  • 次のように、サーブレットの出力ストリームから ObjectOutputStream を作成します。

    out = new ObjectOutputStream(urlCon.getOutputStream());
    
  • 受信側では、サーブレットの入力ストリームからオブジェクトを読み取ってファイルに保持したら、次のように応答の出力ストリームに書き戻します。

    out = new ObjectOutputStream(response.getOutputStream());
    out.writeObject(names);
    out.close();
    

送信者側:

Names names = new Names();
names.setName("ABC");
names.setPlace("Bangalore");
URL url;
try {
    url = new URL("http://localhost:6080/HttpClientSerializable/HttpPostServlet");
    urlCon = (HttpURLConnection) url.openConnection();

    urlCon.setDoOutput(true); // to be able to write.
    urlCon.setDoInput(true); // to be able to read.

    out = new ObjectOutputStream(urlCon.getOutputStream());
    out.writeObject(names);
    out.close();

    ObjectInputStream ois = new ObjectInputStream(urlCon.getInputStream());
    names = (Names) ois.readObject();
    ois.close();
} catch (IOException e) {
    e.printStackTrace();
}
catch (MalformedURLException e1) {
    e1.printStackTrace();
}

受信側:

ObjectInputStream in = new ObjectInputStream(request.getInputStream());
try {
    names = (Names) in.readObject();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
in.close();
ObjectOutputStream out = new ObjectOutputStream(
    new FileOutputStream("C:/Documents and Settings/RAGASTH/Desktop/Names"));
out.writeObject(names);
out.close();

ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
oos.writeObject(names);
oos.close();
于 2012-10-09T11:26:54.940 に答える