JSP过滤器Filter配置过滤类型汇总

JSP过滤器Filter配置过滤类型汇总

一、配置方法
1 映射过滤应用程序中所有资源

loggerfilter
myfilter.LoggerFilter


loggerfilter
/ //访问当前主机,当前应用程序根下的所有文件包括多级子目录下的所有文件,注意这里前有“/”

2 过滤指定的类型文件资源

loggerfilter
myfilter.LoggerFilter


loggerfilter
.html //访问当前主机,当前应用程序根目录下的所有html文件,注意:.html前没有“/”,否则错误

其中*.html要过滤jsp那么就改*.html为*.jsp,但是注意没有“/”斜杠。如果要同时过滤多种类型资源:
方法1 url-pattern 分开写

loggerfilter
myfilter.LoggerFilter


loggerfilter
.html


loggerfilter
.jsp//访问当前主机,当前应用程序根目录以所有及子目录下的所有jsp文件

方法2 将url-pattern合并

loggerfilter
myfilter.LoggerFilter


loggerfilter
.html;.jsp
//.html;.jsp两类型之间用分号;间隔

3 过滤指定的目录下的所有文件

loggerfilter
myfilter.LoggerFilter


loggerfilter
/folder_name/*//访问当前主机,当前应用程序根目录下的folder_name子目录(可是多级子目录)下所有文件

4 过滤指定的servlet

loggerfilter
myfilter.LoggerFilter


loggerfilter
loggerservlet


loggerservlet
myfilter.LoggerServlet

5 过滤指定文件(即单一文件)

loggerfilter
myfilter.LoggerFilter


loggerfilter
/simplefilter.html

6 过滤指定目录下的指定类型的所有文件
这种情况下在web.xml中无法一次性配置完成,需要结合filter的实现类
首先在web.xml中配置过滤指定目录下的所有文件

loggerfilter
myfilter.LoggerFilter


loggerfilter
/dir_name/*

然后在filter的实现类中的doFilter方法中获取请求的uri或者url,判断uri或者url中是否包含指定文件类型的字符串,决定是否过滤
//获得用户请求的uri
String uri = request.getRequestURI();
if(uri.contains(".jsp")||uri.contains(".html"))
System.out.println(“开始过滤”+url);

7 过滤指定目录下指定类型的单一文件

loggerfilter
myfilter.LoggerFilter


loggerfilter
/dir_name/index.jsp

以上都要注意是否有斜杠“/”

二、实例
不缓存文件

NoCache
com.sys.common.Filters.ResponseHeaderFilter


Cache-Control
no-cache, must-revalidate

缓存文件一周

CacheForWeek
com.sys.common.Filters.ResponseHeaderFilter


Cache-Control
max-age=604800, public



CacheForWeek
/images/


CacheForWeek
.js


CacheForWeek
*.css

自定义的filter:
public class ResponseHeaderFilter implements Filter {
FilterConfig fc;
public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
for (Enumeration e = fc.getInitParameterNames(); e.hasMoreElements()? {
String headerName = (String) e.nextElement();
response.addHeader(headerName, fc.getInitParameter(headerName));
}
chain.doFilter(req, response);
}

public void init(FilterConfig filterConfig) {
    this.fc = filterConfig;
}

public void destroy() {
    this.fc = null;
}

}

原帖地址:http://blog.sina.com.cn/s/blog_7ffb8dd501013hqc.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值