zoukankan      html  css  js  c++  java
  • 拦截器与过滤器的区别

    拦截器与过滤器的区别 :

    1、拦截器是基于Java的反射机制的,而过滤器是基于函数回调。

    2、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

    3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

    4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

    5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

    6、执行顺序 :过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。

    过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。

    一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个请求拦截。

    创建一个Filter 只需两个步骤:

    (1)创建Filter 处理类:

    (2)在web.xml 文件中配置Filter 。

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

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

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

    void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。 

    过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR</dispatcher>该元素位于filter-mapping中。

    作者:Rick__想太多先森

    出处:http://www.cnblogs.com/xtdxs/

    注意:本文仅代表个人理解和看法哟!和本人所在公司和团体无任何关系!

  • 相关阅读:
    Jenkins pipeline 流水线部署 并自定义 buildName 和 buildDescription 显示信息
    Jenkins中插件 pipeline 中声明式流水线的语法
    Linux 发送https POST请求sample ===Slack 频道中发送消息通知
    Jenkins pipline
    jenkins pipeline中获取shell命令的输出
    Chrome浏览器对标签进行整理和分组
    MacBook 对rar后缀的文件进行加压
    Macbook中Docker一栏的应用程序图标不见了,怎么找出来?
    [Pytest]运行指定的case
    软考 高项 重点知识点
  • 原文地址:https://www.cnblogs.com/xtdxs/p/6489251.html
Copyright © 2011-2022 走看看