您的位置:首页 > 其它

servlet中Filter过滤器

2016-08-23 15:05 218 查看
Filter用于在servlet之外对request或者response进行修改,Filter提出了滤镜链(FilterChain)的概念,一个FilterChain包括多个Filter,客户端请求request在抵达servlet之前会经过FilterChain里的所有Filter,服务器响应response在从servlet抵达客户端浏览器之前也会经过FilterChain里的所有Filter,Filter处理过程:


Filter接口:一个Filter必须实现javax.servlet.Filter接口,Filter接口有3个方法:



这3个方法反映了Filter的生命周期,其中init与destory只被调用一次,分别在web程序加载或者卸载的时候调用,而doFilter每次有客户端请求都会被调用一次,Filter的所有工作也集中在doFilter()方法中。

Filter配置:

》Filter需要再web.xml中才能生效,一个Filter需要配置<filte>与<filter-mapping>标签


<filter>配置Filter的名称,实现类以及初始化参数(如果有的话),可以同时配置多个初始化参数,

<filter-mapping>配置什么规则下使用该Filter,<filter>中的filterName与<filter-mapping>的filterName必须匹配,<url-pattern>配置URL的规则,可以配置多个,可以使用通配符(*)例如:/jsp/*使用于本contexPath下以/jsp/开头的servlet路径,*.do适用于所有以.do结尾的servlet路径。

<dispatcher>配置到达servlet的方式:有四种值:

REQUEST:若没有配置任何<dispatcher>,默认值,表示仅当直接请求servlet时才生效,

FORWARD:表示仅当servlet通过FORWARD到改servlet时才生效,

INCLUDE:jsp中可以通过<jsp:include/>请求某servlet,仅这种情况下有效。

ERROR:JSP中可以通过<%@page errrorPage="error.jsp"%>指定错误处理页面,仅当这种情况下有效。

<url-pattern>与<dispatcher>关系是“且”的关系,只有满足<url-pattern>的条件,且满足<dispatcher>的条件时,该Filter才能生效。

注:一个web程序可以配置多个Filter,多个Filter执行顺序有先有后,规则是<filter-mapping>配置在前面的Filter执行要早于配置在后面的Filter,另外注意,多个Filter可能会相互影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: