过滤器基础
1.javaweb三大组件
都需要在web.xml中配置
Servlet
Listener(2个感知监听器不需要配置)
Filter
2.过滤器:它会在一组资源(jsp\servlet\.css\.html等等)的前面执行!
它可以让请求达到目标资源,也可以让请求不达到目标资源!
过滤器有拦截请求的能力
3.写法:
1.写一个类实现Filter接口
2.在web.xml中进行配置
<filter>
<filter-name>AFilter</filter-name>
<filter-class>web.filter.AFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AFilter</filter-name>
<url-pattern>/AServlet</url-pattern>
</filter-mapping>
4.Filter接口
void init(FilterConfig):创建之后,马上执行,在服务器启动时就执行
void destory():销毁之前,在服务器关闭时销毁
void doFilter(ServletRequest,ServletResponse,FilterChain):每次过滤时都会执行
Filter是单例的
5.FilterConfig-->与ServletConfig相似
获取初始化参数:getInitParameter()
获取过滤器名称:getFilterName()
获取application:getServletContext()
6.FilterChain
doFilter(ServletRequest,ServletResponse):放行,
放行,就相当于调用了目标Servlet的service()方法
执行目标资源,或是执行下一过滤器,如果没有下一过滤器,那么执行的是目标资源,如果有,那么执行下一过滤器
过滤器的四种拦截方式dispatcher:
请求:request 即<dispatcher>request</dispatcher> 默认为此!!
转发:forward
包含:include
错误:error
7.<filter-mapping>决定了filter的执行顺序