这里有几个地方需要注意:1.自定义注解 2.aop,拦截器,过滤器的区别?3.如何获取方法上的自定义注解的属性值?
1.在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。
元注解:
元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:1.@Target,2.@Retention,3.@Documented,4.@Inherited,具体的可以参考博文:深入JAVA注解(Annotation):自定义注解
2.首先看下过滤器和拦截器的区别。如下图。
从一个请求到返回数据的整个过程看,首先是请求进入Servlet,在Servlet中存在过滤器。对url进行拦截。后经过分发器后,会进入到spring容器,在请求尚未到达具体的controller时,会先经过拦截器的preHandle方法。方法通过后,进入业务层处理,返回实体,在进入postHandle方法。经过JSP后会进入afterCompletion方法,返回页面ModleAndView.
过滤器
过滤器是第一道拦截配置文件配置好的拦截条件拦截URL
Spring中自定义过滤器(Filter)一般只有一个方法,返回值是void,当请求到达web容器时,会探测当前请求地址是否配置有过滤器,有则调用该过滤器的方法(可能会有多个过滤器),然后才调用真实的业务逻辑,至此过滤器任务完成。过滤器并没有定义业务逻辑执行前、后等,仅仅是请求到达就执行。
特别注意:过滤器方法的入参有request,response,FilterChain,其中FilterChain是过滤器链,使用比较简单,而request,response则关联到请求流程,因此可以对请求参数做过滤和修改,同时FilterChain过滤链执行完,并且完成业务流程后,会返回到过滤器,此时也可以对请求的返回数据做处理。
拦截器
拦截器是第二道拦截URL,根据代码中的表达式拦截符合条件的url
拦截器有三个方法&#x