CounterServlet.java

/**
 * CounterServlet
 * 
 * Maintains a reload count using Cookies
 * 
 * by Paul Colton
 * (c) 1999 Allaire Corporation
 */

import java.io.*;
import java.util.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

/**
 * CounterServlet extends JRunDemoServlet and maintains a
 * a page hit count in a cookie.
 */
public class CounterServlet extends JRunDemoServlet {

	public void service( HttpServletRequest req, HttpServletResponse res ) 
	   throws IOException {
		// Set the content-type to HTML.
		res.setContentType( "text/html; charset=euc-jp" );

		// Get the PrintWriter for the servlet response.
		PrintWriter out = res.getWriter();

		// Begin the demo page. This method is defined in JRunDemoServlet.
		generateDemoPageStart( out );

		// Build the demo page
		Cookie ourCookie = null;
		// Get all cookies
		Cookie[] cookies = req.getCookies();
        // If we get something back, look for a cookie named counter.
		if( cookies != null ) {
			for( int i=0; i<cookies.length; i++ ) {
				if( cookies[i].getName().equals( "counter" ) ) {
					ourCookie = cookies[i];
					break;
				}
			}
		}
		
		// If the counter cookie doesn't exist, create it and set the value to 1.
		if( ourCookie == null ) {
			out.println( "<CENTER>" );
			out.println( "<FONT SIZE=+1 FACE=\"arial\">" );
			out.println( "カウンタ クッキーが設定されています!<P>" );
			out.println( "</CENTER>" );
			res.addCookie( new Cookie( "counter", "1" ) );
		}
		// Else the counter cookie exists. Display its current value and
		// reset the cookie with an incremented value.
		else {
			int i = 1;
			try { i = Integer.parseInt( ourCookie.getValue() ); } catch( Exception e) {}
			out.println( "<CENTER>" );
			out.println( "<FONT SIZE=+1 FACE=\"arial\">" );
			out.println( "値により見つかったカウンタ クッキー '" + i + "'!<P>" );
			out.println( "</CENTER>" );
			i++;
			res.addCookie( new Cookie( "counter", "" + i ) );
		}
		
		out.println( "<P>" );
		out.println( "<CENTER>" );
		// Reloading the page increments the counter cookie.
		out.println( "<A HREF=\"" + req.getRequestURI() + "\">このページを再ロードします。</A>" );
		out.println( "</CENTER>" );
		
		// End the demo page. This method is defined in JRunDemoServlet.
		generateDemoPageEnd( req, res, out );
	}
	
}