继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

weMedia-拦截器&自定义异常

fox鑫
关注TA
已关注
手记 19
粉丝 0
获赞 1

拦截器

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容器中

http://img3.mukewang.com/61b608520001c0dc12570696.jpg

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



自定义异常

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

    http://img4.mukewang.com/61b6061a000127cd13530644.jpg

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

    http://img4.mukewang.com/61b606b70001b23912120520.jpg

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

    http://img4.mukewang.com/61b6066b000156b212990529.jpg

  4. 在拦截器中使用

    http://img2.mukewang.com/61b6071e0001a54117190751.jpg

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP