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>