JavaWeb之过滤器Filter

过滤器Filter

依赖于servlet容器,基于函数回调,可以对请求和响应进行拦截,在访问后端资源之前,拦截这些来自客户端的请求,在发送回客户端之前,处理这些响应

过滤器的类型

  • 身份验证过滤器
  • 数据压缩过滤器
  • 加密过滤器
  • 触发访问事件资源的过滤器
  • 图像转换过滤器
  • 日志记录和审核过滤器
  • MIME-类型链过滤器
  • Tokenizing过滤器
  • 转换XML内容的XSL/T过滤器

过滤器的使用

需要实现Filter接口,其中包含有FilterChain过滤器链和FilterConfig过滤器配置

java 复制代码
public interface Filter {
  	// 由servlet容器调用,指示一个过滤器被放入服务,可以获取web.xml中过滤器的参数
    void init(FilterConfig config) throws ServletException;
		// 在每次一个请求或响应在所对应的资源下时通过链传递,由容器调用
    void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
		// 由servlet容器调用,指示一个过滤器从服务去除
    void destroy();
}

​ 并且在web.xml中配置写好的Filter

xml 复制代码
<filter>
  <filter-name>security</filter-name>
  <filter-class>com.zhanghe.study.webstudy.filter.SecurityFilter</filter-class>
  <!--用户名-->
  <init-param>
    <param-name>userName</param-name>
    <param-value>john</param-value>
  </init-param>
</filter>

<!-- 拦截的顺序与在web.xml中 filter-mapping的配置顺序有关,靠前的先被调用 -->
<filter-mapping>
  <filter-name>security</filter-name>
  <!-- 除了可以使用url-pattern方式进行拦截,还可以指定servlet-name方式指定servlet来进行拦截 -->
  <url-pattern>/*</url-pattern>
  <!-- 在filter-mapping中有一个dispatcher标签,指定过滤器所拦截的资源被Servlet容器的调用方式
				可以是REQUEST,INCLUDE,FORWARD和ERROR,默认是REQUEST
				REQUEST  直接访问
				INCLUDE  通过RequestDispatcher的include方法访问
				FORWARD  通过RequestDispatcher的forward方法访问
				ERROR    通过声明式异常处理机制调用时访问
				可以指定多个dispatcher来指定Filter对资源的多种调用方式进行拦截 -->
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>

zhhll.icu/2021/javawe...

本文由mdnice多平台发布

相关推荐
什巳29 分钟前
JAVA练习275-乘积最大子数组
java·开发语言·数据结构·算法
lang2015092834 分钟前
Apache POI Word(docx) 实战教程:从入门到精通表格合并、图片插入与文档合并
java·开发语言·word
小牛不牛的程序员35 分钟前
利用Claude Code构建自动化需求挖掘工具:从原理到实践
java·算法·自动化
wear工程师38 分钟前
腾讯天美一面:从 HashMap 到 Spring 事务,面试官这套连环问到底在考什么
java·面试
浩瀚地学1 小时前
【Java基础复习】IO流(二)
java·开发语言·经验分享·笔记·学习
hdsoft_huge1 小时前
SpringBoot系列06:RESTful接口开发,请求参数接收、全局跨域CORS完整配置
java·spring boot
IVVi0jToe1 小时前
高效C++线程池设计与实现
java·c++·安全
CRMEB定制开发2 小时前
企业级Java电商系统选型路线图:从零到上线全流程拆解
java·开发语言·商城系统·小程序商城
Zhou1411362 小时前
Java常见面试题3
java·开发语言
Solis2 小时前
百万并发的点赞计数,我们为什么要把“事实“和“计数“拆开?
java·架构