Filter简介
Filter是java servlet中提供的一个接口,在进行Javaweb开发时通常继承该接口实现一个过滤器类,主要功能是拦截对指定的服务器web资源调用,在调用前执行相应的动作
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对象。public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器,即在doFilter方法内继续调用,FiterChain.doFilter(request,response)public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
Filter的配置使用
编写好的filter类需要在web.xml中配置
global net.yuchen.web.MyFilter action-path net.yuchen.web.action template-path /WEB-INF/templates global /*
<filter-name>: 指定过滤器名称
<filter-class>:过滤器的完整类名
<init-param>: 配置参数,<param-name>指定参数名,<param-value>为参数值,这些参数会在filter对象初始化时被读取,在init()方法中可以通过filterConfig.getInitParameter("param-name")访问到
<filter-mapping>: 指定过滤器名称及作用的URL范围,/*为全局作用