zoukankan      html  css  js  c++  java
  • Java-Filter:过滤器请求拦截

    1.概念

    • web中的过滤器:当访问服务器资源时,过滤器可以将请求拦截下来,完成一些特殊的功能
    • 过滤器的作用:
      • 一般用于完成通用的操作,如:登录验证,统一编码处理,敏感字符过滤

    2.快速入门

    1.步骤

    1. 定义一个类,实现接口filter
    2. 复写方法
    3. 配置拦截路径
      1. web.xml
      2. 注解

    3.过滤器细节

    1.web.xml配置

    <filter>
        <filter-name>demo1</filter-name>
        <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>demo1</filter-name>
        <拦截路径>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    2.过滤器执行流程

    1. 执行过滤器
    2. 执行放行后的资源
    3. 回来执行过滤器放行代码下边的代码

    3.过滤器生命周期方法

    1. destroy在服务器关闭后,Filter对象被销毁,如果服务器是正常关闭,则会执行destroy方法
    2. doFilter每一次请求被拦截时执行,执行多次
    3. init在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次,用于加载资源

    4.过滤器配置详解

    • 拦截路径配置:
      1. 具体资源路径 /index.jsp 只有访问index.jsp资源时,过滤器才会被访问
      2. 拦截目录 /user/* 访问/user下的所有资源时,过滤器都会被执行
      3. 后缀名拦截 *.jsp/ 访问所有后缀名为jsp资源时,过滤器都会被执行
      4. 拦截所有资源 /* 访问所有资源时,过滤器都会被执行
    • 拦截方式配置:资源被访问的方式
      • 注解配置:
        • 设置dispatcherTypes属性
          1. REQUEST:默认值,浏览器请求资源
          2. FORWARD:转发访问资源
          3. INCLUDE:包含访问资源
          4. ERROR:错误跳转资源
          5. ASYNC:异步访问资源
      • web.xml配置
        • 设置dispatcherTypes = {...}即可

    5.过滤器链(配置多个服务器)

    • 执行顺序 过滤器1 过滤器2 执行资源 过滤器2 过滤器1
    • 过滤器先后顺序问题
      • 注解配置:按照类名的字符串比较规则比较,值小的先执行
      • web.xml配置:谁定义在上边,谁先执行
    • 增强对象的功能
      • 设计模式:一些通用的解决固定问题的方式
      • 装饰模式
      • 代理模式
      • 概念
        • 真实对象:被代理的对象
        • 代理对象
        • 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
      • 实现方式
        • 静态代理
        • 动态代理
        • 实现步骤
          • 代理对象和真实对象实现相同的接口
          • 代理对象=Proxy.newProxyInstance();
          • 使用代理对象调用方法
          • 增强方法
        • 增强方式
        • 增强参数列表
        • 增强返回值类型
        • 增强方法体执行逻辑

    Listener:监听器

    • 概念:web的三大组件之一
    • 事件监听机制
      • 事件:一件事情
      • 事件源:事件发生的地方
      • 监听器:一个对象
      • 注册监听:将事件,事件源,监听器绑定在一起,当事件源上发生某个事情后,执行监听器代码
    • ServletContextListener:监听ServletContext对象的创建和销毁
      • void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
      • void contextInitialized(ServletContextEvent sce) :ServletContext对象被创建之前会调用该方法
  • 相关阅读:
    使用ALAssetsLibrary读取所有照片
    dispatch_after中时间的计算
    UICollectionView的header悬停
    ios侧滑返回:完美解决 interactivePopGestureRecognizer 卡住的问题
    自定义TabBar
    automaticallyAdjustsScrollViewInsets(UITextView文字顶部留有空白)
    kvo&kvc
    调用iPhone的短信
    Windows 10中Oracle数据库导出到Access数据库(MDB)
    HP Z620 Windows 7 系统安装(含磁盘阵列)
  • 原文地址:https://www.cnblogs.com/dongxuelove/p/13044025.html
Copyright © 2011-2022 走看看