【Java】 Filter
【Java】 Filter
Metadata
title: 【Java】 Filter
date: 2023-02-01 18:51
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java
categories:
- Java
keywords:
- Java
description: 【Java】 Filter
【Java】 Filter
Filter(过滤器)用于拦截用户请求,在服务器作出响应前,可以在拦截后修改 request 和 response。可以实现一次编码,多处应用。Filter 不像 Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。
Web 开发人员通过 Filter 技术,对 web 服务器管理的所有 web 资源。例如实现 URL 级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。例如对 Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。
Filter 主要的作用有两个:
- 拦截修改请求:在 HttpServletRequest 到达 Servlet 之前,拦截客户的 HttpServletRequest。根据需要检查 HttpServletRequest,也可以修改 HttpServletRequest 头和数据。
- 拦截修改响应:在 HttpServletResponse 到达客户端之前,拦截 HttpServletResponse。根据需要检查 HttpServletResponse, 也可以修改 HttpServletResponse 头和数据。
生命周期
Filter 接口位于 javax.servlet 包下,其中提供了三个方法,完成了整个过滤器的生命周期。
- init() :应用程序启动时,servlet 容器就会调用 init 方法。这个方法只调用一次,并且应该包含该过滤器的初始化代码。
- doFilter:每次的访问请求如果符合拦截条件都会调用此方法,获取请求及响应对象,自定义处理逻辑。
- destroy():服务终止时,会调用 destory 方法,销毁过滤器对象。
public interface Filter {
public default void init(FilterConfig filterConfig) throws ServletException {}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException;
public default void destroy() {}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论