• 过滤器


    过滤器

    一过滤器的介绍

    javaWeb 三大组键:Server, File(过滤器),Listener(监听器),过滤器和Server有些相似。

    什么是过滤器呢?

    比如:过滤器相当一个公司的HR,HR把不符合公司的要求的面试者淘汰到,把符合公司要求的面试留下。过滤器也是如此,当浏览器访问servlet的时候,如果配置了过滤器,那么就会先经过过滤器。如果过滤器不放行,那么就不会进入servlet中。如果过滤器放行,那么最后就会进入到servlet中。

    二、过滤器的应用场景

    1)处理请求参数的中文乱码

    2)登录检查

    三、使用过来的步骤

    第一步:定义一个类,并实现Filter的接口,并重写接口中所有方法;

    代码:

     

    
    
    import java.io.IOException;
    import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class MyFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { System.out.println("执行过滤器...."); } @Override public void init(FilterConfig arg0) throws ServletException { } }




     第二步:在web.xml文件中配置该Filter;

    代码:

    <!-- 配置过滤器 -->
      <filter>
        <!-- Filter的名字 -->
        <filter-name>MyFilter</filter-name>
        <!-- Filter的完整类名 -->
        <filter-class>com.entor.filter.MyFilter</filter-class>
      </filter>
      
      <filter-mapping>
        <!-- 注意:改名字必须要与上面的Filter的名字相同 -->
        <filter-name>MyFilter</filter-name>
        <!-- 配置拦截的路径 -->
        <url-pattern>/download.jsp</url-pattern>
      </filter-mapping>

    结果:

    四、生命周期的方法

    init():服务器启动时候,创建过滤器对象,然后再执行init方法。在init方法中一般会执行一些初始化的操作,但是只会执行一次。

    doFilter():每次过滤请求后执行方法。

    destroy():过滤器被销毁前,服务器会自动调用该方法。在destroy方法中,可以执行一些资源回收的操作

     

    五、FilterConfig对象

     

    结果:

    六、配置路径

     过滤器的路径与Servlet的路径的配置相同的。配置的要求:

    1)要么以“/”开头,要么以“*”开头;

    2)如果在路经中使用星号,那么星号就不是通赔符,而是一个普通的字符;

    3)可以使用多个url-pattern配置多个路径;

    七、拦截方式

     REQUEST:默认拦截方式。它只会对浏览器发起的请求进行拦截

    FORWARD:当执行请求转发之前会执行过滤器

    INCLUDE:当一个页面包含另一个页面的时候执行过滤器

    ERROR:如果在web.xml文件中配置error-page节点,那么当程序发生异常的时候,就会先执行过滤器,然后在跳转到location节点指定的页面

    八、过滤器链 

    如果在同一个资源上配置多个过滤器,那么他们的执行顺序:先配置的过滤器就会先启动,然后再执行放行,最后按照配置顺序的相反方向执行放行的代码。

     

     

  • 相关阅读:
    测分用例模板
    功能测试用例设计(24方法)
    pycharm
    Mac-peizhi
    基于Java BufferedImage实现识别图片中的黑色矩形
    Soap从入门到实战
    实列+JVM讲解类的实列化顺序
    基于Springboot的BaseService和BaseController
    Kendo-Grid for Vue API and Template
    web项目jsp中无法引入js问题
  • 原文地址:https://www.cnblogs.com/chenjunjin/p/8485023.html
Copyright © 2020-2023  润新知