Servlet日記(1999/12/27)

本日の成果

 前回に引き続き、AppletとServletの通信を試してみます。前回との違いは、Objectをシリアライズして送受信しているところです。ObjectInputStream, ObjectOutputStreamを用いています。

 Appletの主要部分は、こんな感じ。

  private String getHttpObject(String s) {
    String out = null;
    try {
      URL url = new URL(getCodeBase(), "/servlet/HttpObjectServlet");
      URLConnection con = url.openConnection();
      con.setRequestProperty("CONTENT_TYPE", "application/octet-stream");
      con.setUseCaches(false);
      con.setDoInput(true);
      con.setDoOutput(true);

      ObjectOutputStream oos = new ObjectOutputStream(con.getOutputStream());
      oos.writeObject(s);
      oos.flush();

      ObjectInputStream ois = new ObjectInputStream(con.getInputStream());
      out = (String)ois.readObject();

      oos.close();
      ois.close();
      return out;
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

 Servletの方は、こんな感じ。

  public void service(HttpServletRequest req, HttpServletResponse res)
      throws ServletException, IOException {
    try {
      ObjectInputStream ois = new ObjectInputStream(req.getInputStream());
      String s = (String)ois.readObject();

      res.setContentType("application/octet-stream");
      ObjectOutputStream oos = new ObjectOutputStream(res.getOutputStream());
      oos.writeObject(s.toUpperCase());
      oos.flush();

      ois.close();
      oos.close();
    } catch (Exception e) {
      log(e.getMessage());
    }
  }

本日の教訓

 オブジェクトをシリアライズして送受信できるのはたいへん便利です。これはいいです。

Servlet日記(1999/11/27) Servlet日記の目次 Servlet日記(2000/01/03)