クッキー
クライアントサイドに保存されるテキストデータ。保存できるクッキーのサイズや個数には制限が設けられていて、ブラウザによって制限は異なる。
@WebServlet(urlPatterns={"/chapter17/add"}) public class Add extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name = "name"; String value = "value"; // Cookieの作成 Cookie cookie = new Cookie(name, value); // Cookieの生存期間を設定 cookie.setMaxAge(60*60*24); // Cookieの追加 resp.addCookie(cookie); } }
@WebServlet(urlPatterns = { "/chapter18/get" }) public class Get extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); Page.header(pw); // Cookieの取得 Cookie[] cookies = req.getCookies(); if(cookies != null) { for (Cookie cookie : cookies) { String name = cookie.getName(); String value = cookie.getValue(); pw.println("<p>" + name + ":" + value + "</p>"); } } else { pw.println("クッキーは存在しません。"); } Page.footer(pw); } }
日本語を含むクッキー
@WebServlet(urlPatterns={"/chapter18/add"}) public class Add extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //String name = "name"; //String value = "value2"; String name = URLEncoder.encode("名前", "utf-8"); String value = URLEncoder.encode("値", "utf-8"); // Cookieの作成 Cookie cookie = new Cookie(name, value); // Cookieの生存期間を設定 cookie.setMaxAge(60*60*24); // Cookieの追加 resp.addCookie(cookie); } }
@WebServlet(urlPatterns = { "/chapter18/get" }) public class Get extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); Page.header(pw); // Cookieの取得 Cookie[] cookies = req.getCookies(); if(cookies != null) { for (Cookie cookie : cookies) { //String name = cookie.getName(); //String value = cookie.getValue(); String name = URLDecoder.decode(cookie.getName(), "utf-8"); String value = URLDecoder.decode(cookie.getValue(), "utf-8"); pw.println("<p>" + name + ":" + value + "</p>"); } } else { pw.println("クッキーは存在しません。"); } Page.footer(pw); } }
もしクッキーを削除したい場合、削除用のメソッドは用意されていない。
そのため、クッキーを取得し、そのクッキーの生存期間をすべて0に設定する。