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