过滤器接口

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值