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/

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

  • 相关阅读:
    3种方式提高页面加载速度
    CSS中的层叠、特殊性、继承、样式表中的@import
    jQuery从零开始(二)
    jQuery从零开始(一)
    设计模式
    Vue-cli3脚手架工具快速创建一个项目
    Git上传到码云及其常见问题详解
    eclipse导入本地的svn项目后不能在team提交更新
    js拖拽上传图片
    axure 动态面板制作图片轮播 (01图片轮播)
  • 原文地址:https://www.cnblogs.com/xtdxs/p/6489251.html
Copyright © 2011-2022 走看看