拦截器类:
package com.example.recorddemo.interceptor;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * @author wangchao */@Componentpublic class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// handle可拿到执行方法的反射对象 。System.out.println("preHandle: MyInterceptor");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 对于RESTful 接口用处不大}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 可捕捉异常,但是springboot已经有了全局异常捕捉}}
配置拦截器:
package com.example.recorddemo.configuration;import com.example.recorddemo.interceptor.MyInterceptor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.config.annotation.InterceptorRegistration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import javax.annotation.Resource;/** * @author wangchao */@Configurationpublic class InterceptorConfiguration implements WebMvcConfigurer {@ResourceMyInterceptor myInterceptor;/*** 添加拦截器* @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).addPathPatterns("/**");}}
registry.addInterceptor()
方法会返回当前的 interceptor
,因此可直接执行 addPathPatterns()
方法
public InterceptorRegistration addInterceptor(HandlerInterceptor interceptor) {InterceptorRegistration registration = new InterceptorRegistration(interceptor);this.registrations.add(registration);return registration;}
拦截器的执行顺序类似于栈,按照如下顺序执行:
preHandle-1, preHandle-2, postHandle-2, postHandle-1, afterCompletion-2, afterCompletion-1
【SpringBoot 过滤器和拦截器】
经验总结扩展阅读
- 等离子电视和液晶电视哪个好夏普、松下和三星电视推荐
- 辛金女和己土男合么 五行契合运势互补
- 小米电视4a和4c哪个好 两者区别详解
- 奥马冰箱质量如何 海尔和奥马冰箱哪个好
- 八字合婚 戊子日柱和癸丑日柱婚姻运势上乘
- 西门子冰箱怎么样 西门子和海尔冰箱哪个好
- 属牛和属鼠的合不合 婚姻财运事业佳
- 己土男和戊土女为上等婚姻 相互吸引爱情专一
- 丁火男和什么女最配 情感深厚坚不可摧
- 乙木女和己土男婚姻幸福 利于事业发展