zoukankan      html  css  js  c++  java
  • 过滤器Filter

    是什么?

    一种可以在Servlet处理请求之前和应答之后实现一定功能处理的技术。

    能干什么?

    能够在一个request到达servlet之前预处理request,也可以在离开servlet时

    处理response。通常实现如下功能:

      1.在servlet被调用之前截获请求

      2.在servlet被调用之前检查请求的次数

      3.根据需要修改request头和数据

      4.在servlet呗调用之后截获相应

      5.根据需要修改response头和数据

    一个最最简单的demo

         结构:

      页面请求---->MyFilter---->MyServlet

      页面请求如下:

      

      MyFilter如下:

      

      注:前置部分可以写判断语句,符合条件调用chain.doFilter(req,resp);进入下一阶段的servlet!

        如果不满足条件,不调用chain.doFilter(req,resp);则返回到前一阶段!

      MyServlet如下:

      

      配置文件web.xml如下:

      

      注:filter与servlet的配置极其类似。

        其中,filter中的url-pattern为过滤监控范围;

        /*:表示当前web项目的所有请求。也可以写/a/b/*等

         demo结果如下:

      

          注:结果表明MyFilter过滤器监控到页面的请求,并且成功进入到MyServlet

         不调用chain.doFilter(req,resp);

      结果如下:

      

      注:结果表明MyFilter过器监控到页面的请求,由于未调用chain.doFilter(req,resp);

      所以未能到MyServlet!

    过滤器示例-替换非法数据

          Filter示例

        功能:根据业务需要,把请求中非法的数据替换成不合法

      RequestWrapper

        request对象的包装器,可以通过它来定制request对象的功能

      ResponseWrapper

        response对象的包装器,可以通过它来定制response对象的功能

      RequestWrapper和ResponseWrapper使用的都是装饰模式,对原始的request和response

      对象进行添加或是替换某些功能!

    注:该方法实现将request方法提交的参数值中的"cc"替换为"javass"

  • 相关阅读:
    Centos网络时好时超时问题解决
    关于C#异常的处理
    获取Excel工作薄中Sheet页(工作表)名集合
    C# shell32.dll 的用法
    C#将Excel数据表导入SQL数据库的两种方法
    Modbus RTU通信协议详解以及与Modbus TCP通信协议之间的区别和联系
    C# 多线程、异步、同步之间的联系与区别
    在C#中使用Panel控件实现在一个窗体中嵌套另一个窗体
    HslCommunication组件库使用说明
    C#判断dataGridView1 点击的是哪一列上的按钮
  • 原文地址:https://www.cnblogs.com/felixzh/p/4622920.html
Copyright © 2011-2022 走看看