JavaWeb的三大组件之过滤器
JavaWeb过滤器
过滤器可以让请求得到目标资源,也可以不让请求达到!
* 过滤器有拦截请求的能力,且过滤器是单例模式!
过滤器的实现方法:
1. 写一个类实现Filter接口(注意导入的是:javax.servlet.Filter接口)
2. 在web.xml中进行配置,以下为具体配置格式
<filter>
<filter-name>helloFilter</filter-name>
<filter-class>包名.类名</filter-class>
</filter>
<filter-mapping>
<filter-name>helloFilter</filter-name>
<url-pattern>/要过滤的资源(/*时为过滤所有资源)</url-pattern>
</filter-mapping>
Filter接口的方法:
void init(FilterConfig):创建Filter后执行,在服务器启动时创建
* FilterConfig参数-->与ServletConfig相似
* 获取初始化参数:getInitParameter()
* 获取过滤器名称:getFilterName()
* 获取appliction:getServletContext()
void destory():过滤器销毁之前执行!在服务器关闭时销毁
void doFilter(ServletRequest,ServletResponse,FilterChain):每次过滤时都会执行,判断是否通过过滤器
* FilterChain参数
* doFilter(ServletRequest, ServletResponse):通过当前过滤器,若有多个过滤器则到达下一过滤器。
过滤器的过滤顺序:根据web.xml的<filter-mapping>的位置从上到下过滤,与过滤资源无关(即与<url-pattern>值无关)。
过滤器的四种过滤方式:需要在<filter-mapping>里配置以下标签,四种过滤方式可以随意搭配使用来面对不同的情况
<dispatcher>REQUEST</dispatcher>:过滤请求,没有设置时的默认方式,当设置了其它过滤方式时会
使用其它过滤方式,默认过滤方式消失。
<dispatcher>FORWARD</dispatcher>:过滤转发
<dispatcher>INCLUDE</dispatcher>:过滤包含
<dispatcher>ERROR</dispatcher>: 过滤错误