现在的面试题很少问Java Web开发中过滤器,拦截器和监听器的区别了吧?为什么不问这个问题,也不清楚,感觉是老掉牙的东西,现在的开发者简历上会的东西很多,问了这么low的问题会被嫌弃?确实在SpringBoot,SpringCloud以及容器化当道的时代,这些基础知识很容易被遗忘。下面就简单介绍一下自己曾经的面试题。
过滤器(Filter):过滤器是一种可以在Servlet容器处理请求之前或之后对请求和响应进行预处理的组件。它主要用于对请求和响应进行过滤、修改和增强,例如进行字符编码转换、请求包装、响应解压缩等操作。刚开始学习Servlet的时候,过滤器的配置在web.xml文件中,现在大多使用注解的形式使用。
拦截器(Interceptor):拦截器是Spring MVC框架提供的一种拦截器机制,用于在请求处理的不同阶段进行拦截、处理和增强。与过滤器不同,拦截器是面向Spring框架的,它可以在Spring MVC框架的Controller处理请求之前或之后对请求和响应进行处理。拦截器通常用于实现日志记录、权限控制、性能监控等功能。拦截器的配置在Spring的配置文件中或者以Java类继承的形式配合注解使用。
监听器(Listener):监听器是一种可以监听Web应用程序中特定事件并在事件发生时执行一些操作的组件。例如,可以监听Web应用程序的启动和关闭、会话的创建和销毁、ServletContext属性的添加和删除等事件。监听器通常用于实现数据缓存、资源初始化、统计分析等功能。早期的监听器的配置也在web.xml文件中,现在在SpringBoot中通过实现接口的形式配合注解使用。
从应用场景来看,其实上面的三个概念会在平时的项目中经常使用到,知道其概念,使用方法会让代码架构更合理,不让业务代码跟通用的处理代码耦合在一起,还是值得我们去温故了解的知识点。