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

发布时间 - 2026-01-10 23:14:10    点击率:

一、配置方法

1 映射过滤应用程序中所有资源

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>/*</url-pattern> //访问当前主机,当前应用程序根下的所有文件包括多级子目录下的所有文件,注意这里*前有“/”
</filter-mapping>

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

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>*.html</url-pattern> //访问当前主机,当前应用程序根目录下的所有html文件,注意:*.html前没有“/”,否则错误
</filter-mapping>

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

方法1 url-pattern 分开写

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>*.jsp</url-pattern>//访问当前主机,当前应用程序根目录以所有及子目录下的所有jsp文件
</filter-mapping>

方法2 将url-pattern合并

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>*.html;*.jsp</url-pattern>
</filter-mapping>//*.html;*.jsp两类型之间用分号;间隔

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

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>/folder_name/*</url-pattern>//访问当前主机,当前应用程序根目录下的folder_name子目录(可是多级子目录)下所有文件
</filter-mapping>

4 过滤指定的servlet

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <servlet-name>loggerservlet</servlet-name>
</filter-mapping>
<servlet>
  <servlet-name>loggerservlet</servlet-name>
  <servlet-class>myfilter.LoggerServlet</servlet-class>
</servlet>

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

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>/simplefilter.html</url-pattern>
</filter-mapping>

6 过滤指定目录下的指定类型的所有文件

这种情况下在web.xml中无法一次性配置完成,需要结合filter的实现类

首先在web.xml中配置过滤指定目录下的所有文件

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>/dir_name/*</url-pattern>
</filter-mapping>

然后在filter的实现类中的doFilter方法中获取请求的uri或者url,判断uri或者url中是否包含指定文件类型的字符串,决定是否过滤

//获得用户请求的uri
String uri = request.getRequestURI();
if(uri.contains(".jsp")||uri.contains(".html"))
System.out.println("开始过滤"+url);

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

<filter>
  <filter-name>loggerfilter</filter-name>
  <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>loggerfilter</filter-name>
  <url-pattern>/dir_name/index.jsp</url-pattern>
</filter-mapping>

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

二、实例

不缓存文件

<filter>
  <filter-name>NoCache</filter-name>
  <filter-class>com.sys.common.Filters.ResponseHeaderFilter
    </filter-class>
  <init-param>
   <param-name>Cache-Control</param-name>
   <param-value>no-cache, must-revalidate</param-value>
  </init-param>
 </filter>

缓存文件一周

 <filter>
  <filter-name>CacheForWeek</filter-name>
  <filter-class>com.sys.common.Filters.ResponseHeaderFilter
    </filter-class>
  <init-param>
   <param-name>Cache-Control</param-name>
   <param-value>max-age=604800, public</param-value>
  </init-param>
 </filter>
<filter-mapping>
  <filter-name>CacheForWeek</filter-name>
  <url-pattern>/images/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>CacheForWeek</filter-name>
  <url-pattern>*.js</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>CacheForWeek</filter-name>
  <url-pattern>*.css</url-pattern>
 </filter-mapping>

自定义的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;
  }

}

以上这篇JSP过滤器Filter配置过滤类型全部汇总就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# filter  # 过滤器  # 通过过滤器(Filter)解决JSP的Post和Request中文乱码问题  # JSP 开发中过滤器filter设置编码格式的实现方法  # JSP使用Servlet过滤器进行身份验证的方法  # JSP过滤器防止Xss漏洞的实现方法(分享)  # JSP使用过滤器防止SQL注入的简单实现  # jsp实现登录验证的过滤器  # jsp中过滤器选择过滤器的写法详解  # 详解JSP中使用过滤器进行内容编码的解决办法  # servlet+jsp实现过滤器 防止用户未登录访问  # JSP使用过滤器防止Xss漏洞  # jsp filter 过滤器功能与简单用法示例  # 应用程序  # 目录下  # 给大家  # 都要  # 希望能  # 自定义  # 所有资源  # 这篇  # 小编  # 大家多多  # 类中  # 情况下  # simplefilter  # xml  # web  # 单一文  # span  # folder_name  # servlet  # LoggerServlet 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Python3.6正式版新特性预览  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  使用Dockerfile构建java web环境  网站制作免费,什么网站能看正片电影?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  音响网站制作视频教程,隆霸音响官方网站?  利用python获取某年中每个月的第一天和最后一天  如何获取上海专业网站定制建站电话?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  C语言设计一个闪闪的圣诞树  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  JS去除重复并统计数量的实现方法  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel中的Facade(门面)到底是什么原理  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel观察者模式如何使用_Laravel Model Observer配置  如何在万网主机上快速搭建网站?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  网站页面设计需要考虑到这些问题  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  如何用已有域名快速搭建网站?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  如何在香港免费服务器上快速搭建网站?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  北京企业网站设计制作公司,北京铁路集团官方网站?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  b2c电商网站制作流程,b2c水平综合的电商平台?  Python制作简易注册登录系统  大连 网站制作,大连天途有线官网?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  android nfc常用标签读取总结  如何在自有机房高效搭建专业网站?  如何在万网自助建站平台快速创建网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  韩国服务器如何优化跨境访问实现高效连接?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何在建站宝盒中设置产品搜索功能?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel怎么为数据库表字段添加索引以优化查询