过滤器笔记

Filter功能介绍

定义的一个接口javax.servlet.Filter
通过Filter可以拦截访问web资源的请求和响应,可通过Filter来管理web的所有资源,实现权限访问分配,敏感词汇过滤,压缩响应信息等功能

Filter的方法

1.init(FilterConfig filterConfig)
服务器响应时调用此方法,仅调用一次,实现Filter的初始化
2.doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
当有符合配置文件中映射对应类型文件被访问时,该方法被调用,若调用chain.doFilter()表示此拦截通过,进入Filter链的下一个拦截结点,若通过的是链的最后一个节点,则跳入访问资源
3.destroy()
服务器关闭时调用,摧毁Filter

创建Filter

1.创建自定义类实现javax.servlet.Filter接口
2.实现接口下的方法
3.配置xml文件

<filter>
    <filter-name>Filter名字</filter-name>
    <filter-class>路径</filter-class>
</filter>
<filter-mapping>
    <filter-name>Filter名字</filter-name>
    <url-pattern>需要拦截的资源对应的映射</url-pattern>
</filter-mapping>

Filter链

对同一资源的拦截可能存在多个,而这些Filter组成链,顺序由xml配置顺序决定,当前Filter拦截通过会通过链进入下一个Filter,直到全部通过,访问到存在于末尾的资源

Filter的生命周期

当服务器启动,会创建Filter对象,并调用init方法,只调用一次.当访问资源时,路径与Filter的拦截路径匹配,会执行Filter中的doFilter方法,这个方法是真正拦截操作的方法.当服务器关闭时,会调用Filter的destroy方法来进行销毁操作.

FilterConfig

1.FilterConfig功能介绍
在Filter中的init方法上有一个参数叫FilterConfig,FilterConfig是Filter的配置对象 ,它的作用:
1.获取Filter的名称
2.获取初始化参数
3.获取ServletContext对象
2.FilterConfig创建类似于Filter
Filter配置详解
3.Filter基本配置介绍

filter名称
filter类全名


filter名称
映射路径

4.其他配置
(1).关于url-pattern配置
1.完全匹配
要求必须以”/”开始.
2.目录匹配
要求必须以”/”开始,以*结束.
3.扩展名匹配
不能以”/”开始,以*.xxx结束.
(2).关于servlet-name配置
针对于servlet拦截的配置 配置
在Filter中它的配置项上有一个标签
它用于设置当前Filter拦截哪一个servlet。
是通过servlet的name来确定的。
(3). 关于dispatcher配置
可以取的值有 REQUEST FORWARD ERROR INCLUDE
它的作用是:当以什么方式去访问web资源时,进行拦截操作.
1.REQUEST 当是从浏览器直接访问资源,或是重定向到某个资源时进行拦截方式配置的 它也是默认值
2.FORWARD 它描述的是请求转发的拦截方式配置
3.ERROR 如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。
4.INCLUDE 如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用

猜你喜欢

转载自blog.csdn.net/maniacxx/article/details/79074222