1.什么是拦截器

拦截器(Interceptor)类似于Servlet中的过滤器,主要用于拦截客户请求并做出相应的处理。与过滤器有如下区别:
1.过滤器只能在容器初始化时被调用一次,在action的生命周期中,而拦截器可以多次被调用。
2.过滤器可以对几乎所有的请求起作用,拦截器只能对action请求起作用。
3.过滤器不能访问action上下文、值栈里的对象,而拦截器可以访问。
4.过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
5.过滤器是基于函数回调,而拦截器是基于java的反射机制的。
6.过滤器不能获取IOC容器中的各个bean,而拦截器可以,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
第6点并不正确,不能获取BEAN是写法问题。

2.拦截器特点

1.请求到达经过拦截器,响应回来也经过拦截器
2.只能拦截控制器相关请求不能拦截JSP请求
3.拦截器可以中断用户请求轨迹

3.拦截器作用

将多个控制器中共有代码放入拦截器可以减少控制器代码冗余

4.springmvc中开发拦截器步骤

1.实现HandlerInterceptor接口(或继承其实现类)或者实现实现WebRequestInterceptor(或继承其实现类)。
2.XML文件中配置拦截器

5.springboot中使用拦截器

在springboot中开发拦截器与mvc中类似,只是用注解代替了xml文件配置。

自定义配置器:
在这里插入图片描述

然后实现WebMvcConfigurer配置器。
以前一般继承org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter类,不过SrpingBoot 2.0以上WebMvcConfigurerAdapter类就过时了。有以下2中替代方法:
1.直接实现org.springframework.web.servlet.config.annotation.WebMvcConfigurer接口。(推荐)
2.继承org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport类。但是WebMvcConfigurationSupport覆盖了@EnableAutoConfiguration里的所有方法,每个方法都需要重写继承并且WebMvcConfigurationSupport会让SpringBoot对mvc的自动配置失效。不过目前大多数项目是前后端分离,并没有对静态资源有自动配置的需求,所以继承WebMvcConfigurationSupport也未尝不可。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