package example.filters; import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; import java.util.logging.Logger; import java.util.logging.Level; /** * A cut-and-paste template for implementing a Filter that set's response headers */ public class ExampleResponseHeadersFilter implements Filter { private static final Logger log = Logger.getLogger("example.filters.ExampleResponseHeadersFilter"); /** * Called once to initialize the Filter. If init() does not * complete successfully (it throws an exception, or takes a really * long time to return), the Filter will not be placed into service. */ public void init(FilterConfig config) throws ServletException { ServletContext app = config.getServletContext(); // an example of getting an init-param String myParam = config.getInitParameter("my-param"); if (log.isLoggable(Level.CONFIG)) log.log(Level.CONFIG,"my-param value is `" + myParam + "'"); } /** * Called by Resin each time a request/response pair is passed * through the chain due to a client request for a resource at the * end of the chain. The FilterChain parameter is used by the * Filter to pass on the request and response to the next Filter in * the chain. */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain nextFilter) throws ServletException, IOException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; // call the next filter in the chain nextFilter.doFilter(req, res); // directly set headers on the response after invokation of the // filter chain // this example stops the browser from caching the page log.log(Level.FINER,"setting response headers to stop browser caching"); res.setHeader("Cache-Control","no-cache,post-check=0,pre-check=0,no-store"); res.setHeader("Pragma","no-cache"); res.setHeader("Expires","Thu,01Dec199416:00:00GMT"); } /** * Any cleanup for the filter. This will only happen once, right * before the Filter is released by Resin for garbage collection. */ public void destroy() { } }