什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?

AOP、Interceptor、Filter关于日志记录的联系与区别 摘要: Spring框架中AOP、Filter和Interceptor均可用于日志记录,但适用场景不同。AOP适用于业务层(@Service),记录方法调用、执行时间等核心业务日志,通过切面编程实现环绕增强;Interceptor属于SpringMVC层,适合记录Controller的HTTP请求参数、URL等Web相关日志;Filter作为Servlet容器级拦截,处理原始请求/响应数据(如Body)。三者互补:Filter全局拦截请求,Interceptor处理Web层行为,AOP聚焦业务逻辑。组合使用 阅读详情

这里是修真院后端小课堂,每篇分享文从

【什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?】

标题:

【修真院java 小课堂】什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?

开场语:

大家好,我是IT修真院郑州分院第12期的学员张泉良,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务二,深度思考中的知识点——什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?

  1. 背景介绍:

Filter是什么

过滤器:依赖于servlet容器。在实现上,基于函数回调,它可以对几乎所有请求进行过滤,

一个过滤器实例只能在容器初始化时调用一次

Interceptor是什么

依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。

在实现上,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,

就是在一个方法前,调用一个方法,或者在方法后,调用一个方法

AOP是什么

AOP(Aspect-Oriented Programming)是一种编程思想,对OOP的补充

常见实现:Filter和拦截器(代理模式)

OOP: 对于所有对象中都存在的一些公共行为,无能为力

为减少重复代码,AOP(面向切面)技术诞生

  1. 知识剖析:

2.1 Filter 的使用:

(1)在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest

(2)根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据

(3)根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据

2.2 创建一个Filter

(1)创建Filter 处理类

init方法、destory方法、doFilter方法

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

2.3 interceptor 使用

通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter抽象类,

复写preHandle()、postHandle()和afterCompletion()来对用户的请求进行拦截处理

  1. 常见问题:

3.1 Filter与interceptor的区别

(1) 接口定义不同

Filter 接口定义在 javax.servlet 包中,接口 HandlerInterceptor 定义在org.springframework.web.servlet 包中

(2) 规范不同

Filter 是在 Servlet 规范中定义的,是 Servlet 容器支持的;拦截器是在 Spring容器内的,是Spring框架支持的

(3) 使用资源不同

拦截器是一个Spring的组件,归Spring管理,因此能使用Spring里的任何资源、

对象;Filter 不能够使用 Spring 容器资源

(4) 深度不同

Filter在只在 Servlet 前后起作用;拦截器能够深入到方法前后、异常抛出前后等。

(5) 调用者不同

Filter 是被 Server 调用;Interceptor 是被 Spring 调用。

因此 Filter 总是优先于 Interceptor 执行

3.2 多个过滤器执行顺序

(1): 执行 第一个Filter中chain.doFilter()之前的部分

(2): 执行 第二个Filter中chain.doFilter()之前的部分

(3): 业务逻辑

(4): 执行 第二个Filter中chain.doFilter()之后的部分

(5): 执行 第一个Filter中chain.doFilter()之后的部分

3.3 面向切面编程

(1)通知(增强)Advice:你想要的功能

(2)连接点 Join point:spring允许你是通知(Advice)的地方

   spring 方法 ,AspectJ支持构造器或属性注入时

(3)切点 Pointcut:连接点的基础上,来定义切入点

(4)切面 Aspect:通知和切入点的结合

(5)引入 Introduction: 向现有的类添加新方法属性

(6)织入 Weaving : 切面应用到目标对象来创建新的代理对象的过程

  1. 编码实战:

  2. 拓展思考:

5.1 多个过滤器与拦截器的代码执行顺序

过滤器在servlet启动后开始执行,进入页面访问开始执行拦截器

5.2 AOP实现,统一异常

重点在切点的定义,异常可以为预期异常和非预期异常,处理方式不同

5.2 监听器

以监听Web应用的上下文信息、Servlet请求信息和Servlet会话信息,即ServletContext、ServletRequest、HttpSession

执行顺序:监听器>过滤器>拦截器

  1. 参考文献:

Filter及FilterChain的使用:

(1)https://blog.youkuaiyun.com/zhaozheng7758/article/details/6105749

监听器:

(2)https://www.cnblogs.com/dudududu/p/8507735.html

filter、interceptor、aop实现:

(3)https://blog.youkuaiyun.com/FU250/article/details/80292293

  1. 更多讨论:

Q1:Listener的分类有哪些?

