面试题(四)
1.如何定义SpringMVC的拦截器
自定义拦截器可以通过下面两种方式
- 可以实现HandlerInterceptor接口
- 可以继承HandleInterceptorAdapter
将拦截器注册到SpringMVC中
- 实现
WebMvcConfigurer
接口 - 使用
<mvc:interceptor>
标签配置一个拦截器
2.HandlerInterceptor和HandlerInterceptorAdapter的区别
- HandlerInterceptor是一个接口,HandlerInterceptorAdapter是一个抽象类
- 在1.8之前HandlerInterceptor需要实现所有的方法
3.SpringMVC的执行原理
- 用户发送出请求到前端控制器DispatcherServlet。
- DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
- HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet
- DispatcherServlet调用HandlerAdapter(处理器适配器)。
- HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。
- Controller执行