JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > サーブレット(クッキー)編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2002/11/20  田中宏和
サーブレット(クッキー)編
◆サーブレットとは
サーブレットはサーバーで動くJavaのプログラムです。クライアントのWEBブラウザから要求があると、サーブレットのプログラムがHTMLやその他のリソースを動的に生成して結果をWEBブラウザに返します。
◆クッキーとは
WEBサーバーがそのサイトを訪れた訪問者のコンピューターにデータを一時的に保存する仕組みのことです。次に訪問者が同じサイトを訪れたとき、保存してあるクッキーをWEBサーバーに提出することで前回のやり取りを復元したりできるようになります。クッキーには有効期限を設定することができ、有効期限を過ぎたクッキーは消滅します。これらの作業はブラウザが行ってくれるのでサイトの訪問者は意識することなく利用できます。
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
Tomcat 4.0.6
◆Tomcatを使用可能にする
サーブレット編を参考にしてTomcatを使用可能にしてください。
◆クッキーを保存するサーブレット
まず、クッキーを保存するサーブレットを作ります。
HelloWorldSetCookie.java(ここからダウンロード)
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.net.*;

public class HelloWorldSetCookie extends HttpServlet {
  //HTTP リクエストの処理
  public void service(HttpServletRequest request,
                      HttpServletResponse response)
                         throws ServletException, IOException {

    // クッキーに保存する文字列をURLエンコードします
    String value = URLEncoder.encode("クッキーでHello World" , "Shift_JIS");
    // "message"という名前のクッキーを作成
    Cookie cookie = new Cookie("message" , value);
    // クッキーの有効期間を1日に設定(秒単位で指定)
    cookie.setMaxAge(60 * 60 * 24 * 1);
    // クッキーを発行します
    response.addCookie(cookie);

    // Webページの表示
    response.setContentType("text/html; charset=Shift_JIS");
    PrintWriter out = response.getWriter();
    out.println("クッキーに保存しました");
  }
}
 
 
◆Tomcatで表示してクッキーを保存してみよう
上のソースをコンパイルして、生成されたクラスファイルをC:\Program Files\Apache Tomcat 4.0\webapps\examples\WEB-INF\classesの下にコピーしてください。コンパイル方法をサーブレット編を参考にしてください。コピーしたらTomcatを起動して下のURLをブラウザで見てください。
http://localhost:8080/examples/servlet/HelloWorldSetCookie
おおお!これで"message"という名前のクッキーが保存されました。
 
◆クッキーを取得するサーブレット
今度はきちんとクッキーが保存されているか確認してみます。以下がクッキーの値を取得するサーブレットです。
HelloWorldGetCookie.java(ここからダウンロード)
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.net.*;

public class HelloWorldGetCookie extends HttpServlet {
  //HTTP リクエストの処理
  public void service(HttpServletRequest request,
                      HttpServletResponse response)
                         throws ServletException, IOException {

    // 保存されているすべてのクッキーの配列を取得します
    Cookie[] cookies = request.getCookies();

    // 目的のクッキーを保存するためのクッキーオブジェクト
    Cookie helloCookie = null;
    if (cookies!=null) {
      for (int i=0;i<cookies.length;i++) {
        // 名前が"message"のクッキーかどうかチェック
        if (cookies[i].getName().equals("message")) {
          // 該当するクッキーを取得します
          helloCookie = cookies[i];
        }
      }
    }


    String message = "クッキーにメッセージが保存されていません";
    // 該当するクッキーが見つかった場合
    if (helloCookie != null) {
      // クッキーに設定されてる値をURLデコードします
      message = URLDecoder.decode(helloCookie.getValue(),"Shift_JIS");
    }

    // Webページの表示
    response.setContentType("text/html; charset=Shift_JIS");
    PrintWriter out = response.getWriter();
    out.println("クッキーから取得した値:" + message);
  }
}
 
 
◆クッキーの値を表示してみよう
上のソースをコンパイルしてTomcatで表示してみましょう。コンパイルしたクラスファイルを[Tomcatのフォルダ]\webapps\examples\WEB-INF\classesの下にコピーしてください。コピーしたらTomcatを再起動して下のURLをブラウザで開きます。
http://localhost:8080/examples/servlet/HelloWorldGetCookie
おおおお!クッキーに保存されている値を取得できましたね!ここではクッキーの有効期限を1日に設定してあるので明日上のURLを指定するともうクッキーが消滅しています。
 
■関連
サーブレット編
サーブレット(Linux)編

 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME