自定义 HandlerInterceptor 使用注意事项

目录

HandlerInterceptor 是什么

HandlerInterceptor 使用

HandlerInterceptor 使用注意事项


HandlerInterceptor 是什么

hander 的拦截器,用来拦截handler 的执行。执行时机:handdlerAdaptor 调用 handler 后,DispatcherServlet 返回视图前。

可以用来做权限拦截,返回后的统一处理等,比如添加统一的返回数据(用户登录后的信息)。

HandlerInterceptor 使用

自定义 Interceptor

@Component
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            //response.setContentType("text/html;charset=UTF-8");
            response.sendRedirect("http://www.baidu.com");
    }
}

注册到 web 环境中

@Configuration
public class WebConfig  implements WebMvcConfigurer {
    @Autowired
    private MyInterceptor myInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(myInterceptor).addPathPatterns("/**");
    }

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {

    }
}

HandlerInterceptor 使用注意事项

postHandle 后处理是在 dispatcherServlet 调用 handlerAdaptor 处理请求并返回后才执行的,所以针对 @RestController 或者 @ResponseBody 的接口,postHandle 如果操作了 response 对象会报下面的错误:

如果你确实需要后处理 json 类型的 response ,可以借助于 ResponseBodyAdvice 来实现 ,可以参考上篇文章:《公司封装的 ResponseBodyAdvice 有问题,很严重》


如果觉得还不错的话,关注、分享、在看, 原创不易,且看且珍惜~

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【非典型Coder】

赏个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值