一 SpringBoot框架技术总结( 二 )


编写控制器,测试web页面跳转的全局异常处理
@RestControllerpublic class HelloController{@RequestMapping("/hello")public String hello(){int i =10/0;return "测试异常处理";}}
在浏览器输入 :8080/hello 测试,就会出现下图的错误
3.3、兼容web与ajax
上方的注解只能处理普通请求,如果我们发起无刷新的 ajax 请求,则需要另外处理
定义异常处理类
@ControllerAdvicepublic class GlobalException{@ExceptionHandler(value=http://www.kingceram.com/post/{Exception.class})public Object exceptionHandler(HttpServletRequest request,Exception e){ModelAndView modelandView = new ModelAndView();modelandView.addObject("exception",e.getMessage()); // 设置异常信息modelandView.addObject("url",request.getRequestURL()); //设置异常路径modelandView.setViewName("error"); //设置页面视图return modelAndView;}/*** 判断是否是ajax异步提交*/public static boolean isAjax(HttpServletRequest httpRequest){return (httpRequest.getHeader("X-Requested-With") != null && "XMLHttpRequest".equals(httpRequest.getHeader("X-Requested-With").toString()));}}
编写控制器
@RequestMapping("/ajaxexception")public Object ajaxexception(){int i = 10/0;return true;}
编写测试页面
在目录下创建 test.html页面,发送ajax请求到控制器
>$(function(){$.get$.get("/ajaxexception",function(data){if(!data.success){console.log("错误信息"+data.exception);console.log("错误路径"+data.url);}},"json");});
注意:在响应 ajax 形式的异常处理中,本案例仅在控制台打印输出异常信息和异常路径等,在实际开发中,需要将这些异常处理数据显示到页面中展示 。