声明:本文是作者编程经验的总结,如有不同见解,欢迎指正

1、拦截器是spring架构的一个概念,拦截器是在action请求到Controller之前所进行的操作。其实拦截器是有三个方法,分别在进入Controller之前,return前,return后执行。之前没有接触到spring的时候,总是习惯用过滤器做这些事情;当然了过滤器和拦截器是有区别的,两者的实现原理是不同的,并且执行的时间也是不同的,拦截器是使用了aop(面向切面编程)的原理,至于详细的区别,大家可以网上去搜搜,接下来使用一个简单的示例教给大家如何使用spring的拦截器。

2、创建一个拦截器,实现HandlerInterceptor接口,重写此接口的三个方法,preHandle、postHandle、afterCompletion,只有第一个方法返回true时,才会进入Controller,否则不会处理Controller内容,也不会执行后边两个方法。我们创建一个拦截器InterceptorTest,在其中写上三条输出日志。

java spring拦截器例子 spring中拦截器_拦截器

 

3、创建配置类InerceptorConfigurer。把创建好的拦截器InterceptorTest,注册到spring容器中,使用spring的注解@Configuration。这样在项目启动是,spring会把拦截器配置到spring容器中。注意拦截的规则/testAction/*,这样在访问的时候就能拦截此规则的请求。

java spring拦截器例子 spring中拦截器_拦截器_02

4、创建一个Controller,并配置路径为/testAction/hello,在此Controller中输出一行日志,并返回前台:Hello World:666666

java spring拦截器例子 spring中拦截器_拦截器_03

5、启动项目,查看启动日志;打开浏览器,访问刚才创建的Controller,并查看拦截器是否执行。

java spring拦截器例子 spring中拦截器_java spring拦截器例子_04

java spring拦截器例子 spring中拦截器_拦截器_05

java spring拦截器例子 spring中拦截器_拦截器_06

6、查看ecplise的控制台,发现输出了日志,和我们预测的输出一样。