We typically use a simple little filter to add cache-control headers to results.
Of course there is no guarantee the browser will respect it (although
the spec say it must be obeyed
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9).
In web.xml:
<filter>
<description>Cache-Control for Dynamic resources</description>
<filter-name>NoCacheFilter</filter-name>
<filter-class>com.mycompany.SetHeadersFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>max-age=0, must-revalidate</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NoCacheFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
public class SetHeadersFilter implements Filter
{
private FilterConfig _filterConfig;
public SetHeadersFilter()
{
super();
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain filterChain)
throws IOException, ServletException
{
HttpServletResponse response = (HttpServletResponse) res;
for (Enumeration<?> e = _filterConfig.getInitParameterNames();
e.hasMoreElements();)
{
String header = (String) e.nextElement();
response.setHeader(header, _filterConfig.getInitParameter(header));
}
filterChain.doFilter(req, res);
}
public void init(FilterConfig filterConfig)
{
this._filterConfig = filterConfig;
}
public void destroy()
{
this._filterConfig = null;
}
}
On Tue, Sep 7, 2010 at 11:50 AM, Oscar <[email protected]> wrote:
> Hi to all, i have a little requirement in my application. Clients need that,
> after logout, When they press the browser Back button, it shows that user
> doesn't have permission because he was already logged out. For example, if
> i'm inside the application and in that right moment i'm seeing some sensible
> info and press the logout button, when they press browser Back button they
> can't see that sensible info.
>
> For me, it looks like a situation where i have to reset the browser cache or
> something like that. I googled a lot about that and i find that delete cache
> is impossible, but i find some javascript scripts, or use
> response.setHeaders but none of that worked for me.
>
> I'm working with Struts 2.1.8 and i found that i can override the parameter
> struts.serve.static.browserCache in struts.xml to enable struts to add the
> necessary headers to all static content. But isn't working. I assured that
> struts.serve.static = true as says in the documentation:
>
> ### Used by FilterDispatcher
>
>> ### This is good for development where one wants changes to the static
>> content be
>> ### fetch on each request.
>> ### NOTE: This will only have effect if struts.serve.static=true
>>
>> ### If true -> Struts will write out header for static contents such that
>> they will
>> ### be cached by web browsers (using Date, Cache-Content,
>> Pragma, Expires)
>> ### headers).
>> ### If false -> Struts will write out header for static contents such that
>> they are
>>
>> ### NOT to be cached by web browser (using Cache-Content, Pragma,
>> Expires
>> ### headers)
>>
>>
>>
>>
> But it doesn't work. Somebody knows why doesn't work or another way to avoid
> cache after i logout from a Struts application (to avoid show cached content
> when user press Back button)?
>
>>
>> Thanks in advance.
>>
>>
>
> --
> Oscar Calderón
> SCJP 6 <http://javahowto.net>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]