一、过滤器定义
一个服务器端组件,可以截取用户端的请求和相应信息,并对这些信息进行过滤。
二、工作原理
- 在没有过滤器情况下
- 存在过滤器
过滤器在web容器启动时就进行加载。
三、生命周期
Paste_Image.png四、过滤器常用方法
Paste_Image.png五、过滤器配置
Paste_Image.png <filter>
<filter-name>FirstFilter</filter-name>
<filter-class>imooc.FirstFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FirstFilter</filter-name>
<url-pattern>/*</url-pattern>
- 多个过滤器形成过滤器链,服务器按照web.xml中过滤器定义的先后顺序执行。
六、过滤器的分类
Paste_Image.png过滤器的两大分类:request和forward,其中过滤的默认规则是request方式
假设有两个页面:index.jsp和main.jsp,都使用了默认的过滤规则,
如果在过滤器的doFilter1方法中把index.jsp重定向到main.jsp页面上,则会死循环,因为sendRediect的过滤类型是request,当重定向时跳转到main.jsp的过滤规则也是request,会继续触发main.jsp的过滤器,从而陷入死循环;
而若是请求转发,其默认过滤规则是forward,当请求转发到main.jsp后,main.jsp的过滤规则是request而不是forward,所以不触发过滤;
当然,如果把请求转发的规则改为forward,那么也会陷入循环;
或者在jsp上写入script代码<jsp:forward page="/main.jsp">也会匹配过滤规则决定导致会不会产生死循环的结果;
@WebFilter
- @WebFilter用于将一个类生命为过滤器,该注解将会在部署时被容器处理,容器将根据 具体的属性配置将相应的类部署为过滤器。
网友评论