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

    什么是过滤器

            Spring 中不能处理用户请求,但可以用来提供过滤作用的一种Servlet规范。在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理。具体则是通过截取用户端的请求与响应信息,并对之进行过滤,即在Servlet被调用之前检查Request对象,修改Request Header和Request内容;在Servlet被调用之后检查Response对象,修改Response Header和Response内容。

    过滤器作用

           过滤器也能起到拦截请求并作出相应的行动。比如: 可以进行(BA)认证过滤,登陆过滤等。

    过滤器实现方式

           通过实现Filter接口,也可以通过实现AbstractFilter抽象类。

    Filter接口 展开原码

    init

         初始化操作,FilterConfig用来获取web.xml中关于初始化的配置(init-param)。

    doFilter

        完成实际的过滤操作, 当客户请求访问与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器。

    destroy

    过滤器销毁时被调用, 即释放过滤器占用的资源。

    注意事项: 同一个Url定义多个过滤器时,服务器会按照定义先后顺序组成过滤器链,先后执行filter的doFilter方法。

    过滤器和拦截器对比

     
    过滤器(Filter)
    拦截器(Interceptor)
    原理 基于函数回调 基于java的反射机制
    是否依赖Servlet容器
    是否能访问action上下文、值栈里的对象
    在action的生命周期中,是否多次被调用 否,仅在容器初始化时被调用一次
    拦截范围 所有请求 仅能对action请求
    是否可以获取Ioc容器中的各个bean(是否属于Spring的组件) 是,在拦截器里注入一个service,即可以调用业务逻辑。
    使用范围不同 只能用于Web程序中 不仅能用于Web中,也可以用于Application、Swing程序中
    规范不同 Servlet容器支持的 Spring容器支持的
    深度不同 Servlet前后 深入到方法前后、异常抛出前后

    过滤器和拦截器执行顺序图

     

    相关链接:

    Spring学习——过滤器

    哔哔叭哔哄
  • 相关阅读:
    高斯滤波
    最短路径与贪婪
    应该要知道的几个统计学定义.
    Linux network setting.
    Windows与自定义USB HID设备通信说明.
    Win32 WriteFile and ReadFile
    C语言原码反码补码与位运算.
    Linux下查看显示器输出状态以及修改显示器工作模式(复制 or 扩展)
    Web通信协议:OSI、TCP、UDP、Socket、HTTP、HTTPS、TLS、SSL、WebSocket、Stomp
    如何用搜狗拼音输入法输入希腊字母及各种上下标
  • 原文地址:https://www.cnblogs.com/he-px/p/7145626.html
Copyright © 2011-2022 走看看