2012-04-10 12 views
0
/** 
* 
*/ 


public class NoCacheFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     HttpServletRequest httpReq = (HttpServletRequest) request; 
     HttpServletResponse httpRes = (HttpServletResponse) response; 

     if (!httpReq.getRequestURI().startsWith(httpReq.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc) 
      httpRes.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
      httpRes.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
      httpRes.setDateHeader("Expires", 0); // Proxies. 
     } 

     chain.doFilter(request, response); 
    } 

    // ... 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

    @Override 
    public void destroy() { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 
} 

Aber es funktioniert nicht, ich kann immer noch Seiten erhalten, während Sie die Vorwärts-und Zurück-Tasten drücken. Bitte helfen. Ich habe bereits alle vorhandenen Cache gelöscht.BrowserCache Entfernung funktioniert nicht

Antwort

1

Sie sollten Ausnahmen während Filter init() und destroy() nicht absichtlich auslösen. Wenn die init() eine Ausnahme auslöst, wird der Filter nicht in Betrieb genommen und einige Server werden die Bereitstellung der Webanwendung sogar vollständig abbrechen.

Sie sollten nichts tun wenn Sie nichts zu implementieren haben.

@Override 
public void init(FilterConfig filterConfig) throws ServletException { 
    // NOOP. 
} 

@Override 
public void destroy() { 
    // NOOP. 
} 

Sie müssen auch sicherstellen, dass der Filter dem richtigen URL-Muster oder Servlet-Namen zugeordnet ist. Am einfachsten ist es, einen @WebFilter("Faces Servlet") auf die Klasse zu setzen, wobei Faces Servlet der genaue Servlet-Name des FacesServlet Eintrags ist, wie Sie in web.xml haben.

+0

Danke Es funktioniert jetzt gut. – user1281029