zoukankan      html  css  js  c++  java
  • Filter的开发和使用

      Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HTTPServletResponse进行后处理。与Servlet的区别在于:Filter不能直接向用户生成响应。其完成流程为:Filter对用户请求进行预处理,然后将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。Filter作用如下:

      1、在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest;

      2、根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据;

      3、在HttpServletResponse到达客户端之前,拦截HttpServletResponse;

      4、根据需要检查的HttpServletResponse,也可以修改HttpServletResponse头和数据;

      创建Filter只需两个步骤:

      1、创建Filter类;

      2、在web.xml中配置Filter;

    创建Filter必须实现javax.servlet.Filter接口,该接口中定义了3个方法:

      void init(FilterConfig config):用于完成Filter初始化。

      void destroy():用于Filter销毁前,完成某些资源回收。

      void doFilter(ServletRequest request, ServletResponse response, FilterChain chain):实现了核心的过滤功能,对请求增加额外处理。

      在doFilter()中,通过chain.doFilter()方法来划分对请求的预处理和对服务器响应的后处理。位于chain.doFilter()之前的代码是预处理,位于chain.doFilter()方法之后的是后处理。

      Filter需配置两部分内容:

      配置Filter名:<filter/>;

      配置Filter拦截URL模式:<filter-mapping/>;

    配置实例如下:

    <!--定义Filter-->
    <filter>
        <!--Filter名字-->
        <filter-name>myFilter</filter-name>
       <!--Filter的实现类-->
        <filter-class>com.MyFilter</filter-class>
       <!--使用init-param配置参数-->
        <init-param>
            <!--定义参数名字-->
            <param-name>encoding</param-name>
            <!--定义参数值-->
            <param-value>GBK</param-value>
        </init-param>
    </filter>
    <!--定义Filter拦截的URL地址-->
    <filter-mapping>
        <!--Filter名字-->
        <filter-name>myFilter</filter-name>
        <!--Filter负责拦截的URL-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>            
  • 相关阅读:
    async 异步协程进阶
    linux 磁盘100% 清理
    时间戳,日期,string互转
    ioutils
    logging basic
    【BZOJ5323】【JXOI2018】—游戏(组合数学+线性筛)
    【BZOJ5323】【JXOI2018】—游戏(组合数学+线性筛)
    【CodeChef】—Sum of Cubes(斯特林数+容斥+三元环计数)
    【CodeChef】—Sum of Cubes(斯特林数+容斥+三元环计数)
    【TopCoder SRM 686】—CyclesNumber(斯特林数)
  • 原文地址:https://www.cnblogs.com/runnigwolf/p/5226179.html
Copyright © 2011-2022 走看看