サーブレットを使って、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> |