介绍

在 Java Web 应用程序中,拦截器和过滤器是两种不同的机制,用于在请求/响应处理过程中进行拦截和过滤。两者都可以用来在请求到达目标资源之前对其进行预处理、修改或拦截。

但是,拦截器和过滤器之间存在一些显著的差异,包括:

  1. 拦截器是 Servlet 规范中的一部分,而过滤器是 Java EE 规范的一部分。
  2. 拦截器可以在拦截请求之前访问请求的详细信息,包括请求的参数、头信息等,而过滤器在请求到达目标资源之前无法访问请求的详细信息。
  3. 拦截器可以对请求进行更精细的控制,比如可以选择拦截特定的请求方法或路径,而过滤器无法进行如此精细的控制。
  4. 拦截器可以在请求处理过程中多次调用,而过滤器只会在请求到达目标资源之前调用一次。

总的来说,拦截器提供了更细粒度的控制,比过滤器更灵活,但是使用起来可能略微复杂。过滤器相对来说更简单易用,但是对于过滤器,还可以进行如下总结:

  1. 过滤器是在一个 Java Web 应用程序中的多个资源之间共享的组件。你可以将一个过滤器应用于多个资源,以便在请求到达这些资源之前对其进行过滤。
  2. 过滤器使用过滤器配置来定义应用于每个过滤器的资源的 URL 模式。这样,你就可以使用过滤器配置来控制哪些资源会被过滤器处理。
  3. 过滤器是在请求到达目标资源之前进行过滤的。这意味着,在请求进入 Servlet 容器并分派到相应的 Servlet 之前,过滤器就已经被执行了。
  4. 过滤器可以拦截请求和响应,并对其进行修改。例如,你可以使用过滤器来修改请求的参数、增加响应头信息等。

总结

  1. 生命周期不同:拦截器是在请求到达目标处理程序之前就已经创建好的,并且在整个请求处理过程中都会被使用。而过滤器是在每次请求到达时才被创建的,在请求处理完成后就会被销毁。
  2. 执行顺序不同:拦截器的执行顺序是固定的,可以通过配置来指定拦截器的执行顺序。而过滤器的执行顺序是由 Web 服务器决定的,无法通过配置来控制。
  3. 应用场景不同:拦截器通常用于在请求和响应之间插入自定义的处理逻辑,比如身份验证、授权、日志记录等。而过滤器通常用于在请求和响应之间进行过滤和修改,比如压缩响应、设置响应头、记录访问日志等。

总的来说,拦截器更适合用于在请求处理过程中插入自定义的处理逻辑,而过滤器更适合用于在请求和响应之间进行过滤和修改。

不过,拦截器和过滤器并不是互斥的,也不是一定要选择其中的一种。在特定的应用场景下,你可能会使用拦截器和过滤器来共同完成某个功能。例如,你可能会使用拦截器来进行身份验证,然后使用过滤器来压缩响应内容。

最后,拦截器和过滤器都是 Java Web 开发中常用的机制,使用它们可以帮助你在请求和响应处理过程中插入自定义的处理逻辑。

拦截器代码

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在请求到达目标处理程序之前执行的处理逻辑// 如果返回 false,则请求不会被继续传递// 如果返回 true,则请求会继续传递return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 在请求被处理程序处理后执行的处理逻辑}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 在请求处理完成后执行的处理逻辑}
}

过滤器

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 在过滤器被创建时执行的处理逻辑}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 在请求和响应之间进行过滤和修改的处理逻辑// 如果调用了 chain.doFilter(request, response),

java 拦截器和过滤器的区别相关推荐

  1. 区分Java拦截器和过滤器

    今天带大家分析java拦截器和过滤器的区别,文中有非常详细的解释说明,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下 一.过滤器(filter) 过滤器处于客户端与Web资源(Serv ...

  2. 详解拦截器和过滤器的区别

    拦截器和过滤器的区别 过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对acti ...

  3. springboot拦截器和过滤器的区别与使用

    拦截器与过滤器的区别 spring的拦截器与servlet的filter有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查.日志记录等,不同的是: 适用范围不同:filter是servle ...

  4. 拦截器和过滤器的区别 -- 简单分析篇

    过滤器,是在Java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...

  5. java 拦截器和过滤器区别(转载)

    2019独角兽企业重金招聘Python工程师标准>>> 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调  2.过滤器依赖与servlet容器,而拦截器不依赖与servl ...

  6. 大剑无锋之拦截器和过滤器的区别【面试推荐】

    ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求 ...

  7. java拦截器和过滤器配置,逆袭面经分享

    1. CAP 的由来 要理解 CAP,首先我们要清楚,为何会有人提出 CAP?他提出 CAP 是为了解决什么问题? 时间回到 1985 年,彼时,后来证明了 CAP 理论的 Lynch 教授此时给当时 ...

  8. java拦截器和过滤器,2021最新版!

    正文 现在市面上的算法资料也五花八门,种类繁多,小编也整理了一份不同于市面且有意思的算法资料,不能说多全面,但是是小编花了很长时间整理归纳出来的,自我感觉还行.分享给同事及群里反响都不错,所以小编打算 ...

  9. struts2中拦截器和过滤器的比较

    拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而 ...

最新文章

  1. 【bootstrap】如何解决页面缩小后上方导航栏格式变化的问题
  2. 精简的shell计算器
  3. 自学Python十二 战斗吧Scrapy!
  4. Sklearn参数详解—贝叶斯
  5. 是真“开发者”,就来一“测”到底!
  6. java 中class相关的问题
  7. 时隔两年,PuTTY 喜提新版
  8. VS调试c++动态库最简单最高效的方法
  9. 产品配件类目税目分类_商品和服务税收分类编码表-2017版
  10. 电力安全工作规程发电厂和变电站电气部分_电气主接线知识精讲!
  11. unity3d工程Plugin文件夹笔记
  12. c语言rank函数使用实例,rank函数实例(1)
  13. 别用cmd了,配置一个比Mac终端还美的Windows Terminal——详细教程
  14. getline()与cin.getline()函数用法详解
  15. P4 开发实践 — Overview
  16. 全国计算机一级WORD第三套,全国计算机等级考试一级WPSOffice练习题及答案第三套.docx...
  17. UE4 版本迭代、资源热更、pak更新方案
  18. Solr拼写检查示例
  19. 微信餐饮小程序有必要开发吗
  20. python使用xpath文本定位元素

热门文章

  1. 从零开始做手机云台/稳定器
  2. Docker镜像文件存放
  3. 风险投资与经营者 分成利润
  4. 高效的股票数据接口工具有哪些?
  5. 解决github下载慢的问题可以提速【1M/s】
  6. 用Amos进行验证性因素分析
  7. 移动端h5页面帮助资料干货
  8. 深度学习(一)深度前馈网络(deep feedforward network)
  9. C# 控件Chart的 圆饼图百分比
  10. 基于阿里云物联网平台的Android物联网软件框架(快速开发)