为了账号安全,请及时绑定邮箱和手机立即绑定

weMedia-拦截器&自定义异常

标签:
Java

拦截器

1.定义一个拦截器类

  1. public class PassportInterceptor implements HandlerInterceptor {
    
        @Autowired
        public RedisOperator redisOperator;
    
        public static final String MOBILE_SMSCODE="mobile:smscode";
    
        /**
         * 拦截请求,进入controller前进行拦截
         *
         * @param request
         * @param response
         * @param handler
         * @return
         * @throws Exception
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    
            //获取用户IP
            String userIP = IPUtil.getRequestIp(request);
    
            //获取key
            boolean keyIsExist = redisOperator.keyIsExist(MOBILE_SMSCODE + ":" + userIP);
    
            if (keyIsExist){
                System.out.println("短信发送频率过快!");
                GraceExecption.display(ResponseStatusEnum.SMS_NEED_WAIT_ERROR);
                return false;
            }
    
            /**
             * true:放行
             * false:拦截
             */
            return true;
        }
    
        /**
         * 请求访问controller之后,渲染视图之前
         *
         * @param request
         * @param response
         * @param handler
         * @param modelAndView
         * @throws Exception
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        }
    
        /**
         * 请求访问controller之后,渲染视图之后
         *
         * @param request
         * @param response
         * @param handler
         * @param ex
         * @throws Exception
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        }
    }

2.将拦截器注册到spring容器中

https://img1.sycdn.imooc.com//61b608520001c0dc12570696.jpg

拦截器配置类中,先将拦截器类注册到bean,然后用addInterceptors配置拦截器,配置需要拦截的路由



自定义异常

  1. 先定义一个自定义异常(继承RuntimeExecption)

    https://img1.sycdn.imooc.com//61b6061a000127cd13530644.jpg

  2. 定义一个自定义异常的封装类

    https://img1.sycdn.imooc.com//61b606b70001b23912120520.jpg

  3. 定义自定义异常捕捉管理器

    https://img1.sycdn.imooc.com//61b6066b000156b212990529.jpg

  4. 在拦截器中使用

    https://img1.sycdn.imooc.com//61b6071e0001a54117190751.jpg

⭐当拦截器中被拦截下来会抛出自定义异常

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消