SpringBoot之注册拦截器

Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。

在springBoot中注册拦截器更加方便,如下:

1. 自定义一个拦截器类
实现HandlerInterceptor 接口,重写 preHandle、postHandle、 afterCompletion 方法。

public class MyInterceptor implements HandlerInterceptor{
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// TODO Auto-generated method stub
		
		System.out.println("preHandle>>>>>>>>>>>>>>>");
		// 返回值必须为true才生效
		return true;
	}
	
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("postHandle>>>>>>>>>>>>>>>>");
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
		System.out.println("afterCompletion>>>>>>>>>>>>>>>>>>>>>");
	}



}

拦截器中的方法执行流程为 preHandle → controlle → postHandle → afterCompletion

  1. preHandle 方法:会在控制器(controller)前执行,返回值表示是否中断后续执行,当返回值为true时表示继续向下执行,为false时会中断后续所有操作;
  2. postHandle 方法:会在控制器方法调用之后,且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改;
  3. afterCompletion 方法:会在整个请求完成,即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作。

2.配置拦截器
自定义配置类进行拦截器的配置,实现WebMvcConfigurer 接口,重写addInterceptors方法,其中addPathPatterns 表示拦截路劲,excludePathPatterns表示排除路劲,如下:

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer{
	/**
	 * 拦截器配置
	 */
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// TODO Auto-generated method stub
		registry.addInterceptor(new MyInterceptor())
		// 拦截路劲
		.addPathPatterns("/**")
		// 排除路径
		.excludePathPatterns("/excludeInterceptor");
	}
	
}

测试类:

@RestController
public class InterceptorController {

	@GetMapping("/testInterceptor")
	public String testInterceptor() {
		
		return "testInterceptor";
	}
	
	@GetMapping("/excludeInterceptor")
	public String excludeInterceptor() {
		
		return "excludeInterceptor";
	}
}

访问:当访问 /testInterceptor 时 拦截器进行拦截,在这里插入图片描述
访问 /excludeInterceptor 拦截器不进行拦截!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值