return error怎么定义_CRM登录认证拦截器全局异常(定义全局异常)

56b918bf5510e4db3190bd3ec97af444.png

二 定义全局异常

1 需求分析

定义全局异常说明明确,能够快速定位问题,统一代码业务性问题处理规范,方便错误数据的封装,后台数据机构的统一(统一异常拦截体现);

2 编写GlobalExceptionResolver

@Component
        public class GlobalExceptionResolver implements HandlerExceptionResolver {
            /**
             * 全局异常
             * @param httpServletRequest
             * @param httpServletResponse
             * @param handler
             * @param ex
             * @return
             */
 
            public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception ex) {
                ModelAndView modelAndView = createDefaultModelAndView(httpServletRequest);
                /**
                 * view异常
                 * json异常
                 */
                if(handler instanceof  HandlerMethod){
                    if(ex instanceof  ParamsException){
                        ParamsException exception=(ParamsException)ex;
                        /**q
                         * 处理用户未登录
                         */
                        if(exception.getCode().equals(CrmConstant.OPS_FAILED_DODE) ){
                            modelAndView.addObject("msg","用户未登录");
                            modelAndView.addObject("code",CrmConstant.LOGIN_FAILED_DODE);
                            return modelAndView;
                        }

                    }
                    HandlerMethod handlerMethod=(HandlerMethod)handler;
                    Method method = handlerMethod.getMethod();
                    ResponseBody responseBody = method.getAnnotation(ResponseBody.class);
                    if(responseBody!=null){
                        MessageModel messageModel = new MessageModel();
                        messageModel.setMsg(CrmConstant.OPS_FAILED_MSG);
                        messageModel.setCode(CrmConstant.LOGIN_FAILED_DODE);

                        if(ex instanceof ParamsException){
                            ParamsException exception = (ParamsException)ex;
                            messageModel.setMsg(exception.getMsg());
                            messageModel.setCode(exception.getCode());
                        }
                        httpServletResponse.setContentType("application/json;charset=uft-8");
                        httpServletResponse.setCharacterEncoding("utf-8");
                        PrintWriter printWriter = null;
                        try {
                            printWriter = httpServletResponse.getWriter();

                        } catch (IOException e) {
                            e.printStackTrace();
                        }finally {
                            if(printWriter!=null){
                                printWriter.write(JSON.toJSONString(messageModel));
                                printWriter.flush();
                                printWriter.close();
                            }
                        }
                        return  null;
                    }else {
                        if(ex instanceof ParamsException) {
                            ParamsException exception=(ParamsException)ex;
                            modelAndView.addObject("msg", exception.getMsg());
                            modelAndView.addObject("code", exception.getCode());
                            return modelAndView;
                        }
                    }


                }

                return modelAndView;
            }

            private ModelAndView createDefaultModelAndView(HttpServletRequest httpServletRequest){
                ModelAndView modelAndView = new ModelAndView();
                modelAndView.setViewName("error");
                modelAndView.addObject("code",CrmConstant.OPS_FAILED_DODE);
                modelAndView.addObject("msg", CrmConstant.OPS_FAILED_MSG);
                modelAndView.addObject("uri",httpServletRequest.getRequestURI());
                modelAndView.addObject("ctx",httpServletRequest.getContextPath());
                return modelAndView;
            }

        }     	

3 前台error

<#include "common.ftl" > 
        <script> 
            $(function () { 
                alert("${msg}") 
 
                if("${uri}"=="/main"){ 
                    window.location.href=ctx + "/index"; 
                }else{ 
                    window.parent.location.href = ctx + "/index"; 
                } 
            }) 
        </script>     

喜欢就关注嗨码歌吧!

每天都有新的技术与你分享哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值