文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源,例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。
实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
@WebFilter("/*")//访问所有资源之前,都会执行该过滤器 public class Filter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("filter被执行了...."); //放行 filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
<filter> <filter-name>demo1</filter-name> <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class> </filter> <filter-mapping> <filter-name>demo1</filter-name> <!-- 拦截路径 --> <url-pattern>/*</url-pattern> </filter-mapping>
在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
每一次请求被拦截资源时,会执行。执行多次
在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
注解配置:
设置dispatcherTypes属性
web.xml配置
设置标签
<dispatcher></dispatcher>
执行顺序:如果有两个过滤器:过滤器1和过滤器2,具体过程?
过滤器1 过滤器2 资源执行 过滤器2 过滤器1
有两个过滤器先执行哪一个?
注解配置:按照类名的字符串比较规则比较,值小的先执行
黑马程序员
万能的网络
以及勤劳的自己