Javax.servlet.*;
|-- interface Filter 及过滤器
实现步骤
- 普通java类实现Fiter接口
public class MainFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException{
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException{
}
@Override
public void destroy(){
}
}
- web.xml 里面配置这个过滤器
<filter>
<filter-name>MainFilter</filter-name>
<filter-class>com.flynn.MainFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MainFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器相关Api
-
interface Filter 过滤器核心接口
- void init(filterConfig); 初始化方法,在服务器启动时候执行
- void doFilter(request,response,filterChain); 过滤器拦截的业务处理方法
- void destroy(); 销毁过滤器实例时候调用
-
interface FilterConfig 获取初始化参数信息
- String getInitParameter(java.lang.String name)
- Enumeration getInitParameterNames()
-
interface FilterChain 过滤器链参数;一个个过滤器形成一个执行链;
- void doFilter(ServletRequest request, ServletResponse response) ; 执行下一个过滤器或放行
对指定的请求拦截
/* 表示拦截所有的请求
默认拦截的类型:(直接访问或者重定向)
<dispatcher>REQUEST</dispatcher>
拦截转发:
<dispatcher>FORWARD</dispatcher>
拦截包含的页面(RequestDispatcher.include(/page.jsp); 对page.jsp也执行拦截)
<dispatcher>INCLUDE</dispatcher>
拦截声明式异常信息:
<dispatcher>ERROR</dispatcher>