过滤器filter

Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。

1、编写servlet类,实现Filter接口。

public class Filter01 implements Filter {

 public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain filterChain)throws IOException,ServletException {

System.out.println("--------------Filter01------------");

filterChain.doFilter(servletRequest,servletResponse);  //释放拦截器

}

2、filter执行过程

执行流程:Tomcat接收并解析请求,创建request与response对象,并创建FilterChain对象。

执行过滤器1,将request与response对象传入参数,执行结束之后开始调用 filterChain.doFilter(request,response);执行之后的过滤器。

过滤器全部执行结束之后,调用servlet的doGet(request,response);,执行servlet。


3、生命周期

创建:在Tomcat启动时,利用init(FilterConfig filterConfig)方法

执行:在过滤被访问资源的时候

销毁:利用destory()方法, 在对象销毁之前调用

4、匹配规则

1)完全匹配

2)目录匹配

3)后缀名匹配

5、使用注解

@WebFilter(urlPatterns ="/*")

6、过滤器执行顺序

方式一web.xml:根据servlet-mapping的顺序来执行

方式二注解形式:根据类名的先后顺序执行

如果有配置文件,以配置文件优先。(如果一个类在配置文件中进行了配置,又写了注解,那么会先执行配置文件中filter,同名filter会再次按照类名的先后顺序执行)

7、拦截方式

REQUEST:默认值。浏览器直接请求资源(当用户直接请求一个网页时才会通过此filter,当用户通过RequestDispatcher的forward不会通过该filter)

FORWARD:转发访问资源(通过RequestDispatcher的forward方法访问对应的url时,或者:<jsp:forward>)

INCLUDE:包含访问资源(通过RequestDispatcher的include方法访问对应的url时,或者<jsp:include>)

ERROR:错误跳转资源(当目标资源在web.xml配置<error-page>时,或者jsp页面中配置isErrorPage="true")

ASYNC:异步访问资源

8、过滤器与拦截器的区别

参考博客:https://www.cnblogs.com/lynn16/p/10691224.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容