您的位置:首页 > Web前端 > JavaScript

控制静态资源(html,css,js)的缓存时间的过滤器

2015-09-18 20:49 597 查看
控制静态资源(html,css,js)的缓存时间的过滤器

--------------------------------------------------------------------------------------

public class NeedCacheFilter implements Filter {

private FilterConfig filterConfig; // 用来获取配置文件中的参数

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

}

public void doFilter(ServletRequest req, ServletResponse resp,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) resp;

// 获取html、css、js各自的缓存时间,如果没有,给个默认值为1小时

int time = 1;

String uri = request.getRequestURI(); // /day19/1.html

String extendName = uri.substring(uri.lastIndexOf(".")+1);

if("html".equals(extendName)){

// 访问的html资源

String value = filterConfig.getInitParameter("html");

if(value!=null){

time = Integer.parseInt(value);

}

}

if("css".equals(extendName)){

// 访问的css资源

String value = filterConfig.getInitParameter("css");

if(value!=null){

time = Integer.parseInt(value);

}

}

if("js".equals(extendName)){

// 访问的js资源

String value = filterConfig.getInitParameter("js");

if(value!=null){

time = Integer.parseInt(value);

}

}

response.setDateHeader("Expires", System.currentTimeMillis()+time*60*60*1000);

chain.doFilter(request, response);

}

public void destroy() { }

}

--------------------------------------------------------------------------------------

配置如下

<filter>

<filter-name>NeedCacheFilter</filter-name>

<filter-class>cn.itcast.filter.example.NeedCacheFilter</filter-class>

<init-param>

<param-name>html</param-name>

<param-value>1</param-value> <!-- 单位是小时 -->

</init-param>

<init-param>

<param-name>css</param-name>

<param-value>2</param-value> <!-- 单位是小时 -->

</init-param>

<init-param>

<param-name>js</param-name>

<param-value>3</param-value> <!-- 单位是小时 -->

</init-param>

</filter>

<filter-mapping>

<filter-name>NeedCacheFilter</filter-name>

<url-pattern>*.html</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>NeedCacheFilter</filter-name>

<url-pattern>*.css</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>NeedCacheFilter</filter-name>

<url-pattern>*.js</url-pattern>

</filter-mapping>

--------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: