javaweb之过滤器Filter
系列文章目录
第一章 javaweb之Servlet接口
第二章 javaweb之ServletRequest请求
第三章 javaweb之ServletResponse响应
第四章 javaweb之请求转发和重定向
第五章 javaweb之过滤器Filter
原文链接 https://zhhll.icu/2021/javaweb/基础/5.过滤器/
过滤器Filter
依赖于servlet容器,基于函数回调,可以对请求和响应进行拦截,在访问后端资源之前,拦截这些来自客户端的请求,在发送回客户端之前,处理这些响应
过滤器的类型
- 身份验证过滤器
- 数据压缩过滤器
- 加密过滤器
- 触发访问事件资源的过滤器
- 图像转换过滤器
- 日志记录和审核过滤器
- MIME-类型链过滤器
- Tokenizing过滤器
- 转换XML内容的XSL/T过滤器
过滤器的使用
需要实现Filter接口,其中包含有FilterChain过滤器链和FilterConfig过滤器配置
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
<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>
本文来自博客园,作者:拾光师,转载请注明原文链接:https://www.cnblogs.com/life-time/p/17864392.html 个人博客-> https://zhhll.icu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~