Filter过滤器
2019-08-01 / JAVA / 1100 次围观 / 0 次吐槽 /过滤器介绍
Filter是servlet2.3后增加的一个新功能
Servlet规范中三个技术 Servlet Listener Filter
3.在javaEE中定义了一个接口javax.servlet.Filter来描述过滤器
4.通过Filter可以拦截访问web资源的请求与响应操作
5.web开发通过Filter技术,对web服务器管理的所有web资源:例如jsp,servlet,静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能,例如实现url级别的权限访问控制,过滤敏感词汇,压缩响应信息等一些高级功能。
Filter API介绍
Filter 是javax.servlet包下的一个接口主要有以下三个方法
Filter的使用
创建一个类实现javax.servlet.Filter接口并实现方法
注意:chain.doFilter(request,response);是放行访问资源,如果不写,则无法访问到资源
FilterChain功能介绍
FilterChain是servlet容器开发人员提供的对象,它提供了某一资源的已过滤请求调用链的视图。
过滤器使用FilterChain调用链中的下一个过滤器,如果调用的过滤器是链中的最后一个过滤器,则调用链末尾的资源
Filter链
多个Filter对同一个资源进行了拦截,那么当我们在开始的Filter中执行chain.doFilter(request,response)时,是访问下一个Filter,直到最后一个Filter执行时,它后面没有了Filter,才会访问web资源。
多个Filter的访问顺序问题
如果有多个Filter形成Filter链,那么它们的执行顺序取决于<filter-mapping>在web.xml文件中配置的先后顺序。
过滤器生命周期
当服务器启动,会创建Filter对象,并调用init方法,只调用一次。
当访问资源时,路径与Filter的拦截路径匹配,会执行Filter中的doFilter方法,这个方法是真正拦截操作的方法。
当服务器关闭时,会调用Filter的destroy方法来进行销毁操作。
FilterConfig介绍
在Filter中的init方法上有一个参数叫FilterConfig是Filter的配置对象,它的作用:
1.获取Filter的名称
2.获取初始化参数
3.获取ServletContext对象
FilterConfig常用API
获取web.xml中配置的Filter初始化参数
Filter配置详解
Filter基本配置格式介绍
<filter> <filter-name>Filter名称</filter-name> <filter-class>Filter类全名</filter-class> </filter> <filter-mapping> <filter-name>Filter名称</filter-name> <url-pattern>映射路径</url-pattern> </filter-mapping>
url-pattern配置
1.完全匹配
要求必须以“/”开始
2.目录匹配
要求必须以“/”开始,以*结束
3.扩展名匹配
不能以“/”开始,以*.xxx结束
servlet-name配置
针对于servlet拦截的配置<servlet-name>配置
在filter中它的配置项上有一个标签
<servlet-name>它用于设置当前filter拦截哪一个servlet
是通过servlet的name来确定的
dispatcher配置
可以取的值有 request forward error include
它的作用是:当以什么方式去访问web资源时,进行拦截操作。
1.reques 当是从浏览器直接访问资源,或者重定向到某个资源时进行拦截方式配置的 它也是默认值
2.forward它描述的是请求转发的拦截方式配置
3.error 如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用,除此之外,过滤器不会被调用。
4.include 如果目标资源是通过requestdispatchar的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
- 上一篇:LIstener监听器
- 下一篇:MD5
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.