JAVAWEB三大组件之过滤器

一、过滤器定义及其作用

1、filter为javaweb三大组件之一、filter与servlet在很多的方面极其相似,但是也有不同,例如filter和servlet一样都又三个生命周期方法,同时他们在web.xml中的配置文件也 是差不多的、 但是servlet主要负责处理请求,而filter主要负责拦截请求,和放行。

二、为什么不直接在servlet进行判断某个请求是否要进行处理?

答:filter主要是进行多个请求的拦截与放行的,而并不是单个。

这是简易的filter工作流程JAVAWEB三大组件之过滤器_第1张图片

、filter四种拦截方式

        REQUEST:直接访问目标资源时执行过滤器。包括:在地址栏中直接访问、表单提交、超链接、重定向,只要在地址栏中可以看到目标资源的路径,就是REQUEST;

        FORWARD:转发访问执行过滤器。包括RequestDispatcher#forward()方法、标签都是转发访问;

        INCLUDE:包含访问执行过滤器。包括RequestDispatcher#include()方法、标签都是包含访问;

      ERROR:当目标资源在web.xml中配置为中时,并且真的出现了异常,转发到目标资源时,会执行过滤器。


四、url-mapping的写法

匹配规则有三种:

  • 精确匹配 —— 如/foo.htm,只会匹配foo.htm这个URL
  • 路径匹配 —— 如/foo/*,会匹配以foo为前缀的URL
  • 后缀匹配 —— 如*.htm,会匹配所有以.htm为后缀的URL

的其他写法,如/foo/ ,/*.htm ,*/foo 都是不对的。


五、执行filter的顺序

如果又多个过滤器都匹配该请求,顺序决定于web.xml filter-mapping的顺序,在前面的先执行,后面的后执行




你可能感兴趣的:(Javaweb)