Home > Articles > Programming > Java

  • Print
  • + Share This
This chapter is from the book

8.4 Examples of Setting and Reading Cookies

Listing 8.1 and Figure 8–1 show the SetCookies servlet, a servlet that sets six cookies. Three have the default expiration date, meaning that they should apply only until the user next restarts the browser. The other three use setMaxAge to stipulate that they should apply for the next hour, regardless of whether the user restarts the browser or reboots the computer to initiate a new browsing session.

Listing 8.2 shows a servlet that creates a table of all the cookies sent to it in the request. Figure 8–2 shows this servlet immediately after the SetCookies servlet is visited. Figure 8–3 shows it after SetCookies is visited then the browser is closed and restarted.

Figure 8–1 Result of SetCookies servlet.

Figure 8–2 Result of visiting the ShowCookies servlet within an hour of visiting SetCookies in the same browser session.

Figure 8–3 Result of visiting the ShowCookies servlet within an hour of visiting SetCookies in a different browser session.

Listing 8.1 SetCookies.java

package coreservlets;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/** Sets six cookies: three that apply only to the current
 * session (regardless of how long that session lasts)
 * and three that persist for an hour (regardless of
 * whether the browser is restarted).
 */

public class SetCookies extends HttpServlet {
 public void doGet(HttpServletRequest request,
          HttpServletResponse response)
   throws ServletException, IOException {
  for(int i=0; i<3; i++) {
   // Default maxAge is -1, indicating cookie
   // applies only to current browsing session.
   Cookie cookie = new Cookie("Session-Cookie " + i,
                 "Cookie-Value-S" + i);
   response.addCookie(cookie);
   cookie = new Cookie("Persistent-Cookie " + i,
             "Cookie-Value-P" + i);
   // Cookie is valid for an hour, regardless of whether
   // user quits browser, reboots computer, or whatever.
   cookie.setMaxAge(3600);
   response.addCookie(cookie);
  } 
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  String title = "Setting Cookies";
  out.println
   (ServletUtilities.headWithTitle(title) +
    "<BODY BGCOLOR=\"#FDF5E6\">\n" +
    "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
    "There are six cookies associated with this page.\n" +
    "To see them, visit the\n" +
    "<A HREF=\"/servlet/coreservlets.ShowCookies\">\n" +
    "<CODE>ShowCookies</CODE> servlet</A>.\n" +
    "<P>\n" +
    "Three of the cookies are associated only with the\n" +
    "current session, while three are persistent.\n" +
    "Quit the browser, restart, and return to the\n" +
    "<CODE>ShowCookies</CODE> servlet to verify that\n" +
    "the three long-lived ones persist across sessions.\n" +
    "</BODY></HTML>");
 }
}

Listing 8.2 ShowCookies.java

package coreservlets;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/** Creates a table of the cookies associated with
 * the current page.
 */

public class ShowCookies extends HttpServlet {
 public void doGet(HttpServletRequest request,
          HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  String title = "Active Cookies";
  out.println(ServletUtilities.headWithTitle(title) +
        "<BODY BGCOLOR=\"#FDF5E6\">\n" +
        "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
"<TABLE BORDER=1 ALIGN=\"CENTER\">\n" +
        "<TR BGCOLOR=\"#FFAD00\">\n" +
        " <TH>Cookie Name\n" +
        " <TH>Cookie Value");
  Cookie[] cookies = request.getCookies();
  Cookie cookie;
  for(int i=0; i<cookies.length; i++) {
   cookie = cookies[i];
   out.println("<TR>\n" +
         " <TD>" + cookie.getName() + "\n" +
         " <TD>" + cookie.getValue());
  }
  out.println("</TABLE></BODY></HTML>");
 }
}
  • + Share This
  • 🔖 Save To Your Account