学习过滤器

过滤器

引入

  在servlet中获取用户参数数据 : request.getParameter(“参数名”) 遇到参数内容中文乱码问题
  post提交:
    request.setCharacterEncoding(“utf-8”);
  get提交:
    手动解码:* name = new String(name.getBytes(“iso-8859-1”),”utf-8”)*

  问题: 如何把这些重复的操作抽取出来呢?
  这时就可以用到过滤器,把重复的操作代码写在过滤器中!!!

什么是过滤器

过滤器就是一个Filter接口,在javax.servlet.Filter;过滤器是servlet的三大组件之一:
  servlet的三大组件:
     (servlet) Servlet接口: javax.servlet.Servlet; 作用:用于开发动态网页
    (过滤器)Filter接口: javax.servlet.Filter;
    (监听器)Listener接口: javax.servlet.*

servlet组件的特点:
  1.把组件配置到web.xml文件中
  2.组件就可以交给tomcat服务器运行!!!!

作用:
  过滤器的作用,就是一个实现了Filter接口的对象,这个对象可以在请求资源(可能是动态网页或者静态网页)时,或者在响应资源时,或者在请求和响应资源时,执行过滤任务

过滤器的生命周期

  构造方法: 创建过滤器对象的时候调用。在加载当前项目的时候加载过滤器,只调用1次。单实例的多线程

  init方法: 在创建完过滤器对象之后调用。只调用1次。

  doFilter方法: 过滤任务方法。会调用n次。每次访问目标资源的时候,doFilter就会被调用。

  destory方法:在销毁过滤器对象的时候调用。在web项目重新部署tomcat服务器停止的时候销毁过滤器对象。

在web.xml文件中配置过滤器


<!-- 配置一个过滤器 -->
<!-- 过滤器配置 -->
<filter>
<!-- 内部名称 -->
<filter-name>FirstFilter</filter-name>
<filter-class>gz.itcast.a_filter.FirstFilter</filter-class>
</filter>
<!-- 过滤器映射配置 -->
<filter-mapping>
<!-- 也是内部名称,但是和上面的名称保持一致!!! -->
<filter-name>FirstFilter</filter-name>
<!--过滤器的url-pattern代表的是过滤的路径,而不是访问过滤器的路径 -->
<url-pattern>/target</url-pattern>
</filter-mapping>

  注意: servlet的url-pattern指的是访问servlet的路径,而过滤器的url-pattern指的是需要过滤的路径。而这个过滤的路径,可以是任意资源路径(可以是静态网页路径,页可以是动态网页路径)。

FilterConfig对象

  和servletconfig对象类似,这个FilterConfig对象加载初始化参数内容

FilterChain对象

  什么是过滤器链? 当一个资源被多个过滤器所过滤,那么就形成了一个过滤器链.注意,多个过滤器执行的顺序,取决于web.xml中filter的顺序,从上之下执行.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值