什么是过滤器?什么时候使⽤过滤器?如何使⽤过滤器?过滤器
的原理?
⼀、什么是过滤器?ericclapton
含义:⽤于拦截数据源和⽬的数据之间的消息,并且过滤⼆者之间的传递的数据
举例:⽐如过滤某⼀个格式的⽂件,然后对这个⽂件做⼀些修改
⼆、什么时候要⽤到过滤器?
1、认证过滤:对⽤户的请求进⾏统⼀认证
michael phelps
2、登陆和审核过滤:对⽤户的访问请求进⾏记录和审核
3、图像转换过滤
在从前4、数据压缩过滤
当然还有:
iana1、过滤字符编码
2、进⾏⽹站访问⼈数的统计
三、如何使⽤过滤器?
1、⾸先需要在l中进⾏配置
<filter>
<display-name>Afilter</display-name>
<filter-name>Afilter</filter-name>
<filter-class>过滤器类所在的全路径 </filter-class>
得意洋洋>shiwan</filter>
<filter-mapping>
<filter-name>Afilter</filter-name>
阿德莱德大学
<url-pattern>/*</url-pattern><!-- 拦截所有请求 -->
</filter-mapping>
2、然后直接编写⼀个实现过滤器接⼝的类,就是⼀个过滤器
例如:如下是统计某⼀个⽹站被访问的次数的代码
package com.kgc.filter;
import java.io.IOException;
import java.util.Map;中国教育考试
import javax.rvlet.Filter;
import javax.rvlet.FilterChain;
import javax.rvlet.FilterConfig;
import javax.rvlet.ServletContext;
import javax.rvlet.ServletException;
import javax.rvlet.ServletRequest;
import javax.rvlet.ServletRespon;
public class Afilter implements Filter {
FilterConfig fConfig;
public void destroy() {
// TODO Auto-generated method stub
brown sugar}
public void doFilter(ServletRequest request, ServletRespon respon, FilterChain chain) throws IOException, ServletException {
//获得与天地同寿的application
ServletContext app = ServletContext();
//取出application中的map
Map<String,Integer> map = (Map<String, Integer>) Attribute("map");
//获取访问者的ip
String ip = RemoteAddr();
//判断这个ip是否曾经来过
ainsKey(ip)){//来过,次数加1
Integer count = (ip);
count+=1;
map.put(ip, count);
}el{//没来过,次数赋值为1
map.put(ip, 1);
}
//map再次存到application中
app.tAttribute("map", map);
chain.doFilter(request, respon);//放⾏
}
public void init(FilterConfig fConfig) throws ServletException {
this.fConfig=fConfig;
}
}
理解:
实现了Filter接⼝的类,需要实现三个⽅法,分别是init、doFilter、destroy
1、init⽅法:⽤于过滤器的初始化
英语四级作文万能模板2、doFilter⽅法:⽤于对请求进⾏过滤处理
3、destory⽅法:⽤于销毁⽅法⽤于释放资源
其中,doFilter⽅法有三个参数,分别是:ServletRequest request, ServletRespon respon, FilterChain chain
四、这三个参数分别有什么⽤?
1、request对象⽤于获取请求
2、respon对象⽤于在调⽤chain.doFilter(request, respon);时传⼊
3、chain对象就是⽤来调⽤doFilter⽅法的。
FilterChain接⼝中只有⼀个⽅法,就是doFilter(request, respon),⽤于将过滤后的请求传递给下⼀个过滤器,如果当前过滤器就是最后⼀个过滤器,那么就把请求传递给⽬标资源。
五、如何读取配置⽂件中的初始化参数?
FilterConfig接⼝中定义的getInitParameter⽅法,可以⽤于读取配置⽂件,在init⽅法中使⽤
public void init(FilterConfig fConfig) throws ServletException {
String encoding = InitParameter("encoding");
}
六、过滤器是如何运⾏的?
前⽂提到的在l中配置好了拦截的请求路径,访问该路径,然后请求被发送到对应的过滤器进⾏处理