我是靠谱客的博主 俊逸西装,这篇文章主要介绍springboot Interceptor拦截器设置,现在分享给大家,希望可以做个参考。

1.通过Javabean定义一个拦截器,需实现HandlerInterceptor接口并重写三个方法(在这只实现拦截前操作)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class UserInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object user = request.getSession().getAttribute("user"); if(user == null){ response.sendRedirect(request.getContextPath()+"/user/nologin"); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } }
复制代码
1
在preHandle方法中定义拦截器功能,返回true表示放行,false表示拦截(可通过response.sendRedirect(request.getContextPath()+"/user/nologin")方法重定向URL)

2.通过配置文件对拦截器进行配置(取消xml文件形式,使用配置类)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { String[] allow = {"/user/**"}; String[] noAllow = {"/user/nologin","/user/login"}; registry.addInterceptor(new UserInterceptor()).addPathPatterns(allow).excludePathPatterns(noAllow); WebMvcConfigurer.super.addInterceptors(registry); } }
复制代码
1
2
3
registry.addInterceptor()用于指定拦截器类 addPathPatterns()方法可存放String类型数组,用于指定需要拦截的URL excludePathPatterns()方法可存放String类型数组,用于指定不需要拦截的URL

3.测试控制器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Controller @RequestMapping(value = "/user") public class InterceptorController { @RequestMapping(value = "/login") @ResponseBody public String login(HttpServletRequest request){ User user = new User("zhangsan",55,66,77); request.getSession().setAttribute("user",user); return "login success"; } @RequestMapping(value = "/nologin") @ResponseBody public String nologin(){ return "login false"; } @RequestMapping(value = "/enter") @ResponseBody public String enter(){ return "enter success"; } }

ps:不需要单独进行其他配置即可自定义拦截器

最后

以上就是俊逸西装最近收集整理的关于springboot Interceptor拦截器设置的全部内容,更多相关springboot内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部