对action响应的配置其实也不是很特别,这里主要提到的是Key的配置:
<filter> <filter-name>CacheFilter</filter-name> <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class> <init-param> <param-name>time</param-name> <param-value>600</param-value><!-- 单位秒 --> </init-param> <init-param> <param-name>scope</param-name> <param-value>session</param-value> </init-param> <init-param> <param-name>ICacheKeyProvider</param-name> <param-value>com.xiva.common.IvCacheKeyProvider</param-value> </init-param> </filter> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>/user/userInfoList.action</url-pattern> </filter-mapping>
ICacheKeyProvider是CacheFilter的一个初始化参数,参考源码如下:
// filter parameter ICacheKeyProvider
ICacheKeyProvider cacheKeyProviderParam = (ICacheKeyProvider)instantiateFromInitParam("ICacheKeyProvider", ICacheKeyProvider.class, this.getClass().getName());
if (cacheKeyProviderParam != null) {
setCacheKeyProvider(cacheKeyProviderParam);
}
package com.xiva.common;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.oscache.base.Cache;
import com.opensymphony.oscache.web.ServletCacheAdministrator;
import com.opensymphony.oscache.web.filter.ICacheKeyProvider;
public class IvCacheKeyProvider implements ICacheKeyProvider
{
@Override
public String createCacheKey(HttpServletRequest httpRequest, ServletCacheAdministrator scAdmin, Cache cache)
{
// buffer for the cache key
StringBuffer buffer = new StringBuffer(100);
buffer.append(httpRequest.getRequestURI());
buffer.append('_');
buffer.append(httpRequest.getParameter("start"));
buffer.append('_');
buffer.append(httpRequest.getParameter("limit"));
buffer.append('_');
buffer.append(httpRequest.getParameter("orgId"));
return buffer.toString();
}
}
上面是对接口的实现IvCacheKeyProvider
OSCache下载地址:https://java.net/downloads/oscache/