过滤器和拦截器是Web项目中常用的两个功能。本文将简要介绍弹簧靴中过滤器和拦截器的使用来计算控制器中文方法的执行时间,并简单地比较两者中的两个。
现有以下控制器:
在配置过滤器和拦截器下方,以实现该方法的执行时间计算的功能。
定义要实现的类:
改写的三种方法名称已直接描述了其角色,我不会在此处详细介绍。
为了使过滤器在春季启动中生效,需要一些配置。这里有两种主要配置方法。
通过添加以下注释:
注释使其成为春季背景下的豆子。什么请求注释的属性可以输入过滤器,以指示所有请求。
启动项目时,您可以看到控制台的输出。开始后,请访问http:// localhost:8080/user/1。控制台输出如下:
除了将解决方案添加到过滤器类外,我们还可以通过注册注册过滤器。
定义类,加上注释表示是配置类,然后通过注册注册过滤器:
除了注册过滤器外,URL匹配规则还通过方法配置。简介项目要访问http:// localhost:8080/user/1,我们可以看到与上述相同的效果。
通过过滤器,我们只能获得ServletRequest对象,因此我们无法获得其他信息,例如方法,归属,参数,等。
定义一个类以实现接口:
该方法在拦截之前执行,仅在拦截方法没有从异常成功中抛出时才能处理该方法。无论拦截方法是否异常抛出,该方法都将执行。
可以通过这三种方法的参数看到它。与过滤器相比,截距具有更多的对象和异常对象,因此可以获得的信息超过过滤器。但是,过滤器仍然无法获取该方法的参数和其他信息,我们可以通过切割表面编程。
为了使拦截器在弹簧靴中生效,需要以下两个步骤:
1.在拦截器类中添加注释;
2.通过过滤器穿过中间:
启动项目,请访问http:// localhost:8080/user/1,控制台输出如下:
从输出中,我们可以理解三种方法的执行顺序,并执行所有三种方法。
在我们的方法中抛出手册异常:
重新启动项目后,请访问http:// localhost:8080/user/1,控制台输出如下:
可以看出该方法尚未执行。
我们配置了过滤器和拦截器,然后启动项目以访问http:// localhost:8080/user/1:
您可以看到必须先执行过滤器,并且比拦截器晚结束。下图描述了其执行时间之间的区别: