一、过滤器的核心API
1、interface Filter 过滤器核心接口
1)void init(filterConfig); 初始化方法,在服务器启动时候执行
2)void doFilter(request,response,filterChain); 过滤器拦截的业务处理方法
3)void destroy(); 销毁过滤器实例时候调用
2、interface FilterConfig 获取初始化参数信息
1)String getInitParameter(java.lang.String name)
2)Enumeration getInitParameterNames()
3、interface FilterChain 过滤器链参数;一个个过滤器形成一个执行链;
void doFilter(ServletRequest request, ServletResponse response) ; 执行下一个过滤器或放行
二、对指定的请求拦截(了解即可):
1、/*表示拦截所有的请求
<filter-mapping>
<filter-name>hello_filter2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、拦截类型:
1)默认拦截的类型:(直接访问或者重定向)
<dispatcher>REQUEST</dispatcher>
2)拦截转发:
<dispatcher>FORWARD</dispatcher>
3)拦截包含的页面(RequestDispatcher.include(/page.jsp); 对page.jsp也执行拦截)
<dispatcher>INCLUDE</dispatcher>
4)拦截声明式异常信息:
<dispatcher>ERROR</dispatcher>
3、演示不同的拦截:
<!-- 演示: 拦截指定的请求 -->
<filter>
<filter-name>hello_filter2</filter-name>
<filter-class>cn.itcast.a_filter_hello.HelloFilter2</filter-class>
</filter>
<filter-mapping>
<filter-name>hello_filter2</filter-name>
<!-- 1. 拦截所有
<url-pattern>/*</url-pattern>
-->
<!-- 2. 拦截指定的jsp
<url-pattern>/index.jsp</url-pattern>
<url-pattern>/list.jsp</url-pattern>
-->
<!-- 拦截所有的jsp
<url-pattern>*.jsp</url-pattern>
-->
<!-- 3. 根据servlet的内部名称拦截
<servlet-name>IndexServlet</servlet-name>
-->
<!-- 拦截指定的servlet
<url-pattern>/index</url-pattern>
-->
<!-- 4. 指定拦截指定的类型 -->
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>