Filter是java servlet中提供的一个接口,在进行Javaweb开发时一般继承该接口实现一个过滤器类,主要功能是拦截对指定的服务器web资源调用,在调用前执行相应的动做java
public interface Filter { void init(FilterConfig var1) throws ServletException; void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException; void destroy(); }
public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将建立Filter 的实例对象,读取web.xml配置,将Filter的配置参数信息生成一个FilterConfig对象,传入调用其init方法,完成Filter对象的初始化功能,从而为后续的用户请求做好拦截的准备工做(filter对象只会建立一次,init方法也只会执行一次)。开发人员经过init方法的参数,可得到表明当前filter配置信息的FilterConfig对象。web
public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操做,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器,即在doFilter方法内继续调用,FiterChain.doFilter(request,response)服务器
public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。app
编写好的filter类须要在web.xml中配置url
<filter> <filter-name>global</filter-name> <filter-class>net.yuchen.web.MyFilter</filter-class> <init-param> <param-name>action-path</param-name> <param-value>net.yuchen.web.action</param-value> </init-param> <init-param> <param-name>template-path</param-name> <param-value>/WEB-INF/templates</param-value> </init-param> </filter> <filter-mapping> <filter-name>global</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<filter-name>: 指定过滤器名称spa
<filter-class>:过滤器的完整类名xml
<init-param>: 配置参数,<param-name>指定参数名,<param-value>为参数值,这些参数会在filter对象初始化时被读取,在init()方法中能够经过filterConfig.getInitParameter("param-name")访问到对象
<filter-mapping>: 指定过滤器名称及做用的URL范围,/*为全局做用继承