ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

クッキーの読み書き

機能概要

 サーブレットを使って、Cookieの書込みと読出しを行います。 最初にアクセスしたときに書込んだ、Cookieの値「Hello World!」を読込んで表示します。

画面構成

 Cookieの値(Hello World!)を読込んで表示します。  最初に、サーブレットを実行すると、Cookieを書込みますので、リロードしてください。

HelloCookie×
Write Cookie
リロードしてください。

 以降、サーブレットを実行すると、以下のような画面が表示されます。

HelloCookie×
Hello World!
Cookieのサンプル(HelloCookie.java)

ソースプログラムの作成

 以下のJavaサーブレットのソースを作成します。
 日本語のページの場合は、ContentType設定でcharsetの指定が必要です。 ContentType設定は、getWriterの前に実行しなければなりません。

HelloCookie.java
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/
package jp.ash.example;

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

/** クッキー読み書きサーブレット **/
public class HelloCookie extends HttpServlet {
  public void doGet (HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
    PrintWriter out;
    Cookie[] cookies;
    Cookie cookie;

    // Cookieの取得
    cookies = req.getCookies();
    cookie = null;
    for(int i=0; i < cookies.length; i++) {
      cookie = cookies[i];
      if (cookie.getName().equals("HelloCookie")) { break; }
    }

    if (cookie == null) {
      // Cookieの書込み
      cookie = new Cookie("HelloCookie", "Hello World!");
      cookie.setMaxAge(Integer.MAX_VALUE);
      res.addCookie(cookie);

      res.setContentType("text/html; charset=Shift_JIS");
      out = res.getWriter();

      out.println("<html><body>");
      out.println("<h1>Write Cookie</h1>");
      out.println("<p>リロードしてください。</p>");
      out.println("</body></html>");

    } else {
      // Cookieの表示
      res.setContentType("text/html; charset=Shift_JIS");
      out = res.getWriter();

      out.println("<html><body>");
      out.println("<h1>");
      out.println(cookie.getValue());
      out.println("</h1>");
      out.println("<p>Cookieのサンプル(HelloCookie.java)</p>");
      out.println("</body></html>");
    }
  }
}

サーブレットの登録

 以下の内容をweb.xmlに追加します。

web.xmlの変更内容
<servlet>
  <servlet-name>HelloCookie</servlet-name>
  <servlet-class>jp.ash.hellocookie.HelloCookie</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>HelloCookie</servlet-name>
  <url-pattern>/HelloCookie/*</url-pattern>
</servlet-mapping>


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp