SpringMVC拦截器

Spring MVC的拦截器(Interceptor) 与Java Servlet的过滤器(Filter) 类似,它主要用于拦截用户的请

求并做相应的处理。通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。

拦截器与过滤器区别:

1.拦截器是基于java的反射机制的,而过滤器是基于函数回调。

2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

6.拦截器可以获取IOC容器中的各个bean,而过滤器就不行,拦截器里可以注入一个service,可

以调用业务逻辑。

拦截器的定义:在Spring MVC框架中,定义一个拦截器,需要对拦截器进行定义和配置。定义一

个拦截器可以通过两种方式:一种是通过实现HandlerInterceptor接口或继承HandlerInterceptor

拦截器拦截的都是请求,访问不到页面接口的实现类来定义;另- -种是通过实现

WebRequestinterceptor接口或继承WebRequestInterceptor接口的实现类来定义。

HandlerInterceptor接口中有三个方法

perHandle 在执行请求的业务逻辑之前调用

poatHandle 业务执行完后,进入视图解析器,在解析视图之前执行该方法

afterCompletion 视图渲染(当前页面响应给用户)结束之后执行

单个拦截器的执行流程:

在配置文件中,如果只定义了一-个拦截器,程序首先将执行拦截器类中的preHandle()方法,如果

该方法返回true,程序将继续执行控制器中处理请求的方法,否则中断执行。如果preHandle()方法

返回true,并且控制器中处理请求的方法执行后返回视图前,将执行postHandle()方法。返回视图

后,才执行afterCompletion(方法。

上一篇:Spark-sql实验5.1


下一篇:IDEA安装及环境配置