No cache filter

When displaying pages in a web application, they are normally dynamic, rendering data from a database. You need to setup the web page so that it will not be cached.

Here's the code for the filter:

package com.---.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class NoCacheFilter implements Filter
{

   @Override
   public void destroy()
   {
   }

   @Override
   public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException,
            ServletException
   {
      // Set the headers up so that the browser will not cache requests.
      HttpServletResponse resp = (HttpServletResponse)response;
      resp.setHeader("Expires", "Friday, 1 Jan 2010 12:00:00 GMT");
      resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
      resp.addHeader("Cache-Control", "post-check=0, pre-check=0");
      resp.setHeader("Pragma", "no-cache");
      chain.doFilter(req, resp);
   }

   @Override
   public void init(FilterConfig arg0) throws ServletException
   {
   }
}

Add this to web.xml:

<!-- Filter to stop the browser caching. -->
<filter>
  <filter-name>noCacheFilter</filter-name>
  <filter-class>com.---.filter.NoCacheFilter</filter-class>
</filter>

...

<filter-mapping>
  <filter-name>noCacheFilter</filter-name>
  <url-pattern>*</url-pattern>
</filter-mapping>