Servlets.com

Home

What's New?

com.oreilly.servlet

Servlet Polls

Mailing Lists

List Archives

Servlet Engines

Servlet ISPs

Servlet Tools

Documentation

Online Articles

The Soapbox

"Java Servlet
Programming,
Second Edition"

"Java Enterprise
Best Practices"

Speaking & Slides

About Jason

XQuery Affiliate

Advertising Info

CacheHttpServlet

com.oreilly.servlet
Class CacheHttpServlet


java.lang.Object
  |
  +--javax.servlet.GenericServlet
        |
        +--javax.servlet.http.HttpServlet
              |
              +--com.oreilly.servlet.CacheHttpServlet
All Implemented Interfaces:
java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public abstract class CacheHttpServlet
extends javax.servlet.http.HttpServlet

A superclass for HTTP servlets that wish to have their output cached and automatically resent as appropriate according to the servlet's getLastModified() method. To take advantage of this class, a servlet must:

  • Extend CacheHttpServlet instead of HttpServlet
  • Implement a getLastModified(HttpServletRequest) method as usual
This class uses the value returned by getLastModified() to manage an internal cache of the servlet's output. Before handling a request, this class checks the value of getLastModified(), and if the output cache is at least as current as the servlet's last modified time, the cached output is sent without calling the servlet's doGet() method.

In order to be safe, if this class detects that the servlet's query string, extra path info, or servlet path has changed, the cache is invalidated and recreated. However, this class does not invalidate the cache based on differing request headers or cookies; for servlets that vary their output based on these values (i.e. a session tracking servlet) this class should probably not be used.

No caching is performed for POST requests.

CacheHttpServletResponse and CacheServletOutputStream are helper classes to this class and should not be used directly.

This class has been built against Servlet API 2.2. Using it with previous Servlet API versions should work; using it with future API versions likely won't work.

Version:
0.92, 00/03/16, added synchronization blocks to make thread safe
, 0.91, 99/12/28, made support classes package protected , 0.90, 99/12/19
Author:
Jason Hunter, Copyright © 1999
See Also:
Serialized Form

Constructor Summary
CacheHttpServlet()
           
 
Method Summary
protected  void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
           
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
 
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CacheHttpServlet

public CacheHttpServlet()
Method Detail

service

protected void service(javax.servlet.http.HttpServletRequest req,
                       javax.servlet.http.HttpServletResponse res)
                throws javax.servlet.ServletException,
                       java.io.IOException
Overrides:
service in class javax.servlet.http.HttpServlet
javax.servlet.ServletException
java.io.IOException

 


Home   com.oreilly.servlet   Polls   Lists   Archives
Engines   ISPs   Tools   Docs   Articles   Soapbox   Book

Copyright © 1999-2005 Jason Hunter
Privacy Policy

webmaster@servlets.com
Last updated: October 30, 2006