A1:按照对象 Servlet的Listener监听器包括三种类型:

  ServletContextListener 监听ServletContext对象

 HttpSessionListener 监听Session对象

 HttpRequestListener 监听Request对象

 按照监听事件类型划分:

 用于监听域对象自身的创建和销毁的事件监听器。

 用于监听域对象的属性的增加和删除的事件监听器。

用于监听绑定到HttpSession域中的某个对象的状态的事件监听器。

Q2:过滤器的执行过程,调用接口的顺序

A2:如果有多个过滤器,那么过滤器的初始化顺序是web.xml中配置由下到上的;

注意:容器启动的时候的初始化顺序是由下到上,但是在用户进行资源的访问的时候;

过滤器复写的public void doFilter方法是由上至下的按照web.xml中配置的顺序由上到下执行。

Q3:监听器其主要作用是什么?

A3:统计在线人数,利用HttpSessionLisener;加载初始化信息:利用ServletContextListener;

  统计网站访问量实现访问监控
  1. 鸣谢:

  2. 结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

SpringBoot中Interceptor和Filter的使用 目录`Interceptor` 拦截器 Interceptor 拦截器 HandlerInterceptor 接口,该接口提供了拦截器的功能,如果自定义拦截器就要实现该接口,HandlerInterceptor 源码如下 public interface HandlerInterceptor { // 处理器执行前方法 default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object 阅读详情

相关推荐

IATF16949核心职位全解析

TM / Top MgmtMR / QMRProcess OwnerQMQAQCSQECQEPQEPETEMEIEPM / PJMFMEA ModeratorMSA CoordinatorSPC CoordinatorCM / CCB内审员CP / CPK

weixin_49938552的博客 972

Flink 多流转换

文章目录1.分流1.1 简单实现2.Union聚合3.Connect 连接4.Join 合流4.1 Window Join 窗口联结4.2 Interval Join 间隔联结4.3 Window CoGroup 窗口同组联结5.总结 1.分流 所谓“分流”,就是将一条数据流拆分成完全独立的两条、甚至多条流。也就是基于一个DataStream,得到完全平等的多个子 DataStream,如图 8-1 所示。一般来说,我们会定义一些筛选条件,将符合条件的数据拣选出来放到对应的流里。 1.1 简单实现 其实根

959 1463

Day470&471.Netty概述&Netty高性能架构设计 -netty

Netty概述 一、原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。 JDK NIO

阿昌爱Java 1570

侧边栏_第四课 侧边栏和过滤器

注意:发送 “lesson4” 可以获取英文版 Email嗨,今天我们介绍的是 sidebar (侧边栏)和 Filter (过滤器)。sidebar 是个独立于主内容区的面板,可单独开启和关闭。侧边栏通过页面右上方的...菜单打开sidebar。它的主要目的是为了方便你在主内容区进行写作时,并排打开其他笔记进行查看或参考。你可以任意在主内容区或侧边栏进行编辑(怎么方便就怎么来)。你甚...

weixin_39838798的博客 547

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6164

HTML5+CSS3+JS小实例:焦点图波浪切换动画特效

实例:焦点图波浪切换动画特效。字体图标库:Font Awesome。技术栈:HTML+CSS+JS。

艾恩小灰灰的博客 907

Spring:过滤器filter、拦截器interceptor、和AOP的区别与联系

Filter过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Filter过滤器:和框架无关,可以控制最初的http请求,但是更细一点的类和方法控制不了。 过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对...

琦彦 2万+

等保测评-达梦数据库

一般适用于等保测评

m0_54146694的博客 1297

过滤器(Filter)、拦截器(Interceptor)和AOP(面向切面编程)之间的差异

主要用于Servlet规范中,对请求和响应进行预处理和后处理。主要用于Spring框架中,对Controller处理过程进行增强。是一种编程范式,通过切面将横切关注点模块化,可以用于处理事务、日志等横切关注点。在实际应用中,过滤器、拦截器和AOP可以协同使用,根据需求选择合适的方式来增强应用的功能。过滤器范围最大,拦截器次之,aop最小aop操作最细致,拦截器次之,过滤器最小。

m0_70577179的博客 835

芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点

芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点

包括YOLOv5、YOLOv7、YOLOv8等模型改进 343

华为OD机试真题2026双机位C卷 Java&Go 实现【用户入网定期复评】

用户开立支付账户,在开户完成后立即对用户进行一次风险模型评级,输出一个评分风险,评分范围1-100,等区间的分为5个等级,1-19为等级1,20-39为等级2,40-59为等级3,60-79为等级4,80-100为等级5,系统每天会任务对全量入网用户进行计算复评时间,输出评分给出新的风险等级。复评规则如下:

MISAYAONE的博客 146

浅谈:Filter(过滤器)与Interceptor(拦截器)和Spring AOP的区别?

Filter过滤器:拦截web访问url地址。 Interceptor拦截器:拦截以 .action结尾的url,拦截Action的访问。 Spring AOP拦截器:只能拦截Spring管理Bean的访问(业务层Service)

u013456370的专栏 9800

STM32入门教程:智能汽车控制

智能汽车是近年来快速发展的领域之一,它结合了嵌入式系统、传感器和通信技术,通过智能化的控制算法和决策系统实现自主导航、避障、环境感知等功能。在这篇教程中,我们将以 STM32 微控制器为核心,通过编写代码案例来介绍智能汽车的控制原理和实现方法。步骤三:决策与执行 最后,我们根据传感器数据做出相应的决策,并执行相应的动作。案例:智能汽车的避障功能 在这个案例中,我们将实现智能汽车的避障功能。感知系统负责感知汽车周围的环境,包括障碍物的距离、车辆的角度等信息。下面我们通过一个具体的案例来演示代码的编写。

2401_85258012的博客 926

基于AOP设计思想的拦截器(Interceptor)与传统拦截器(Filter)的区别

转载地址: http://newleague.iteye.com/blog/1121524 现在AOP的设计开发理念在软件开发中用的越来越广泛,在我们开发的软件中也广泛进行了使用。而最常用的就是filter和interceptor。 Filter 该过滤器的方法是创建一个类XXXFilter实现此接口,并在该类中的doFilter方法中声明过滤规则,然后在配置文件web.

xiaoshang的专栏 1182

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

AOP--Filter使用,过滤器和拦截器的区别

AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想,并不是一种具体的实现,谈到实现一般有Filter和代理模式两种常见的使用方式,spring中的AOP也是封装代理模式完成的,可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP利用封装、继承和多态把一切事物打造成对象结构,但是对于所有对象中都存在的一

常耀光的博客 6617

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

filter、interceptor、aop实现与区别

前言项目中我们经常需要对RESTful api进行拦截,主流实现方法有filter、interceptor、aop,先说一下他们各自的实现。FilterAnimalFilter实现javax.servlet.Filter,项目启动时已初始化完成,可在控制台看到打印的初始化日志。@Component public class AnimalFilter implements Filter { ...

_再见阿郎_的专栏 2万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Filter、Interceptor、Spring Aop 区别分析

Filter、Interceptor、Spring Aop 区别

笔记 1076

SpringBoot 三种拦截http请求方式Filter,interceptor和aop

SpringBoot 三种拦截http请求方式Filter,interceptor和aop。 这三种拦截方式的拦截顺序是:filter—>Interceptor-->ControllerAdvice-->@Aspect -->Controller; 这三种方式的区别:1.过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Filter过滤器:和框架无关,可以控制最初的http请求,

u014496893的博客 2万+

过滤器(Filter)与拦截器(Interceptor)区别

过滤器(Filter)与拦截器(Interceptor)区别

吴名氏的博客 13万+

过滤器filter、拦截器interceptor、和AOP的区别与联系

Filter过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Filter过滤器:和框架无关,可以控制最初的http请求,但是更细一点的类和方法控制不了。 过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对请求响应做出像响应的过滤操作, 比如设置字符编码,鉴权操作等 Interceptor拦截器 拦截器拦截

lishuan182的博客 2326

过滤器(Filter)和拦截器(Interceptor)的区别

Filter介绍 Filter可以认为是Servlet的一种“加强版”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。Filter也可以对用户请求生成响应,这一点与Servlet相同,但实际上很少会使用Filter向用户请求生成响应。使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servle...

weixin_30664615的博客 6369

spring boot实现AOP,Filter,Interceptor以及3个之间的区别和使用场景

零、测试的项目项目:demo    输入:http://127.0.0.1:8080/demo/hello/springboot进行测试/** * 测试用的 */ @RestController public class Hellotroller { @GetMapping("/hello/{name}") public String hello(@PathVariable ...

3年零6个月 4660

Spring MVC filter、interceptor、AOP区别

Spring MVC filter、interceptor、AOP区别 Filter过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Interceptor拦截器 拦截器拦截以 .action结尾的url,拦截Action的访问。 Interfactor是基于Java的反射机制(APO思想)...

Jaylon Wang的专栏 651
上一篇: 生成json的几种方式
下一篇: 什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?
learning__java
博客等级 码龄8年 87粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值