目前,我正在使用这里描述的Servlet过滤器的修改版本:
http://onjava.com/pub/a/onjava/2004/03/03/filters.html
并将其连接到条调度器servlet,如下所示:
<filter-mapping>
<filter-name>CacheControl</filter-name>
<servlet-name>StripesDispatcher</servlet-name>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
这是可行的:但是有控制我所有内容的效果--我如何才能在每个JSP基础和/或每个actionBean方法基础上获得控制?
我打算尝试扩展'ForwardResolution‘并在这里注入,但是似乎不能在我自己的包结构中实现这一点?(我认为受保护的构造函数)。
我还有两个想法(我不喜欢这个声音)是:
effect).
顺便说一句,我的过滤器似乎每一个invocation...is都会被调用两次--这可能是我将过滤器连接到条纹servlet的方式的副作用吧?
发布于 2010-12-16 10:56:26
实际上,进一步的研究表明,条纹1.5有一个注释机制,用于控制HTTP缓存头:
http://www.stripesframework.org/display/stripes/News
//客户端缓存控制。新的@HttpCache注释可以应用于ActionBean类和/或事件处理程序方法,以控制客户端缓存响应的方式。方法的注释覆盖类上的注释,注释从超类继承而来。这对于来自IE的AJAX调用特别有用。//
发布于 2010-12-16 06:38:57
我将向后开始--您的筛选器会被调用两次,可能是因为同一个页面请求两种资源--例如,页面和css。或者打个ajax电话。
然后,如果您想控制每个请求的资源的缓存,下面是两个servlet唯一的解决方案。我不知道条纹,所以可能还有更好的:
CacheUtils.addCacheHeaders(response)
说。在此方法中,将所有缓存头添加到响应中。在您喜欢的任何地方调用它--一行用于添加缓存。这是一个可编程的approachinit-param
中。init(..)
方法解析param,将其存储在列表中,并仅在当前请求uri (request.getRequestURI()
)与列表中的请求uri(request.getRequestURI()
)匹配时应用缓存。这是一种声明式方法--https://stackoverflow.com/questions/4456189
复制相似问题