您的位置:首页 > 编程语言 > Java开发

SpringBoot中拦截器的使用

2020-06-29 04:26 330 查看

1.SpringMVC拦截器

SpringMVC中的拦截器(Interceptor)类似Servlet中的过滤器(Filter),在实际开发中用处很多,如:日志处理、用户登录状态拦截、安全拦截等等。SpringBoot内部集成的是SpringMVC控制框架,所以使用方式和在SpringMVC中没什么区别,主要配置方式有所不同。

2.具体实现

1.创建SpringBoot项目,添加一个web依赖

[code]<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.定义拦截器,创建MyInterceptor类实现HandlerInterceptor接口并实行3个方法,并将该类注册为一个bean交给Spring来管理。

[code]//自定义拦截器
@Component
public class MyInterceptor implements HandlerInterceptor {
@Override
//被拦截的请求执行之前执行
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("执行了preHandle");
return true;
}
@Override
//被拦截的请求执行之中执行
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("执行了postHandle");
}
@Override
//被拦截的请求执行之后执行
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("执行了afterCompletion");
}
}

3.创建WebMVCConfig类,实现WebMvcConfigurer接口,重写addInterceptors方法,此类相当于SpringMVC.xml配置文件。

[code]@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
@Autowired
MyInterceptor myInterceptor;//自定义的拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor)
.addPathPatterns("/**")//需要拦截的路径
.excludePathPatterns("/doLogin");//除去的路径

}
}

4.创建LoginController类,进行测试 

[code]@RestController
public class LoginController {
@GetMapping("/doLogin")
public String login(){
return "登录成功";
}
@GetMapping("/hello")
public String hello(){
return "hello";
}
}

5.测试结果

访问doLogin路径将不会被拦截,访问其它请求会被拦截。 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: