*************web容器的Filterr 过滤器 *************
1--web.xml文件中的配置(注意请求名)
filter是在servlet之前被调用的,多个filter配置按照filter-mapping的配置的先后顺序来执行的,如:有两个同请求名的filter以及同请求名的servlet
当客户端发出该请求名的请求时,先调用先配置的filter,再调用后一个filter,最后再调用servlet,如果还有一个和请求名一样的jsp,那么这个就是jsp是在最后被调用
据此,我们可以设计一个简单的IP地址过滤器,根据用户的IP地址进行对网站的访问控制。
2--filter与filter之间的request、response是可以顺延使用的,即第一个filter的request中设置了属性,那么第二个filter中可以获取到的,最后的servlet中也是可以获取到的;
(当然是需要使用过滤器链传递的哦)
3--filter过滤器的三个方法:
有初始化 init() web容器启动,初始化filter时调用此方法 可以再这里初始化过滤器所使用到的参数或者其他需要的参数,例如:初始化 FilterConfig
过滤处理 doFilter() 对请求进行响应处理 处理之后 可以 调用 过滤器链FilterChain的doFilter(request,response)方法继续调用后面的filter、servlet或者jsp页面
销毁 destroy() 用户释放过滤器占用的资源
4--FilterConfig接口有定义了四个方法,分别可以拿到
getFilterName() 返回web.xml部署文件中定义的该过滤器的名称
getServletContext() 返回调用者所处的servlet上下文 ServletContext
getInitParameter(java.lang.Stringname) 返回过滤器初始化参数值的字符串形式,当参数不存在时,返回null.name初始化参数名
getInitParameterNames() 以Enumeration形式返回过滤器所有初始化参数名称,如果没有初始化参数,返回为空。
5--创建过滤器步骤:
步骤一:建立一个实现Filter接口的类并实现其三个方法:init、doFilter和destroy
步骤二:doFilter方法中编写过滤行为。其中三个参数分别为ServletRequest、ServletResponse和FilterChain,
前两个可以强转为HttpServletRequest和HttpServletResponse使用,
第三个参数用来激活下一个相关的过滤器。
如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
步骤三:配置web.xml
步骤四:请求测试