• 过滤器



    ## 过滤器 (web三大组件之一)##

    # 基础概念;
    一个起到过滤的对象,可以在请求和响应的时候进行过滤;
    可以对资源进行拦截,用以进行我们需要的操作;

    # 应用场景;
    >> 权限过滤;
    >> 日志文件;
    >> 图片转换;
    >> 数据压缩;
    >> 加密;

    >> 相关事项;
    |-- 拦截谁是由过滤器的配置决定;

    |-- 请求和响应机制;
    对于浏览器发出的请求资源,过滤器可以进行拦截使其无法到达服务器;
    但对于服务器返回的响应请求,过滤器无法进行截断拦截,响应一定会返回浏览器;


    # 使用步骤;
    >> 实现Filter接口;
    |-- init(FilterConfig)
    |-- doFilter(ServletRequest arg0,ServletResponse arg1,FilterChain chain)
    chain.doFilter(arg0,arg1);//放行;
    /*
    注意;该方法不是Filter接口中的doFilter方法,该方法的作用是拦截;
    而接口中的doFilter方法的作用是拦截;
    */
    |-- destory()
    >> 配置xml文件;
    |-- 注意;
    该配置文件不会自动生成,需要手动配置;
    即使目标资源无法访问,只要符合过滤信息依然会启动过滤器;


    # 生命周期;
    >> 容器启动;
    |-- 实例化;
    |-- 初始化;
    |-- 更改配置文件也会重新实例化;

    >> 访问资源;
    |-- 执行doFilter;
    |-- 每次访问都执行;

    >> 容器关闭;
    |-- 销毁;

    # 多个过滤器的拦截顺序;
    |-- 详解;
    > 浏览器 ---> 过滤器1 ---> 过滤器2 ---> 服务器
    > 服务器 ---> 过滤器2 ---> 过滤器1 ---> 浏览器
    |-- 注意事项;
    > 过滤器没有优先级的概念,执行顺序按照配置文件
    中<filter-mapping>节点配置的顺序来进行执行;
    并且,/*和*.jsp没有优先级之分,
    只要是配置了的过滤器都会执行;

    # 过滤器的配置;
    >> 配置方式;
    |-- /路径名/×
    |-- /×
    |-- ×.扩展名

    >> 配置个数;
    |-- 一个Filter可以配置多个过滤路径;

    >> 过滤配置;

    <!-- 所有错误都会被过滤 -->
    <dispatcher>ERROR</dispatcher>

    <!-- 所有转发都会被过滤-->
    <dispatcher>FORWARD</dispatcher>

    <!-- 所有动态包含都会被过滤 -->
    <dispatcher>INCLUDE</dispatcher>

    <!-- 所有请求都会被过滤 -->
    <dispatcher>REQUEST</dispatcher>

    # 获取初始化参数;
    >> 通过filterConfig方法;


    # 应用案例;
    >> 01_simpleExample.project
    |-- 通过过滤器完成乱码处理; --- CharacterEncoding.java
    |-- 动态资源禁用缓存; --- DynamicSourceNotNeedeCacheFilter.java
    |-- 静态资源启用缓存; --- StaticSourceNeededCahceFilter3.Java

    # 高级案例 --- 自动登录;

    >> 新建web项目;
    |-- 建立登录jsp界面;
    |-- 建立domain实体类;
    |-- 建立Servlet包;
    > 建立loginServlet类;
    > 通过过滤器解决乱码问题;

  • 相关阅读:
    js正则表达式 验证手机号,email地址和邮政编码
    XP系统中IIS访问无法显示网页,目前访问网站的用户过多。终极解决办法
    读《现代前端技术解析》有感
    开源一套基于vue全家桶的webapp
    canvas图像处理汇总
    chrome调试工具高级不完整使用指南(实战二)
    chrome调试工具高级不完整使用指南(实战一)
    chrome调试工具高级不完整使用指南(优化篇)
    chrome调试工具高级不完整使用指南(基础篇)
    前端项目怎样合理使用模块化和闭包?
  • 原文地址:https://www.cnblogs.com/bwcx1375/p/7152811.html
Copyright © 2020-2023  润新知