用 Servlet Filter 缓存页面图片、js教本等静态信息(源码)
来源:互联网 发布:jsp源码下载 编辑:程序博客网 时间:2024/05/18 06:20
/*
* <p>Company: 凌科软件 www.cio88.com </p>
* @author liubaojun
* @version 1.0
* 来源于 elinkBSP(业务架构平台) 部分源代码
*/
package com.elink.control;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.elink.util.*;
/**
* @author liubj
*/
public class BusiCacheFilter implements Filter
{
private FilterConfig config = null;
private HashMap expiresMap = new HashMap();
public void init(FilterConfig filterConfig)
{
this.config = filterConfig;
expiresMap.clear();
Enumeration names = config.getInitParameterNames();
while( names.hasMoreElements() )
{
try
{
String name = (String)names.nextElement();
String value = config.getInitParameter( name );
Integer expire = Integer.valueOf( value );
expiresMap.put( name, expire );
}
catch( Exception ex)
{
}
}
}
public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String uri = req.getRequestURI();
String ext = null;
int dot = uri.lastIndexOf(".");
if( dot != -1 )
{
ext = uri.substring( dot+1 );
}
setResponseHeader( res, uri, ext );
chain.doFilter(request, response);
}
public void destroy()
{
}
protected FilterConfig getFilterConfig()
{
return (config);
}
private void setResponseHeader( HttpServletResponse response, String uri, String ext )
{
if( ext!= null && ext.length() > 0 )
{
Integer expires = (Integer)expiresMap.get(ext);
if( expires != null )
{
LogUtil.logDebug( uri + ".Expires: "+ expires.intValue());
if( expires.intValue() > 0 )
{
response.setHeader("Cache-Control","max-age="+expires.intValue()); //HTTP 1.1
}
else
{
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0 );
}
}
}
}
}
web.xml
<filter>
<filter-name>busicachefilter</filter-name>
<filter-class>com.elink.control.BusiCacheFilter</filter-class>
<init-param>
<param-name>js</param-name>
<param-value>3600</param-value>
</init-param>
<init-param>
<param-name>gif</param-name>
<param-value>3600</param-value>
</init-param>
<init-param>
<param-name>jpg</param-name>
<param-value>3600</param-value>
</init-param>
<init-param>
<param-name>css</param-name>
<param-value>3600</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
转载处: http://blog.csdn.net/netcom19/article/details/213141
- 用 Servlet Filter 缓存页面图片、js教本等静态信息(源码)
- 用 Servlet Filter 缓存页面图片、js教本等静态文件
- [Filter过滤器]解决缓存网站图片,css,js等问题
- Nginx对于图片,js等静态文件的缓存设置
- 用ajax清除浏览器缓存的js、css、图片等
- 用ajax清除浏览器缓存的js、css、图片等
- 静态页面html防止js加载缓存
- Filter实现浏览器是否缓存页面信息,和控制编码
- Filter实现浏览器是否缓存页面信息,和控制编码
- Nginx/Apache 对图片,css,js等优化,静态页面设置过期时间
- spring mvc 页面访问图片或者js等静态文件路径出错问题
- 禁止IIS缓存静态文件(png,js,html等)
- 用servlet获取IP等信息
- servlet跳转页面导致css,js等失效的问题
- 处理页面加载图片js(等比例压缩图片)
- 缓存静态页面
- 缓存静态页面类
- 普通静态页面缓存
- velocity的使用-语法
- MFC窗口各控件的颜色和字体的设置
- nhibernate3.2 连接 oracle
- 安装android SDK找不到jdk
- 对mars-droid第二季第三集视频的小问题的修正
- 用 Servlet Filter 缓存页面图片、js教本等静态信息(源码)
- 历年春节联欢晚会详细节目单(1983-2015) 整理的很详细!
- spring管理service类
- (2011.09.09 )2_a2.cpp -- 顺序表 -- 过滤顺序表中的元素
- ubuntu下常用的命令(2)
- J2EE 升级到 hibernate-core-3.6.0 后出现的错误
- 如何卸载Windows Search 4.0,花了我好长时间!
- 抽象类和接口的区别
- JavaScript操作浏览器Cookie