caching - how to disable web page cache throughout the servlets -
to no-cache web page, in java controller servlet, did somthing in method:
public modelandview home(httpservletrequest request, httpservletresponse response) throws exception { modelandview mav = new modelandview(viewconstants.mv_main_home); mav.addobject("testing", "test string"); mav.addobject(request); response.setheader("cache-control", "no-cache, no-store"); response.setheader("pragma", "no-cache"); response.setdateheader("expires", 0); return mav; }
but works particular response object. have many similar methods in servlet. , have many servlets too.
if want disable cache throughout application, should do? (i not want add above code every single response object).
why not via filter?
a filter is object can transform header , content (or both) of request or response.
...
the main tasks filter can perform follows:
...
- modify response headers , data. providing customized version of response.
just register filter (class implementing filter interface) , modify response within dofilter
method.
edit: e.g.
@webfilter("/*") public class nocachefilter implements javax.servlet.filter { @override public void init(final filterconfig filterconfig) throws servletexception { } @override public void dofilter(final servletrequest servletrequest, final servletresponse servletresponse, final filterchain filterchain) throws ioexception, servletexception { httpservletrequest request = (httpservletrequest)servletrequest; httpservletresponse response = (httpservletresponse) servletresponse; response.setheader("cache-control", "no-cache, no-store"); response.setheader("pragma", "no-cache"); response.setdateheader("expires", 0); filterchain.dofilter(request, response); } @override public void destroy() { } }
note @webfilter
annotation require servlet 3.0, otherwise can register via web.xml
. path of "/*", apply path of application, narrowed in scope.
Comments
Post a Comment