servlet规范扩展
filter过滤器接口
介绍
- 来自于servlet规范下接口,存在于tomcat的 servlet.api jar包中
- filter接口实现类 由开发人员负责提供,http服务器不负责提供
- filter接口在http服务器调用资源文件之前,对http服务器进行拦截
具体作用
拦截http服务器,帮助http服务器检测当前请求的合法性。
//向http://localhost:8080/myweb/mm.jpg?age=20发起请求 携带参数 age为20
class onefilter implements Filter{
dofilter(servletrequest,servletresponse,filterchain){
//1.通过拦截请求对象,得到请求包参数信息,从而得到来访用户的真实年龄
String age = servletrequest.getparameter("age");
//2.根据年龄,帮助服务器判断本次请求合法性
if(age>18){//合法请求
//将拦截的请求对象和响应对象交还给tomcat,由tomcat继续调用资源文件
filterChain.dofilter(servletrequest,servletresponse);//放行
}else{
//过滤器代替http服务器,拒绝本次请求
servletresponse.setcontenttype("text/html;charset=utf-8");
PrintWriter out = servletresponse.getWriter();
out.print("<center>未满18岁,禁止访问</center>")
}
}
}
拦截http服务器,对当前请求进行增强操作。
//通过请求对象得到请求体中的参数时,如果请求体内的参数为中文,需要通过请求对象设置
//在dopost方法中 设置resquest.setCharacterEncoding(utf-8);
//如果网站中有很多servlet,重复设置很麻烦,
//所以通过过滤器,针对所有的servlet请求进行拦截,并设置解码格式utf-8
dofilter(){
servletrequest.setCharacterEncoding(utf-8);
filterChain.dofilter(req,resp);//设置完之后,放行
}
通知tomcat在调用所有资源文件之前都要调用onefilter进行拦截
<filter-mapping>
<filter-name>onefilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Filter接口实现类的开发步骤(三步)
- 创建一个java类,实现filter接口
- 重写filter接口中的 dofilter方法
- 在web.xml文件中,将过滤器接口实现类注册到http服务器(两步)
<!--将过滤器接口实现类注册到http服务器-->
<!--将过滤器类文件路径交给tomcat-->
<filter>
<filtername>oneFilter</filtername>
<filter-class>com.Filter.OneFilter</filter-class>
</filter>
<!--通知tomcat在调用何种资源文件时,需要被当前过滤器拦截-->
<filter-mapping>
<filter-name>onefilter</filter-name>
<url-pattern>/mm.jpg</url-pattern>
</filter-mapping>
过滤器拦截地址格式
命令格式
<filter-mapping>
<filter-name>onefilter</filter-name>
<url-pattern>/拦截地址</url-pattern>
</filter-mapping>
命令作用
拦截地址通知tomcat在调用何种文件之前需要调用onefilter过滤器进行拦截。
四种格式
- 要求tomcat在调用某一个具体文件之前,来调用onefilter拦截
<url-pattren>/img/mm.jpg</url-pattern>
- 要求tomcat在调用某一个文件夹下所有的资源文件之前,调用onefilter拦截
<url-pattren>/img/*</url-pattern>
- 要求tomcat在调用任意文件夹下的某种类型文件之前,调用onfilter拦截
<url-pattren>*.jpg</url-pattern>
- 要求tomcat在调用网站中任意文件时,调用onefilter拦截
<url-pattren>/*</url-pattern>