springboot拦截器的使用

springboot拦截器的使用

使用场景

处理所有请求的共性问题,例如:

  • 解决乱码问题
  • 解决权限验证问题

如何使用

  1. 编写拦截器类TestInterceptor 实现HandlerInterceptor 接口并实现相应方法
// 实现HandlerInterceptor 接口并实现方法
@Component
public class TestInterceptor implements HandlerInterceptor {
	// 在请求执行前执行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    	// 设置编码格式为utf-8
        request.setCharacterEncoding("utf-8");
        System.out.println("preHandle执行");
        return true;
    }
    
	// 在请求执行后执行(preHandle必须返回true才会执行到这里)
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle执行");
    }
    
	// 视图渲染完成后执行(preHandle必须返回true才会执行到这里),通常用来清理资源
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion执行");
    }
}
  1. 实现WebMvcConfigurer 接口,将拦截器注册进spring容器并定义拦截路径(当注册多个拦截器时,先注册的会先执行)
@Component
public class WebMvcConfig implements WebMvcConfigurer {
    @Autowired
    private TestInterceptor testInterceptor;

    // 关于拦截路径这里	例如路径:http://localhost:8080/request/test
    // 拦截路径为/** =》拦截所有的请求
    // 拦截路径为/**/request =》拦截所有尾为request的请求
    // 拦截路径为/request/** =》拦截request下的所有请求
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(testInterceptor).addPathPatterns("/**");
    }
}

关于拦截路径问题可参考:https://blog.csdn.net/zhou920786312/article/details/81026381

总结

拦截器主要用来处理web请求中的共性问题,
共性问题在拦截器中解决,可以减少重复代码,便于维护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值