アプレット−サーブレット間の通信を実現する方法(Tomcat 3.2.4)

・htmlのソース

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
        <meta http-equiv="Pragma" content="no-cache">
        <title>communication</title>
    </head>
    <body>
        <applet code="Communication.class" codebase="." archive="communication.jar" width="200"  height="150">
    </body>
</html>


・アプレットのソース

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class Communication extends Applet{
    private Button button;
    private TextArea textArea;
    private ActionListener buttonAction = new ActionListener(){
        public void actionPerformed(ActionEvent e){
            button_pushed(e);
        };
    };

    public void init(){
        button = new Button("リクエスト");
        textArea = new TextArea(4, 20);
        button.addActionListener(buttonAction);
        add(button);
        add(textArea);
    }

    private void button_pushed(ActionEvent e){
        try{
            String sendParam = "applet -> servlet";
            URL url = getCodeBase();
            String strURL = url.toString() + "servlet/TestServlet";
            url = new URL(strURL);
            HttpURLConnection connect = (HttpURLConnection)url.openConnection();

            // POSTのための設定
            connect.setDoOutput(true);
            connect.setDoInput(true);
            connect.setUseCaches(false);

            OutputStream outStream = connect.getOutputStream();
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(outStream);

            objectOutputStream.writeObject(sendParam);
            objectOutputStream.flush();
            objectOutputStream.close();

            InputStream inStream = connect.getInputStream();
            ObjectInputStream objectInStream = new ObjectInputStream(inStream);
            String reciveParam = (String)objectInStream.readObject();
            inStream.close();
            textArea.setText(reciveParam);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
}


・サーブレットのソース

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class TestServlet extends HttpServlet{

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        InputStream inStream = request.getInputStream();
        try{
            // パラメタ取得
            ObjectInputStream objectInputStream = new ObjectInputStream(inStream);
            String reciveParam = (String)objectInputStream.readObject();
            objectInputStream.close();
            System.out.println(reciveParam);

            // パラメータ送信
            String sendParam = "servlet -> applet";
            response.setContentType("application/octet-stream");
            OutputStream outStream = response.getOutputStream();
            ObjectOutputStream objectOutStream = new ObjectOutputStream(outStream);
            objectOutStream.writeObject(sendParam);
            outStream.flush();
            outStream.close();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}


・実行結果