Javaプログラミング/サーバサイド&ケータイJava

クッキーをマスターしよう(3ページ目)

ブラウザに保存できる情報「クッキー」をJSP/サーブレットから利用してみましょう。

執筆者:掌田 津耶乃

サーブレットでクッキーを追加する


では、送信されたフォーム情報を元にクッキーを新たに追加するサーブレットを作成しましょう。これはクッキー追加後、再び送信元のJSPファイル(ここではindex.jspとします)に戻るようにしておきます。前回やったRequestDispatcherを使った移動ですね。

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class NewServlet extends HttpServlet {
  
  protected void processRequest(HttpServletRequest request,
      HttpServletResponse response)
      throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    // クッキーの追加
    String name = request.getParameter("name");
    String value = request.getParameter("value");
    if (name != null && value != null) {
      Cookie newcookie = new Cookie(name,value);
      newcookie.setMaxAge(60 * 60 * 24 * 1);
      response.addCookie(newcookie);
    }
    
    ServletContext context = this.getServletContext();
    RequestDispatcher dispatcher =
        context.getRequestDispatcher("/index.jsp");
    dispatcher.forward(request,response);
  }
  
  protected void doGet(HttpServletRequest request,
      HttpServletResponse response)
      throws ServletException, IOException {
    processRequest(request, response);
  }
  
  protected void doPost(HttpServletRequest request,
      HttpServletResponse response)
      throws ServletException, IOException {
    processRequest(request, response);
  }
}


 ざっとこんな感じになるでしょうか。ここではdoGet/doPostの両方からprocessRequestを呼び出す形で書いてあります。最初にsetCharacterEncodingした後、getParameterでそれぞれの送信情報を取り出し、新規にCookieインスタンスを作ってresponse.addCookieをするだけです。

ただし、ここで注意しておきたいのは、addCookieする前に「newcookie.setMaxAge」というものを呼び出しているという点です。これは、「クッキーの保管期間を設定する」という働きをするものです。これで引数に秒数を設定すると、それだけの時間が経過するまでクッキーを保存し続けます。ここでは1日だけ保存するようにしてあるわけですね。

「もし、setMaxAgeしなかったらどうなるか?」というと、その場合はブラウザ終了とともにクッキーも消えてしまいます。つまり、アクセスしている間(正確にはセッションが確立されている間)だけ保持され、後に残らないクッキーとなるのです。これはこれで使い道がありますから、覚えておきましょう。


  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます