Filter 过滤器

快来打我* 2022-03-09 01:48 500阅读 0赞

过滤器,其实就是对客户端发出来的请求进行过滤。浏览器发出,然后服务器派Servlet处理。在中间就可以过滤,其实过滤器起到的是拦截的作用,也就是拦截器。

  • 作用

    1.对一些敏感词汇进行过滤
    2.统一设置编码
    3.自动登录

如何使用Filter

1.定义一个类,实现Filter接口

  1. public class FilterDemo implements Filter {
  2. public void destroy() {
  3. }
  4. public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
  5. System.out.println("来到过滤器");
  6. chain.doFilter(req, resp);
  7. }
  8. public void init(FilterConfig config) throws ServletException {
  9. }
  10. }

2.注册过滤器

在web.xml里面注册,注册的方式与Servlet差不多

  1. <filter>
  2. <filter-name>FilterDemo</filter-name>
  3. <filter-class>FilterDemo</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>FilterDemo</filter-name>
  7. <url-pattern>/*</url-pattern>
  8. </filter-mapping>

Filter的生命周期

  • 创建

在服务器启动的时候创建

  • 销毁

服务器停止的时候销毁

Filter的执行顺序

1.客户端发出请求,先经过过滤器,如果过滤器通过,才会到Servlet。

2.如果有多个过滤器,那么将会按照注册的映射顺序(Filter-mapping 的顺序)进行依次拦截,只要有一个过滤器未通过,那么后面的过滤器,以及访问的Servlet都不会收到请求

3.需要执行chain.doFilter()方法,才算成功通过

  1. public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
  2. System.out.println("来到过滤器");
  3. chain.doFilter(ServletRequest, ServletResponse);//标志成功通过这个过滤器,放行,让请求到达下一个目标
  4. }

细节:

1.Filter接口的 init方法的参数 FilterConfig,可以用于获取Filter在注册的名字,以及初始化参数。这里的功能与ServletConfig是一样的。

2.如果想要放行,让请求到达下一个目标,需要使用参数chain,操作foFiler方法

chain.doFilter(ServletRequest, ServletResponse);//通过这个过滤器,放行,让请求到达下一个目标

3.< url-pattern>/*< /url-pattern>,表明Filter所要过滤的指定对象,类型,或者目录,其写法格式与servlet一样,( * 号是通配符)

  1. 1.全路径匹配,以 / 开始(以对象过滤)(精确匹配)
  2. /loginServlet
  3. 2.以目录匹配,以 / 开始,以 * 结束(以目录过滤)
  4. /demo01/*
  5. 3.以后缀名匹配,以 * 开始,以后缀名结束(以类型过滤)
  6. *.jsp , *.html , *.do
  7. 4.针对 dispatcher 设置
  8. REQUEST:只要是请求过来,都拦截(默认为REQUEST)
  9. FORWARD:只要是转发,都拦截
  10. ERROR:页面出错发生跳转时,拦截
  11. INCLUDE:包含页面的时候就拦截

PS:

可以书写多个 url-pattern 或者 dispatcher 标签,以组合过滤不同的类型

  1. <filter-mapping>
  2. <filter-name>FilterDemo</filter-name>
  3. <url-pattern>/*</url-pattern>
  4. <url-pattern>/*.html</url-pattern>
  5. <url-pattern>/ServletDemo</url-pattern>
  6. <dispatcher>FORWARD</dispatcher>
  7. <dispatcher>ERROR</dispatcher>
  8. </filter-mapping>

发表评论

表情:
评论列表 (有 0 条评论,500人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Filter 过滤器

    Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作。 1.什么是Filter及其作用介绍      Filter是sun公司中servlet2.3后增加的一

    相关 Filter过滤器

    Filter的基本功能是对servlet容器调用servlet的过程进行拦截,从而在servlet进行响应处理的前后实现一些特殊的功能。 在servletAPI中定义了三个接

    相关 Filter过滤器

    过滤器: 过滤   过滤请求 可以写多个 从用户访问  ->第一个过滤器  -> 第二个过滤 -> servlet   生命周期:随着项目的启动而创建 当访问了地址后而

    相关 Filter过滤器

    一、Filter过滤器 1、介绍       Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态资源文件等进行

    相关 Filter 过滤器

    > 过滤器,其实就是对客户端发出来的请求进行过滤。浏览器发出,然后服务器派Servlet处理。在中间就可以过滤,其实过滤器起到的是拦截的作用,也就是拦截器。 作用