Spring中自定义拦截器怎么用
小编给大家分享一下Spring中自定义拦截器怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1、创建自定义拦截器类(UserTokenInterceptor)并实现HandlerInterceptor 接口,再重写方法,代码如下:
publicclassUserTokenInterceptorimplementsHandlerInterceptor{/***@description访问Controller之前执行*/@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{log.info("进入拦截器啦、、");returntrue;//true即可放行,false则不放行}/***@description请求访问Controller之后,渲染视图之前*/@OverridepublicvoidpostHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,ModelAndViewmodelAndView)throwsException{}/***@description请求访问Controller之后,渲染视图之后*/@OverridepublicvoidafterCompletion(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,Exceptionex)throwsException{}}
2、配置Web拦截器(WebMvcConfig)并实现Spring的WebMvcConfigurer接口
在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐)
复写addInterceptors方法,添加自己的拦截器
importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;@ConfigurationpublicclassWebMvcConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddInterceptors(InterceptorRegistryregistry){//注册拦截器registry.addInterceptor(getUserTokenInterceptor()).addPathPatterns("/index/session");//一定要加WebMvcConfigurer.super.addInterceptors(registry);}//@BeanpublicUserTokenInterceptorgetUserTokenInterceptor(){returnnewUserTokenInterceptor();}}
3、编写测试Controller
@RestController@RequestMapping("/index")publicclassIndexController{@Deprecated@GetMapping("/session")publicObjectgetSession(HttpServletRequestrequest){HttpSessionsession=request.getSession();session.setAttribute("name","lequal");session.setMaxInactiveInterval(3600);Stringname=(String)session.getAttribute("name");System.out.println("获取的名字是:"+name);returnname;}}
4、访问URL地址
如果preHandle方法中return false的话浏览器访问是看不到返回的内容的,因为被拦截住了,就相当于卡在那里了。
以上是“Spring中自定义拦截器怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。