Home Segments Top Top Previous Next

1058: Mainline

What you have learned about cookies is put to use in the following revision of the servlet, ProcessCriticFormServlet, defined previously in Segment 1049. Note that, because cookie values are always strings, you must convert them to int values.

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
public class ProcessCriticFormServlet extends HttpServlet {  
 public void doGet (HttpServletRequest request, HttpServletResponse response) 
             throws ServletException, IOException { 
  // Process arguments 
  String title = request.getParameter("title"); 
  String script = request.getParameter("script"); 
  String acting = request.getParameter("acting"); 
  String direction = request.getParameter("direction"); 
  // Cookie processing 
  int voteCount = 0; 
  Cookie [] cookies = request.getCookies(); 
  System.out.println("There are " + cookies.length + " cookies"); 
  // Look for existing cookie 
  for (int i = 0; i < cookies.length; ++i) { 
   if("votes".equals(cookies[i].getName())) { 
    voteCount = Integer.parseInt(cookies[i].getValue()); 
   } 
  } 
  // Write new cookie 
  ++voteCount; 
  Cookie cookie = new Cookie("votes", String.valueOf(voteCount)); 
  response.addCookie(cookie); 
  // Writing preparation 
  response.setContentType("text/html"); 
  PrintWriter webWriter = response.getWriter(); 
  // Writing HTML page goes here 
  // New line informing users of the vote count 
  webWriter.println("You have cast "  
                    + voteCount  
                    + (voteCount == 1 ? " vote" : " votes")  
                    + " so far<p>");   
  // Rest of writing HTML page goes here 
  // File output goes here 
}}